docker 搭建 es 集群

搭建 es 集群

  1. 创建一个es容器和网络
    docker create network es_cluster
    docker run --name es01 --net es_cluster -p 9200:9200 -d -m 512m --privileged docker.elastic.co/elasticsearch/elasticsearch:8.13.4
    
  2. 修改es的 elastic 用户密码
    docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic -i
    
  3. 复制容器中的 ssl 证书, 并访问(elk2024自行替换成自己设置的密码)
    docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .
    curl --cacert http_ca.crt -u elastic:elk2024 https://localhost:9200
    
  4. 生成加入集群的 token
    docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node
    
  5. 添加更多节点, ${token}自行替换
    docker run \
    -e ENROLLMENT_TOKEN=${token} \
    --name es02 \
    --net es_cluster \
    -p 9201:9200 \
    --privileged \
    -m 512M \
    -d docker.elastic.co/elasticsearch/elasticsearch:8.13.4
    
  6. 查看集群节点
    curl --cacert http_ca.crt -u elastic:elk2024 https://localhost:9200/_cat/nodes
    
  7. 生成kibana所需要的 token
    docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
    
  8. 创建kibana容器
    docker run --name kibana01 --net es_cluster -p 5601:5601 -d docker.elastic.co/kibana/kibana:8.13.4
    # 中文版
    docker run --name kibana01 --net es_cluster -p 5601:5601 -e I18N_LOCALE=zh-CN -d docker.elastic.co/kibana/kibana:8.13.4
    
  9. 查看日志并访问http://192.168.211.128:5601/?code=836807, 并输入kibana所需要的 token(记得关闭防火墙)

挂掉主节点, 重新加入集群

需要修改原来主节点的配置文件

docker stop es01
docker cp es01:/usr/share/elasticsearch/config/elasticsearch.yml .

# 修改文件开始
vim elasticsearch.yml
# 删除该配置
# cluster.initial_master_nodes: ["es-01"]
# 添加该配置, ip 配置信息可以查看其它 es 容器中的配置文件
discovery.seed_hosts: ["192.168.160.2:9300"]
# 修改文件结束

docker cp elasticsearch.yml es01:/usr/share/elasticsearch/config/elasticsearch.yml
docker start es01

快速添加新节点进集群脚本

  1. 创建脚本es_cluster.sh
    #!/bin/bash
    
    es_net_name="es_cluster"
    es_container_name=$1
    es_container_port=$2
    es_image="docker.elastic.co/elasticsearch/elasticsearch:8.13.4"
    
    echo "1. Generate Token ..."
    token=$(docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node)
    len=$((${#token}-1))
    
    echo "2. Remove Docker Container If Exist ..."
    if docker ps -a | grep "${es_container_name}"; then
      docker stop "${es_container_name}"
      docker rm -f "${es_container_name}"
      echo "Remove Docker Container: ${es_container_name}"
    fi
    
    echo "3. Run Docker Container ..."
    docker run \
    -e ENROLLMENT_TOKEN="${token:0:${len}}" \
    --name "${es_container_name}" \
    --net ${es_net_name} \
    -p "${es_container_port}":9200 \
    --privileged \
    -m 512M \
    -d ${es_image}
    
    echo "All Finish!"
    
  2. 使用
    # sh ./es_cluster.sh <container_name> <container_port>
    sh ./es_cluster.sh es02 9202
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值