1. 前言
本次测试ElasticSearch集群搭建采用 3 台CentOS7虚拟机,具体详情如下:
集群配置表
2. 安装JDK
到Oracle官网下载最新的
jdk8版本,下载完成后,使用如下命令解压到/usr/local目录下:tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/local/
打开
/etc/profile文件vim /etc/profile
在最后添加如下环境变量
export JAVA_HOME=/usr/local/jdk1.8.0_221export CLASSPATH=.:$JAVA_HOME/libexport PATH=$JAVA_HOME/bin:$PATH
使用
source /etc/profile命令使环境变量生效,用java -version验证是否安装配置成功
注:在 3 台虚拟机上都需要按照上述步骤安装配置 JDK 环境
3. 服务器环境配置
3.1 设置服务器的最大文件数
编辑
/etc/security/limits.conf文件vim /etc/security/limits.conf
在文件最后添加如下配置 ```bash
- soft nofile 655350
- hard nofile 655350
- soft nproc 655350
- hard nproc 655350 ```
-
3.2 设置服务器打开的最大进程数
编辑
/etc/security/limits.d/20-nproc.conf文件vim /etc/security/limits.d/20-nproc.conf
在文件最后添加如下配置 ```bash
- soft nproc 4096 root soft nproc unlimited ```
-
3.3 设置 nmap 数量对虚拟机内存的支持
编辑
/etc/sysctl.conf文件vim /etc/sysctl.conf
在文件最后添加如下配置
vm.max_map_count=262144
退出时使用
wq保存
修改上面 3 项服务器配置完成之后,需要重启服务器
注:在 3 台虚拟机上都需要按照上述步骤配置服务器
4. 安装并配置 ElasticSearch
由于
elasticSearch默认是不以root用户运行的,因此需要创建一个新用户来运行elasticSearch,执行下面命令创建新用户:useradd elasticpasswd elastic
切换至
elastic用户home目录下,下载elasticSearch安装包,如果下载地址错误,可以到官网下载su - elasticcd ~wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.11.tar.gz
解压安装包
tar -zxvf elasticsearch-5.6.11.tar.gz
修改
elasticSerach配置文件cd elasticsearch-5.6.11/configvim elasticsearch.yml
以上步骤在 3 台服务器下都进行操作
在
es-node1服务器下修改elasticsearch.yml文件如下:cluster.name: es-cluster #集群的名称(每个节点的cluster.name的配置应保持一致)node.name: es-node1 #节点的名称(每个节点的名称原则上不同)path.data: /home/elastic/data # 数据存储目录path.logs: /home/elastic/logs # 日志存储目录bootstrap.memory_lock: falsebootstrap.system_call_filter: falsenetwork.host: 0.0.0.0 #局域网ip(或者0.0.0.0),如果你的机器上安装了docker之类的,会出现0.0.0.0被docker占用,那么这个节点就不会被集群发现,因为集群默认是根据0.0.0.0来发现节点,此时就修改此处为局域网的ip)http.port: 9200 #(默认是9200,建议修改)discovery.zen.ping.unicast.hosts: ["192.168.110.129", "192.168.110.130"] #此处是为了集群互相发现节点,此处hosts列表配置除了本节点的ip的其他ip,其他节点的此处配置也是同样操作
在
es-node2服务器修改elasticsearch.yml文件如下:cluster.name: es-clusternode.name: es-node2path.data: /home/elastic/datapath.logs: /home/elastic/logsbootstrap.memory_lock: falsebootstrap.system_call_filter: falsenetwork.host: 0.0.0.0http.port: 9200discovery.zen.ping.unicast.hosts: ["192.168.110.128", "192.168.110.130"]
在
es-node3服务器修改elasticsearch.yml文件如下:cluster.name: es-clusternode.name: es-node3path.data: /home/elastic/datapath.logs: /home/elastic/logsbootstrap.memory_lock: falsebootstrap.system_call_filter: falsenetwork.host: 0.0.0.0http.port: 9200discovery.zen.ping.unicast.hosts: ["192.168.110.128", "192.168.110.129"]
分别在 3 台服务器下创建依赖的文件夹并授予权限
mkdir /home/elastic/datamkdir /home/elastic/logssu - root # 切换到 root 用户下授予权限chown -R elastic /home/elasticchown -R elastic /home/elastic/datachown -R elastic /home/elastic/logssu - elastic # 再次回到 elastic 用户下
所有配置文件修改完成之后,分别在 3 台服务器下使用如下命令启动
elasticSearchcd /home/elastic/elasticsearch-5.6.9/bin./elasticsearch -d
5. 验证集群状态
验证集群节点数,其中
master代表该节点为主节点curl http://192.168.110.128:9200/_cat/nodes?v# 输出如下ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name192.168.110.128 17 93 10 0.95 1.48 2.97 mdi * es-node1192.168.110.129 15 94 30 1.30 2.63 3.70 mdi - es-node3
验证集群健康状态,
status为green表示正常curl http://192.168.110.128:9200/_cat/health?v# 输出如下epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent1570528510 17:55:10 es-cluster green 2 2 20 10 0 0 0 0 - 100.0
-
6. 参考
- Elasticsearch5.6.9部署说明(部署集群)
