【ELK】ES单节点升级为集群模式--太细了!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 准备工作
    • [1. 查看现状【单节点】](#1. 查看现状【单节点】)
    • [2. 原节点改集群模式](#2. 原节点改集群模式)
    • [3. 改es配置文件,增加集群相关配置项](#3. 改es配置文件,增加集群相关配置项)
    • [4. *改docker映射的端口*](#4. 改docker映射的端口)
  • 启动新节点
    • [==5. docker-compose起一个新节点==](#==5. docker-compose起一个新节点==)
  • 验证
    • [6. 验证](#6. 验证)

前言

前面我们已经解决了ES使用过程中的安全问题,那么,

随着ES的继续使用,单节点难免会出现单点故障,毕竟是个单节点;

那么这篇文章,我们就来解决一下这个问题

没看过上集的兄弟可以先看看上集

【ELK】ES节点开启https【亲测可用】

【ELK】保姆级教程docker部署Elasticsearch+Kibana,必成


开始操作

准备工作

1. 查看现状【单节点】

docker ps

kibana:可以看出是单节点

2. 原节点改集群模式

vim dockers-compose.yml

shell 复制代码
    ······
   environment:
      # 删除这个单节点环境变量,es就会升级为集群模式
      # - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
      - ELASTIC_PASSWORD=Qianyue@2024#
      - "TZ=Asia/Shanghai"
    ······

3. 改es配置文件,增加集群相关配置项

vim elasticsearch.yml

shell 复制代码
node.name: es01
network.host: 0.0.0.0

http.cors.enabled: true
http.cors.allow-origin: "*"

# -------------- 集群相关配置 -------------------
# 集群名
cluster.name: es-cluster

# 本节点在集群中的IP(经测试docker部署需要加这个配置,不然无法发现)
network.publish_host: 192.168.56.57

# 集群通信端口(docker部署需要加这个配置,不然无法发现,docker映射端口也得改成这个)
transport.port: 19300

# 设置集群角色:数据节点+主节资格+远程连接资格
node.roles: [ data, master, remote_cluster_client ]

# 集群发现
discovery.seed_hosts:
  - 192.168.56.56:19300

# 引导集群初始化
cluster.initial_master_nodes:
  - es01
  - es02

# -------------- 集群相关配置 END -------------------

#--------------- 安全相关配置 -------------------
# 开启账号密码
xpack.security.enabled: true

# 开启浏览器https
xpack.security.http.ssl:
  enabled: true
  keystore.path: certs/http.p12

# 开启集群间加密通信
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate 
xpack.security.transport.ssl.client_authentication: required
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

#--------------- 安全相关配置 END -------------------

4. 改docker映射的端口

vim dockers-compose.yml

shell 复制代码
······
    ports:
      - "19200:9200"
      # 节点上配置了集群通信端口,要映射出来
      - "19300:19300"
······

这个时候就可以重启了,重启后登录到kibana看下

没有问题,kibana可以正常开起来,进控制台查一下ES的状态

复制代码
GET /_cat/health?v&format=json

es正常运行

启动新节点

5. docker-compose起一个新节点

准备工作做完了,可以起一个新节点了!

  • docker-compose.yml

    shell 复制代码
    version: "3"
    services:
      elasticsearch: 
        restart: always
        image: elasticsearch:8.14.3
        container_name: es02
        hostname: es02
        privileged: true
        ulimits:
          memlock:
            soft: -1
            hard: -1
        environment:
          - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
          - ELASTIC_PASSWORD=Qianyue@2024#
        ports:
          - "19200:9200"
          - "19300:19300"
        volumes:
          - "./es/es02/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml" 
          - "./es/es02/config/certs:/usr/share/elasticsearch/config/certs" 
          - "./es/plugins:/usr/share/elasticsearch/plugins:rw"
          - "./es/es02/data:/usr/share/elasticsearch/data:rw"
          - "./es/es02/logs:/usr/share/elasticsearch/logs:rw"
  • elasticsearch.yml

    节点名,集群IP,通信端口填写相应的信息

    shell 复制代码
    node.name: es02
    network.host: 0.0.0.0
    
    # 开启跨域
    http.cors.enabled: true
    # 表示支持所有域名
    http.cors.allow-origin: "*"
    
    # -------------- 集群相关配置 -------------------
    
    # 集群名
    cluster.name: es-cluster
    
    # 集群中的IP
    network.publish_host: 192.168.56.56
    # 集群通信端口
    transport.port: 19300
    
    # 设置集群角色:数据节点+主节资格+远程连接资格
    node.roles: [ data, master, remote_cluster_client ]
    
    # 集群发现
    discovery.seed_hosts:
      - 192.168.56.57:19300
    
    # 引导集群初始化
    cluster.initial_master_nodes:
      - es01
      - es02
    
    # -------------- 集群相关配置 END -------------------
    
    
    #--------------- 安全相关配置 -------------------
    
    # 开启账号密码
    xpack.security.enabled: true
    
    # 开启浏览器https
    #xpack.security.http.ssl:
    #  enabled: true
    #  keystore.path: certs/http.p12
    
    # 开启集群间加密通信
    xpack.security.transport.ssl.enabled: true
    xpack.security.transport.ssl.verification_mode: certificate
    xpack.security.transport.ssl.client_authentication: required
    xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
    xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
    
    #--------------- 安全相关配置 END -------------------

docker-compose up -d 启动节点

验证

6. 验证

ES通过发现机制形成集群,前文我们已经在yml文件中配置好了各种发现参数,那么新节点启动后,就会自动与原节点形成集群:
docker ps

节点正常启动,登kibana看一下节点数量

加入成功

相关推荐
青岛前景互联信息技术有限公司7 小时前
OpenClaw 重构智慧消防:AI时代的平台融合实践
大数据·人工智能
梦梦代码精7 小时前
BuildingAI 上部署自定义工作流智能体:5 个实用技巧
大数据·人工智能·算法·开源软件
极客老王说Agent7 小时前
2026智造前瞻:实在Agent生产排期智能助理核心功能与使用方法详解
大数据·人工智能·ai·chatgpt
数智化精益手记局9 小时前
什么是设备维护管理?设备维护管理包含哪些内容?
大数据·网络·人工智能·安全·信息可视化
AllData公司负责人9 小时前
通过Postgresql同步到Doris,全视角演示AllData数据中台核心功能效果,涵盖:数据入湖仓,数据同步,数据处理,数据服务,BI可视化驾驶舱
java·大数据·数据库·数据仓库·人工智能·python·postgresql
桃花键神10 小时前
Bright Data Web Scraping指南 2026: 使用 MCP + Dify 自动采集海外社交媒体数据
大数据·前端·人工智能
程序鉴定师12 小时前
西安App开发推荐与业界认可的优秀实践
大数据·小程序
workflower13 小时前
从拿订单到看方向
大数据·人工智能·设计模式·机器人·动态规划
CableTech_SQH13 小时前
F5G 全光网,赋能智慧校园数字化建设
大数据·网络·5g·运维开发·信息与通信
goyeer13 小时前
【ITIL4】- 服务价值体系
大数据·运维·信息化·自动运维·itil