Docker容器实现Elasticsearch集群部署

1.服务

        1.1 docker-20.10.22

        1.2 centos7

        1.3 Elasticsearch7.17.3

 2.服务器节点

         注:准备服务器两台作为集群节点使用,以下以节点一,节点二区分

3.服务部署

        在节点下分别执行如下操作:

 3.1 宿主机挂载容器目录

        创建目录结构:
        3.1.1 es配置挂载目录 /data/myapps/elasticsearch1/config/
        3.1.2 es数据节点挂载目录 /data/myapps/elasticsearch/data/

        3.1.3 es数据节点挂载日志 /data/myapps/elasticsearch/log/

单节点启动:discovery.type=single-node

docker run -d -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms512m -Xmx1024m" -e "discovery.type=single-node" -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro -v /data/myapps/elasticsearch/data:/usr/share/elasticsearch/data:rw -v /data/myapps/elasticsearch/log:/usr/share/elasticsearch/logs --network brt --name elasticsearch elasticsearch:7.17.3

 3.2 复制容器中配置目录到磁盘目录

cd /data/myapps/elasticsearch1/config/
docker cp elasticsearch:/usr/share/elasticsearch/config .
......
#挂载dada及log同理
#授予当前目录权限:/data/myapps/elasticsearch
chmod -R 777 elasticsearch
# 移除单节点服务
docker stop elasticsearch
docker rm -f elasticsearch

3.3 修改/data/myapps/elasticsearch/config/elasticsearch.yml配置文件

# 集群配置以es-node-2为例说明:

# 集群名称 所有节点名称一致
cluster.name: es-clusters
# 当前该节点的名称,每个节点不能重复es-node-1,es-node-2
node.name: es-node-2
# 当前该节点是不是有资格竞选主节点
node.master: true
# 当前该节点是否存储数据
node.data: true
# 设置为公开访问
network.host: 0.0.0.0
# 设置其它节点和当前节点交互的本机器的ip地址
network.publish_host: xx.xx.xx.xx1
# 设置映射端口
http.port: 9200
# 内部节点之间沟通端口
transport.tcp.port: 9300

# 支持跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"

# 配置集群的主机地址
discovery.seed_hosts: ["xx.xx.xx.xx1","xx.xx.xx.xx2"]
# 初始主节点,使用一组初始的符合主条件的节点引导集群
cluster.initial_master_nodes: ["es-node-1","es-node-2"]
# 节点等待响应的时间,默认值是30秒,增加这个值,从一定程度上会减少误判导致脑裂
discovery.zen.ping_timeout: 30s
# 配置集群最少主节点数目,通常为 (可成为主节点的主机数目 / 2) + 1
discovery.zen.minimum_master_nodes: 2
# 禁用交换内存,提升效率
bootstrap.memory_lock: false

正式启动服务

#运行命令
docker run -d -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro -v /data/myapps/elasticsearch/data:/usr/share/elasticsearch1/data:rw -v /data/myapps/elasticsearch1/log:/usr/share/elasticsearch1/logs -v /data/myapps/elasticsearch1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml --network brt --name elasticsearch1 elasticsearch1:7.17.3

3.4 查看集群是否成功

执行命令行:curl http://10.17.25.143:9200/_cat/nodes?pretty查看集群信息,出现如下信息就代表集群搭建成功了。

xx.xx.xx.xx1 12 99 3 0.03 0.05 0.06 cdfhilmrstw - es-node-1
xx.xx.xx.xx2 56 89 2 0.19 0.12 0.13 cdfhilmrstw - es-node-2

4.配置账号密码

        4.1 修改/data/myapps/elasticsearch/config/elasticsearch.yml配置文件
#开启xpack
xpack.security.enabled: true

        重新启动elasticsearch并进入容器

# 重启容器
docker restart elasticsearch
# 进入容器
docker exec -it elasticsearch bash
# 进入目录
cd /usr/share/elasticsearch/bin/
# 执行命令行,依次设置用户:elastic、apm_system、kibana_system、logstash_system、beats_system、remote_monitoring_user共6个用户。
elasticsearch-setup-passwords interactive

测试是否设置成功:curl http://ip:9200

5. 节点证书配置

        5.1 进入容器根目录并执行命令行
# 进入容器
docker exec -it elasticsearch bash
# 执行命令行 提示生成一个 elastic-stack-ca.p12 的文件,回车即可,密码为自己定义的密码
bin/elasticsearch-certutil ca
# 验证证书 依次输入上一个步骤的密码。回车(文件使用默认名),密码(建议与上一步密码相同)
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
#执行命令并输入第一步输入的密码
bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password 
#并输入第一步输入的密码
bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password 
        5.2 修改/data/myapps/elasticsearch/config/elasticsearch.yml配置文件

xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
# 证书路径
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

注:节点证书须保持一致,复制当前容器生成的证书信息到其他节点相同目录并修改对应节点elasticsearch.yml文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Kubernetes是一个开源的容器编排平台,可以帮助我们轻松部署、扩展和管理容器化应用程序。Elasticsearch是一个分布式的实时搜索和分析引擎,可以帮助我们处理大量的数据。 要在Kubernetes上持久化部署Elasticsearch8.x集群,我们可以按照以下步骤进行操作: 1. 创建Kubernetes集群:首先,我们需要在Kubernetes上创建一个集群。可以选择在本地搭建Minikube环境,或者使用云服务提供商如AWS、Azure等提供的Kubernetes集群。 2. 创建Persisten Volume(PV)和Persisten Volume Claim(PVC):PV是Kubernetes中的一种资源,用于表示集群中的持久存储。PVC则是对PV的申请,用于声明需要的存储资源。我们需要创建足够的PV和PVC来提供给Elasticsearch使用。 3. 创建Elasticsearch Pod和Service:创建一个包含Elasticsearch容器的Pod,并且将其暴露为一个Service。可以使用Kubernetes的Deployment资源来定义Elasticsearch的Pod模板,以便实现自动扩展和故障恢复。 4. 配置Elasticsearch集群:在Elasticsearch的配置文件中,我们需要为每个节点配置唯一的节点名称、集群名称和网络绑定地址。此外,还需要指定master节点和data节点的角色和数量,并配置持久化存储路径。 5. 使用StatefulSet进行扩容:Elasticsearch是一个分布式系统,可以通过添加更多的节点来扩展其容量。为了实现有状态应用的扩容,可以使用Kubernetes的StatefulSet资源,它可以为每个节点提供唯一的网络标识和稳定的存储卷。 6. 监控和日志管理:为了保证Elasticsearch集群的稳定性和可用性,可以使用Kubernetes提供的监控和日志管理工具。比如,Prometheus可以帮助我们监控集群的健康状态,Elasticsearch官方提供的Elasticsearch Logstash Kibana(ELK)可以用于集中存储和分析日志。 通过以上步骤,我们就可以在Kubernetes上成功持久化部署Elasticsearch8.x集群。这样可以有效地管理和扩展我们的分布式搜索和分析引擎,并且确保数据的持久性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值