鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

部署Elasticsearch

编译Elasticsearch并解压

  1. 参考《Elasticsearch 移植指南(CentOS&openEuler)》编译出Elasticsearch软件部署包
  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实例对应的配置目录。

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}”目录下。

  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. 同步配置。
    1. 拷贝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
      
    2. 登录到agent2、3节点,为elasticsearch-6.7.1建立软链接。
      1
      2
      cd /usr/local
      ln -s elasticsearch-6.7.1 elasticsearch
      
  2. 创建数据和日志目录。
    1. 在agent1~3上创建ESMaster的数据目录。
      1
      mkdir -p /usr/local/elasticsearch/esmaster
      
    2. 在agent1~3上创建ESNode1的数据目录。
      1
      mkdir -p /data/data{1,2,3,4,5,6,7,8,9,10,11,12}/elastic
      
    3. 在agent1~3上创建ESMaster、ESNode1的日志目录。
      1
      mkdir -p /var/log/elastic-{9200,9201}
      
  3. 修改节点相关参数。
    1. 登录agent2,修改“config0/elasticsearch.yml”
      1
      2
      node.name: node-{ip}-9200 # 实例名,需保证同集群内实例名不同
      network.host: agent2# 可填agent2节点的IP地址
      
    2. 修改“config1/elasticsearch.yml”
      1
      2
      node.name: node-{ip}-9201 # 实例名,需保证同集群内实例名不同
      network.host: agent2# 可填agent2节点的IP地址
      
    3. 登录agent3,修改“config0/elasticsearch.yml”
      1
      2
      node.name: node-{ip}-9200 # 实例名,需保证同集群内实例名不同
      network.host: agent3# 可填agent3节点的IP地址
      
    4. 修改“config1/elasticsearch.yml”
      1
      2
      node.name: node-{ip}-9201 # 实例名,需保证同集群内实例名不同
      network.host: agent3# 可填agent3节点的IP地址
      

启动和停止

  1. 创建elasticsearch用户。
    1. 登录agent1~3,创建elasticsearch用户,该用户默认不允许以root用户启动。
      1
      useradd elasticsearch
      
    2. 修改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~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
    
  3. 登录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
      
  4. 终止Elasticsearch进程,停止服务,停止Elasticsearch集群。
    1
    kill -9 $(ps aux | grep Elasticsearch | grep -v 'grep --color=auto Elasticsearch' | awk '{print $2}')