elasticsearch(三)集群配置

搭建容器es集群

可参考的官网配置:

version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.2.1
    container_name: es01
    environment:
      - node.name=es01
      - discovery.seed_hosts=es02
      - cluster.initial_master_nodes=es01,es02
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - esnet
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.2.1
    container_name: es02
    environment:
      - node.name=es02
      - discovery.seed_hosts=es01
      - cluster.initial_master_nodes=es01,es02
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata02:/usr/share/elasticsearch/data
    networks:
      - esnet

volumes:
  esdata01:
    driver: local
  esdata02:
    driver: local

networks:
  esnet:
View Code

集群节点发现配置

7.x以后使用参数 

discovery.seed_hosts:

    - hostname1

    - hostname2

这个参数如果是使用docker容器的话,就配置成容器名,或者docker-compose的服务名。

参数表示能够被找到的可以配置成master的节点。

使用docker-compose配置es集群的时候,注意区分compose 文件中的service name 和 container name,这两个参数也要和es配置中的 node.name区别。

如果一个es节点中配置了密码参数如下:

xpack.security.enable: true

xpack.security.transport.ssl.enable: true

就会导致集群发现不了另一个节点。

集群用户密码配置

启用了x-pack模块,那么集群中的各节点之间通讯就必须安全认证。为了解决节点间通讯的认证问,我们需要制作证书。

不然直接生成密码的话, 会报Cause: Cluster state has not been recovered yet, cannot write to the [null]index

elasticsearch-certutil  cert

用于生成elastic-certificates.p12 文件,

ps: 也有博客说要先生成证书elasticsearch-certutil ca , 我这边只生成elastic-certificates.p12。

elastic-certificates.p12文件放到config下面,同时传输到集群各节点config下面。

2、elasticsearch.yml设置

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

重启ES

Elasticsearch 有两个级别的通信,传输通信和 http 通信。 传输协议用于 Elasticsearch 节点之间的内部通信,http 协议用于客户端到 Elasticsearch 集群的通信。
个人认为上面只设置了内部传输协议直接的证书,所以只用cert生成 ,没有ca生成。
elasticsearch.yml设置里面也只设置了 xpack.security.transport.ssl, 没有设置xpack.security.http.ssl...

3,开始设置密码:

进入一个节点中,使用 elasticsearch-setup-passwords 或或者 elasticsearch-users 创建密码。

再加入elasticsearch.yml设置

xpack.security.enabled: true

再把密码配置到kibana 中,注意使用权限足够的账户和密码

原文地址:https://www.cnblogs.com/fengfengyang/p/15744936.html