部署Elasticsearch
编译Elasticsearch并解压
- 参考《Elasticsearch 移植指南(CentOS&openEuler)》编译出Elasticsearch软件部署包。
- 将Elasticsearch软件部署包放置于agent1节点的“/usr/local”目录,并解压。
1 2
mv elasticsearch-6.7.1.tar.gz /usr/local tar -zxvf elasticsearch-6.7.1.tar.gz
若Elasticsearch软件部署包名称不是elasticsearch-6.7.1.tar.gz,请根据实际情况修改命令。
- 建立软链接,便于后期版本更换。
1
ln -s elasticsearch-6.7.1 elasticsearch
若Elasticsearch软件目录名称不是“elasticsearch-6.7.1”,请根据实际情况修改命令。
添加Elasticsearch到环境变量
- 编辑“/etc/profile”文件。
1
vi /etc/profile
- 按“i”进入编辑模式,在文件底部添加环境变量。
1 2
export ES_HOME=/usr/local/elasticsearch export PATH=$ES_HOME/bin:$PATH
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 环境变量生效。
1
source /etc/profile
拷贝配置目录
进入目录
,拷贝 目录到ESMaster和ESNode1实例对应的配置目录。1 2 3 | cd /usr/local/elasticsearch cp -r config config0 cp -r config config1 |

- config0:ESMaster实例对应配置目录。
- config1:ESNode1实例对应配置目录。
修改Elasticsearch配置文件

