前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker大件Consul集群

docker大件Consul集群

作者头像
Ant丶
发布2023-08-16 08:22:41
2060
发布2023-08-16 08:22:41
举报
文章被收录于专栏:cayzlhcayzlh

docker大件Consul集群

由于开发需要,需要在本地运行一个Consul环境,由于电脑上已经有Docker环境了,于是就直接在Docker里面搭一套Consul集群。 但是在使用过城中遇到一点小坑。

Docker搭建Consul集群

集群要求要有3Server,将容器8500端口映射到主机8900端口,同时开启管理界面

搭建集群

1. 启动第1个Server节点

代码语言:javascript
复制
docker run -d --name=consul1 -p 8500:8500 -e CONSUL_BIND_INTERFACE=eth0 consul:1.6.2 agent --server=true --bootstrap-expect=3 --client=0.0.0.0 -ui

2. 获取consul1的ip地址

代码语言:javascript
复制
JOIN_IP="$(docker inspect -f '{{.NetworkSettings.IPAddress}}' do1_consul1)";

3. 启动第2个Server节点,并加入集群

代码语言:javascript
复制
docker run -d --name=consul2 -e CONSUL_BIND_INTERFACE=eth0 consul:1.6.2 agent --server=true --client=0.0.0.0 --join $JOIN_IP

4. 启动第3个Server节点,并加入集群

代码语言:javascript
复制
docker run -d --name=consul3 -e CONSUL_BIND_INTERFACE=eth0 consul:1.6.2 agent --server=true --client=0.0.0.0 --join $JOIN_IP

5. 启动第4个Client节点,并加入集群

代码语言:javascript
复制
docker run -d --name=consul4 -e CONSUL_BIND_INTERFACE=eth0 consul:1.6.2 agent --server=false --client=0.0.0.0 --join $JOIN_IP

浏览器访问 http://localhost:8500验证是否部署成功。

导入kv

1. 将kv.json复制到容器内

代码语言:javascript
复制
docker cp ~/Desktop/consul_kv.json consul1:/tmp

2. 导入kv.json

代码语言:javascript
复制
docker exec consul1 consul kv import @/tmp/consul_kv.json

IDEA跑服务注册到Consul

遇到的坑

consul集群跑起来之后,于是在IDEASpringCloud项目注册到部署好的Consul服务,当服务注册好之后,检查其健康状态,发现服务一直提示All node checks passing报了个小红叉❌。

解决

通过各种尝试都发解决之后,发现是因为在容器内部调用容器外(宿主机)的相应服务的时候网络不通,导致健康检查一直处于失败的状态,于是,修改SpringCloud工程的配置文件,新增配置:

代码语言:javascript
复制
spring.cloud.consul.discovery.preferIpAddress=true
spring.cloud.consul.discovery.ipAddress=docker.for.mac.host.internal

重新启动服务,各项检查都正常了。

  • 以上操作环境是macOS,未在别的环境重现和解决这个问题。
  • 容器内可以通过docker.for.mac.host.internal访问宿主机网络和端口。

文章链接

https://www.cayzlh.com/post/20230127/
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-01-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • docker大件Consul集群
    • Docker搭建Consul集群
      • 搭建集群
      • 导入kv
    • IDEA跑服务注册到Consul
      • 遇到的坑
      • 解决
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档