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_221
export CLASSPATH=.:$JAVA_HOME/lib
export 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 elastic
passwd elastic
切换至
elastic
用户home
目录下,下载elasticSearch
安装包,如果下载地址错误,可以到官网下载su - elastic
cd ~
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/config
vim 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: false
bootstrap.system_call_filter: false
network.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-cluster
node.name: es-node2
path.data: /home/elastic/data
path.logs: /home/elastic/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.110.128", "192.168.110.130"]
在
es-node3
服务器修改elasticsearch.yml
文件如下:cluster.name: es-cluster
node.name: es-node3
path.data: /home/elastic/data
path.logs: /home/elastic/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.110.128", "192.168.110.129"]
分别在 3 台服务器下创建依赖的文件夹并授予权限
mkdir /home/elastic/data
mkdir /home/elastic/logs
su - root # 切换到 root 用户下授予权限
chown -R elastic /home/elastic
chown -R elastic /home/elastic/data
chown -R elastic /home/elastic/logs
su - elastic # 再次回到 elastic 用户下
所有配置文件修改完成之后,分别在 3 台服务器下使用如下命令启动
elasticSearch
cd /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 name
192.168.110.128 17 93 10 0.95 1.48 2.97 mdi * es-node1
192.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_percent
1570528510 17:55:10 es-cluster green 2 2 20 10 0 0 0 0 - 100.0
-
6. 参考
- Elasticsearch5.6.9部署说明(部署集群)