搭建es集群

选择两台服务器搭建最简易集群
  • cluster01 192.168.0.132
  • cluster02 192.168.0.133

cluster01节点

编写docker-compose.yml
version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0
    container_name: es01
    environment:
      - node.name= "es01"  #集群中节点名称,唯一
      - cluster.name=es-docker-cluster    #集群名称
        #- discovery.type=single-node #启动但实例时需要打开,并关闭discovery.seed_hosts和cluster.initial_master_nodes
      - discovery.seed_hosts=192.168.0.133   #其他节点名称
      - cluster.initial_master_nodes=192.168.0.133,192.168.0.132  #可选的master节点
      - bootstrap.memory_lock=true         #锁定物理内存地址,防止es内存被交换出去,也就是避免es使用swap交换分区,频繁的交换,会导致IOPS变高
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"    #jvm堆栈大小
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /opt/clusters_test/Elasticsearch/plugins:/usr/share/elasticsearch/plugins
      - /opt/clusters_test/Elasticsearch/data:/usr/share/elasticsearch/data
      - /opt/clusters_test/Elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
      - 9200:9200
      - 9300:9300
插件

一般插件可放到docker里的/usr/share/elasticsearch/plugins下使用,做好文件映射就好

数据

将docker产生的数据映射到本地服务器上

配置文件elasticsearch.yml
cluster.name: "es-docker-cluster"  #集群名称
network.host: 0.0.0.0    
network.publish_host: 192.168.0.132  ## 改成相应的 node ip
node.ingest: true  #开启es预处理功能,因为没有引入logstash,但需要对日志进行分割

cluster02节点

编写docker-compose.yml
version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
        #- discovery.type=single-node #启动但实例时需要打开,并关闭discovery.seed_hosts和cluster.initial_master_nodes
      - discovery.seed_hosts=192.168.0.132
      - cluster.initial_master_nodes=192.168.0.133,192.168.0.132
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms1G -Xmx1G" #xms与xmx需要一致
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /opt/clusters_test/Elasticsearch/plugins:/usr/share/elasticsearch/plugins
      - /opt/clusters_test/Elasticsearch/data:/usr/share/elasticsearch/data
      - /opt/clusters_test/Elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
      - 9200:9200
      - 9300:9300
配置文件elasticsearch.yml
#es02
cluster.name: "es-docker-cluster"
network.host: 0.0.0.0
network.publish_host: 192.168.0.133  ## 改成相应的 node ip
node.ingest: true

注意

文件挂载权限问题

由于es在docker运行时需要用到elasticsearch用户去操作数据和日志目录,可能会遇到权限不够的问题需要提前给路径加更多的权限,或创建好elasticsearch用户,并修改文件夹的属主或属组

系统配置设置
  1. 虚拟内存配置
    elasticsearch使用mmapfs的方式来存储索引,通常系统默认的mmap数值较小,容易产生内存不足的错误,处理方法:
    需要在本地服务配置
    先切换到root用户,执行vi /etc/sysctl.conf
    添加配置vm.max_map_count=655360
    执行sysctl -p使得配置生效
  2. 进程数和打开文件句柄数在docker-compose.yml中有设置

以上cluster02与cluster01的两个文件内容略有差别。
之后分别在两台不同的服务器上使用docker-compose up命令启动,如有报错还需查看日志进行处理

验证查看es集群情况:

localhost根据实际情况改变

curl -X GET "localhost:9200/_cat/nodes?v&pretty" 

你可能感兴趣的:(搭建es集群)