---
title: 部署Elasticsearch
description: "1. 编译出Elasticsearch软件部署包，详细操作步骤请参见《Elasticsearch 移植指南（CentOS&openEuler）(https://www.hikunpeng.com/document/detail/zh/kunpengbds/ecosystemEnable/ELK/kunpengelk_02_0001.html)》。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengbds/ecosystemEnable/ELK/kunpengelasticsearch_04_0004.html
sourcePath: /source/zh/kunpengbds/ecosystemEnable/ELK/kunpengelasticsearch_04_0004.html
indexId: beabfac11cebd05fdd2707ad1b2a7e1ed683ff3d828d6868b807cd91eccc37ae75
---
# 部署Elasticsearch

#### 编译Elasticsearch并解压

1. 编译出Elasticsearch软件部署包，详细操作步骤请参见《Elasticsearch 移植指南（CentOS&openEuler）(https://www.hikunpeng.com/document/detail/zh/kunpengbds/ecosystemEnable/ELK/kunpengelk_02_0001.html)》。
2. 将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，请根据实际情况修改命令。

3. 建立软链接，便于后期版本更换。
  1 ln -s elasticsearch-6.7.1 elasticsearch

  若Elasticsearch软件目录名称不是“elasticsearch-6.7.1”，请根据实际情况修改命令。


#### 添加Elasticsearch到环境变量

1. 编辑“/etc/profile”文件。
  1 vi /etc/profile

2. 按“i”进入编辑模式，在文件底部添加环境变量。
  1 2 export ES_HOME=/usr/local/elasticsearch export PATH=$ES_HOME/bin:$PATH

3. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
4. 环境变量生效。
  1 source /etc/profile


#### 拷贝配置目录

进入目录“/usr/local/elasticsearch”，拷贝“config”目录到ESMaster和ESNode1实例对应的配置目录。

```
cd /usr/local/elasticsearch
cp -r config config0
cp -r config config1
```

- config0：ESMaster实例对应配置目录。
- config1：ESNode1实例对应配置目录。


#### 修改Elasticsearch配置文件

Elasticsearch所有的配置文件都在“$ES_HOME/config{0,1}”目录下。


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

2. 修改“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

3. 修改“config{0,1}/jvm.options”文件，ESMaster实例内存不需要太大，根据实际情况而定。
  1 2 -Xms31g -Xmx31g

4. 修改“bin/elasticsearch-env”文件，在脚本的开头增加以下配置。
  1 2 export JAVA_HOME=/usr/local/jdk8u252-b09 export PATH=${JAVA_HOME}/bin:${PATH}


#### 同步配置到其他节点

1. 同步配置。

  a. 拷贝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

  b. 登录到agent2、3节点，为elasticsearch-6.7.1建立软链接。
    1 2 cd /usr/local ln -s elasticsearch-6.7.1 elasticsearch

2. 创建数据和日志目录。

  a. 在agent1～agent3上创建ESMaster的数据目录。
    1 mkdir -p /usr/local/elasticsearch/esmaster

  b. 在agent1～agent3上创建ESNode1的数据目录。
    1 mkdir -p /data/data{1,2,3,4,5,6,7,8,9,10,11,12}/elastic

  c. 在agent1～agent3上创建ESMaster、ESNode1的日志目录。
    1 mkdir -p /var/log/elastic-{9200,9201}

3. 修改节点相关参数。

  a. 登录agent2，修改“config0/elasticsearch.yml”。
    1 2 node.name: node-{ip}-9200 # 实例名，需保证同集群内实例名不同 network.host: agent2# 可填agent2节点的IP地址

  b. 修改“config1/elasticsearch.yml”。
    1 2 node.name: node-{ip}-9201 # 实例名，需保证同集群内实例名不同 network.host: agent2# 可填agent2节点的IP地址

  c. 登录agent3，修改“config0/elasticsearch.yml”。
    1 2 node.name: node-{ip}-9200 # 实例名，需保证同集群内实例名不同 network.host: agent3# 可填agent3节点的IP地址

  d. 修改“config1/elasticsearch.yml”。
    1 2 node.name: node-{ip}-9201 # 实例名，需保证同集群内实例名不同 network.host: agent3# 可填agent3节点的IP地址


#### 启动和停止

1. 创建elasticsearch用户。

  a. 登录agent1～agent3，创建elasticsearch用户，该用户默认不允许以root用户启动。
    1 useradd elasticsearch

  b. 修改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}

2. 登录agent1～agent3，修改“/etc/security/limits.conf”。
  1 2 3 4 elasticsearch soft nofile 190000 elasticsearch hard nofile 190000 elasticsearch soft nproc 190000 elasticsearch hard nproc 190000

3. 登录agent1～agent3，在${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

4. 终止Elasticsearch进程，停止服务，停止Elasticsearch集群。
  1 kill -9 $(ps aux | grep Elasticsearch | grep -v 'grep --color=auto Elasticsearch' | awk '{print $2}')
