【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看一下节点数量

加入成功

相关推荐
数据库学啊6 分钟前
大数据场景下时序数据库选型指南:TDengine为什么凭借领先的技术和实践脱颖而出?
大数据·数据库·时序数据库·tdengine
Mr_sun.2 小时前
Day08——ElasticSearch-基础
大数据·elasticsearch·jenkins
Elastic 中国社区官方博客2 小时前
在 Elasticsearch 中实现带可观测性的 agentic 搜索以自动调优相关性
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索
黄黄黄黄黄莹2 小时前
ElasticSearch安装相关插件
elasticsearch
Blossom.1182 小时前
RLHF的“炼狱“突围:从PPO到DPO的工业级对齐实战
大数据·人工智能·分布式·python·算法·机器学习·边缘计算
@小红花3 小时前
从零到精通 Hadoop 的系统学习文档
大数据·hadoop·学习
Dandelion____z3 小时前
AI 驱动业务的致命风险:如何用架构设计守住安全底线?
java·大数据·人工智能·spring boot·aigc·jboltai
TDengine (老段)4 小时前
TDengine 转化函数 TO_CHAR 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
zhou_gai5 小时前
供应链计划 - 物料分类
大数据·分类·制造
Elasticsearch6 小时前
开始使用 Elastic Agent Builder 和 Microsoft Agent Framework
elasticsearch