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

加入成功

相关推荐
萤火虫儿飞飞2 小时前
从基础加热到智能生态跨越:艾芬达用创新重构行业价值边界!
大数据·人工智能·重构
seanmeng20222 小时前
Apache Iceberg on AWS - 通过Firehose流式导入数据到Iceberg表
大数据
seanmeng20222 小时前
Apache Iceberg on AWS - 理解Iceberg表格式
大数据
运器1233 小时前
【一起来学AI大模型】PyTorch DataLoader 实战指南
大数据·人工智能·pytorch·python·深度学习·ai·ai编程
mit6.8245 小时前
[es自动化更新] Updatecli编排配置.yaml | dockerfilePath值文件.yml
大数据·elasticsearch·搜索引擎·自动化
Jinkxs5 小时前
Elasticsearch 简介
大数据·elasticsearch·搜索引擎
亮学长6 小时前
lodash不支持 Tree Shaking 而 lodash-es可以
大数据·前端·elasticsearch
risc1234567 小时前
Elasticsearch 线程池
java·大数据·elasticsearch
树谷-胡老师7 小时前
1965–2022年中国大陆高分辨率分部门用水数据集,包含:灌溉用水、工业制造用水、生活用水和火电冷却
大数据·数据库·arcgis
TDengine (老段)8 小时前
TDengine 集群部署及启动、扩容、缩容常见问题与解决方案
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据