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 中,注意使用权限足够的账户和密码

posted @   风风羊  阅读(597)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示