使用Docker搭建Consul集群

 2023-09-05 阅读 165 评论 0

摘要:2019独角兽企业重金招聘Python工程师标准>>> 1. 做什么事情? consul作为一个服务发现的工具在国内外都收到欢迎, 它的多数据中心是其他如zookerper工具所不能比的, 本文的目的是搭建一个准产品环境下的consul cluster 作为产品测试和教学演示, cluster所用到的服务器

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1. 做什么事情?

consul作为一个服务发现的工具在国内外都收到欢迎, 它的多数据中心是其他如zookerper工具所不能比的, 本文的目的是搭建一个准产品环境下的consul cluster 作为产品测试和教学演示, cluster所用到的服务器有Docker提供,运行14.0的Ubuntu操作系统.

cluster详细:

节点名称server/clientip
server1server agent172.17.0.2
server2server agent172.17.0.3
server3server agent172.17.0.4
client1client agent172.17.0.5

cluster简介:

集群将由4个consul节点, 其中三个是server,一个是client, 其中client节点会暴露一些端口方便我们检查集群情况和查看consul ui.

2. 材料准备

  • 一台服务器: 这台服务器已经安装了Docker, 是4个consul的宿主机, 查看集群情况也在这台服务器上执行而不是进入Docker Container内部查看因为有UI界面

  • 4个节点配置文件(.json)+4个运行脚本文件(.sh):

cat client1.json
{"data_dir": "/opt/consulclient","log_level": "INFO","node_name": "client1","server": false,"ui_dir": "/opt/consul/web","http_api_response_headers": {"Access-Control-Allow-Origin": "*"},"addresses": {"http": "0.0.0.0"},"start_join": ["172.17.0.2", "172.17.0.3", "172.17.0.4"]
}
cat runClient1.sh
consul agent -config-file=/wk/consul/client1.jsoncat server1.json
{"data_dir": "/opt/consul","log_level": "INFO","node_name": "server1","server": true,"bind_addr": "172.17.0.2","bootstrap": true,"retry_join": ["172.17.0.2", "172.17.0.3", "172.17.0.4"]
}
cat runServer1.sh
consul agent -config-file=/wk/consul/server1.json -ui-dir=/opt/consul/webcat server2.json
{"data_dir": "/opt/consul","log_level": "INFO","node_name": "server1","server": true,"bind_addr": "172.17.0.3","retry_join": ["172.17.0.2", "172.17.0.3", "172.17.0.4"]
}
cat runServer2.sh
consul agent -config-file=/wk/consul/server2.jsoncat server3.json
{"data_dir": "/opt/consul","log_level": "INFO","node_name": "server1","server": true,"bind_addr": "172.17.0.4","retry_join": ["172.17.0.2", "172.17.0.3", "172.17.0.4"]
}
cat runServer3.sh
consul agent -config-file=/wk/consul/server3.json
  • consul docker image: 准备一个安装好consul的 docker image,里面安装了consul和consul ui, 命名为consul 如下图:

consul image

注意该image中有一个wk文件夹也是需要的, 这里当成一个工作目录存放外部资源

3. 操作流程

创建共享目录供Docker Container使用:

在准备的服务器上创建一个/share/consul目录, 这个存放上述的8个材料文件, 这些目录最后会被共享到容器, 容器中的consul agent会在这个目录下找, 在之后的操作可以看到该目录被共享到了容器中的wk目录下. file tree

顺序运行如下命令:

docker run --name=server1 -itd -v /share:/wk consul sh /wk/consul/runServer1.sh
docker run --name=server2 -itd -v /share:/wk consul sh /wk/consul/runServer2.sh
docker run --name=server3 -itd -v /share:/wk consul sh /wk/consul/runServer3.sh
docker run --name=client1 -itd -p 8500:8500 -v /share:/wk consul sh /wk/consul/runClient1.sh

4. 检查结果

因为在client1中开放了端口所以可以在宿主机上检查集群具体两个检查如下:

  • 查看集群成员:curl -s http://localhost:8500/v1/agent/members | python -m json.tool

[{"Addr": "172.17.0.3","DelegateCur": 4,"DelegateMax": 5,"DelegateMin": 2,"Name": "server2","Port": 8301,"ProtocolCur": 2,"ProtocolMax": 5,"ProtocolMin": 1,"Status": 1,"Tags": {"build": "0.7.4:'1c442cb","dc": "dc1","id": "ad134d56-ab5d-d130-0488-0ab65f5504ad","port": "8300","role": "consul","vsn": "2","vsn_max": "3","vsn_min": "2"}},{"Addr": "172.17.0.5","DelegateCur": 4,"DelegateMax": 5,"DelegateMin": 2,"Name": "client1","Port": 8301,"ProtocolCur": 2,"ProtocolMax": 5,"ProtocolMin": 1,"Status": 1,"Tags": {"build": "0.7.4:'1c442cb","dc": "dc1","id": "ad134d56-ab5d-d130-0488-0ab65f5504ad","role": "node","vsn": "2","vsn_max": "3","vsn_min": "2"}},{"Addr": "172.17.0.4","DelegateCur": 4,"DelegateMax": 5,"DelegateMin": 2,"Name": "server3","Port": 8301,"ProtocolCur": 2,"ProtocolMax": 5,"ProtocolMin": 1,"Status": 1,"Tags": {"build": "0.7.4:'1c442cb","dc": "dc1","id": "ad134d56-ab5d-d130-0488-0ab65f5504ad","port": "8300","role": "consul","vsn": "2","vsn_max": "3","vsn_min": "2"}},{"Addr": "172.17.0.2","DelegateCur": 4,"DelegateMax": 5,"DelegateMin": 2,"Name": "server1","Port": 8301,"ProtocolCur": 2,"ProtocolMax": 5,"ProtocolMin": 1,"Status": 1,"Tags": {"bootstrap": "1","build": "0.7.4:'1c442cb","dc": "dc1","id": "ad134d56-ab5d-d130-0488-0ab65f5504ad","port": "8300","role": "consul","vsn": "2","vsn_max": "3","vsn_min": "2"}}
]
  • 查看consul ui: 在浏览器打开http://localhost:8500/ui/ consul web ui

5. 学习资料

  • consul配置
  • 集群搭建参考
  • 访问问题参考

转载于:https://my.oschina.net/jimmywa/blog/834108

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/846.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息