美文网首页
搭建es集群

搭建es集群

作者: 看他好搞笑 | 来源:发表于2020-08-05 15:19 被阅读0次
    选择两台服务器搭建最简易集群
    • 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集群

          本文链接:https://www.haomeiwen.com/subject/ntkikktx.html