Elasticsearch所有的配置文件都在“$ES_HOME/config{0,1}”目录下。
- 修改“config0/elasticsearch.yml”文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
cluster.name: my-application # 集群名,可变 node.name: node-{ip}-9200 # 实例名,需保证同集群内实例名不同 path.data: /data/data1/elastic,/data/data2/elastic,/data/data3/elastic,/data/data4/elastic,/data/data5/elastic,/data/data6 # ESMaster实例的数据目录 path.logs: /var/log/elastic-9200 # ESMaster实例的日志目录 bootstrap.memory_lock: false network.host: $agent1 # 可填agent1节点的IP地址 http.port: 9200 # ESMaster实例端口号 transport.tcp.port: 9300 discovery.zen.ping.unicast.hosts: ["agent1:9300","agent1:9301","agent2:9300","agent2:9301", "agent3:9300","agent3:9301"] discovery.zen.minimum_master_nodes: 1 node.max_local_storage_nodes: 5 node.master: true node.data: true xpack.ml.enabled: false
- 修改“config1/elasticsearch.yml”文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
cluster.name: my-application # 集群名,可变 node.name: node-{ip}-9201 # 实例名,需保证同集群内实例名不同 path.data: /data/data7/elastic,/data/data8/elastic,/data/data9/elastic,/data/data10/elastic,/data/data11/elastic,/data/data12/elastic # ESMaster实例的数据目录 path.logs: /var/log/elastic-9201 # ESMaster实例的日志目录 bootstrap.memory_lock: false network.host: agent1 # 可填agent1节点的IP地址 http.port: 9201 # ESMaster实例端口号 transport.tcp.port: 9301 discovery.zen.ping.unicast.hosts: ["agent1:9300","agent1:9301","agent2:9300","agent2:9301", "agent3:9300","agent3:9301"] discovery.zen.minimum_master_nodes: 1 node.max_local_storage_nodes: 5 node.master: true node.data: true xpack.ml.enabled: false
- 修改“config{0,1}/jvm.options”文件,ESMaster实例内存不需要太大,根据实际情况而定。
1 2
-Xms31g -Xmx31g
- 修改“bin/elasticsearch-env”文件,在脚本的开头增加以下配置。
1 2
export JAVA_HOME=/usr/local/jdk8u252-b09 export PATH=${JAVA_HOME}/bin:${PATH}
同步配置到其它节点
- 同步配置。
- 拷贝elasticsearch-6.7.1到agent2、3的“/usr/local”。
1 2
scp -r /usr/local/elasticsearch-6.7.1 root@agent2:/usr/local scp -r /usr/local/elasticsearch-6.7.1 root@agent3:/usr/local
- 登录到agent2、3节点,为elasticsearch-6.7.1建立软链接。
1 2
cd /usr/local ln -s elasticsearch-6.7.1 elasticsearch
- 拷贝elasticsearch-6.7.1到agent2、3的“/usr/local”。
- 创建数据和日志目录。
- 在agent1~3上创建ESMaster的数据目录。
1
mkdir -p /usr/local/elasticsearch/esmaster
- 在agent1~3上创建ESNode1的数据目录。
1
mkdir -p /data/data{1,2,3,4,5,6,7,8,9,10,11,12}/elastic
- 在agent1~3上创建ESMaster、ESNode1的日志目录。
1
mkdir -p /var/log/elastic-{9200,9201}
- 在agent1~3上创建ESMaster的数据目录。
- 修改节点相关参数。
- 登录agent2,修改“config0/elasticsearch.yml”。
1 2
node.name: node-{ip}-9200 # 实例名,需保证同集群内实例名不同 network.host: agent2# 可填agent2节点的IP地址
- 修改“config1/elasticsearch.yml”。
1 2
node.name: node-{ip}-9201 # 实例名,需保证同集群内实例名不同 network.host: agent2# 可填agent2节点的IP地址
- 登录agent3,修改“config0/elasticsearch.yml”。
1 2
node.name: node-{ip}-9200 # 实例名,需保证同集群内实例名不同 network.host: agent3# 可填agent3节点的IP地址
- 修改“config1/elasticsearch.yml”。
1 2
node.name: node-{ip}-9201 # 实例名,需保证同集群内实例名不同 network.host: agent3# 可填agent3节点的IP地址
- 登录agent2,修改“config0/elasticsearch.yml”。
启动和停止
- 创建elasticsearch用户。
- 登录agent1~3,创建elasticsearch用户,该用户默认不允许以root用户启动。
1
useradd elasticsearch
- 修改elasticsearch相关目录所有者。
1 2 3
chown -R elasticsearch:elasticsearch /usr/local/elasticsearch chown -R elasticsearch:elasticsearch /data/data{1,2,3,4,5,6,7,8,9,10,11,12}/elastic chown -R elasticsearch:elasticsearch /var/log/elastic-{9200,9201}
- 登录agent1~3,创建elasticsearch用户,该用户默认不允许以root用户启动。
- 登录agent1~3,修改“/etc/security/limits.conf”。
1 2 3 4
elasticsearch soft nofile 190000 elasticsearch hard nofile 190000 elasticsearch soft nproc 190000 elasticsearch hard nproc 190000
- 登录agent1~3,在${ES_HOME}目录通过elasticsearch用户启动Elasticsearch集群。
1 2 3
sysctl -w vm.max_map_count=655360 sudo -u elasticsearch ES_PATH_CONF=/usr/local/elasticsearch/config0/ bin/elasticsearch -p /usr/local/elasticsearch/es-{ip}-9200.pid -d sudo -u elasticsearch ES_PATH_CONF=/usr/local/elasticsearch/config1/ bin/elasticsearch -p /usr/local/elasticsearch/es-{ip}-9201.pid -d
- 如果碰到权限不足问题,可以加上权限。
1 2
chmod -R 777 /usr/local/elasticsearch chmod -R 777 /data/data{1,2,3,4,5,6,7,8,9,10,11,12}/elastic
- 查看Elasticsearch启动状态。
1
ps aux | grep Elasticsearch
- 如果碰到权限不足问题,可以加上权限。
- 终止Elasticsearch进程,停止服务,停止Elasticsearch集群。
1
kill -9 $(ps aux | grep Elasticsearch | grep -v 'grep --color=auto Elasticsearch' | awk '{print $2}')