使用Docker搭建Consul集群
2019独角兽企业重金招聘Python工程师标准>>>
1. 做什么事情?
consul作为一个服务发现的工具在国内外都收到欢迎, 它的多数据中心是其他如zookerper工具所不能比的, 本文的目的是搭建一个准产品环境下的consul cluster 作为产品测试和教学演示, cluster所用到的服务器有Docker提供,运行14.0的Ubuntu操作系统.
cluster详细:
节点名称 | server/client | ip |
---|---|---|
server1 | server agent | 172.17.0.2 |
server2 | server agent | 172.17.0.3 |
server3 | server agent | 172.17.0.4 |
client1 | client agent | 172.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 如下图:
注意该image中有一个wk文件夹也是需要的, 这里当成一个工作目录存放外部资源
3. 操作流程
创建共享目录供Docker Container使用:
在准备的服务器上创建一个/share/consul目录, 这个存放上述的8个材料文件, 这些目录最后会被共享到容器, 容器中的consul agent会在这个目录下找, 在之后的操作可以看到该目录被共享到了容器中的wk目录下.
顺序运行如下命令:
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/
5. 学习资料
- consul配置
- 集群搭建参考
- 访问问题参考
转载于:https://my.oschina.net/jimmywa/blog/834108
使用Docker搭建Consul集群相关推荐
- Mac 使用 docker 搭建 kafka 集群 + Zookeeper + kafka-manager
Kafka 搭建: 建立Zookeeper容器: 这里我们用最简单的方式创建一个独立的Zookeeper节点,如果要考虑zookeeper的高可用,可以将其做成一个集群,最好是能有多台机器. $ do ...
- Docker搭建hadoop集群
参考https://github.com/kiwenlau/hadoop-cluster-docker/blob/master/start-container.sh 因为之前在VMware上操作Had ...
- 用Docker搭建Elasticsearch集群
用Docker搭建Elasticsearch集群 对于用Docker搭建分布式Elasticsearhc集群的一个介绍,以及一些实施中遇到问题的总结 搜索服务简述 结合业务的场景,在目前的商品体系需要 ...
- docker 添加端口映射_苟且偷生的程序猿没法摸鱼了,从docker搭建elasticsearch集群开始学习...
最近刚换了公司,然后公司刚好使用的docker.而本人作为一个石锤的搬砖员,之前只知道搬砖们,对于这些东西确实没学过.今天在本地使用docker搭建elasticsearch集群,记录下过程,而且el ...
- Docker学习七:使用docker搭建Hadoop集群
本博客简单分享了如何在Docker上搭建Hadoop集群,我的电脑是Ubuntu20,听同学说wsl2有些命令不对,所以建议在虚拟机里按照Ubuntu或者直接安装双系统吧 Docker学习一:Dock ...
- docker搭建pxc集群
前言 随着mysql存储的数据量越来越大,mysql查询单表时的响应速度也会随之变慢,尤其是当单节点承载的数据量超出一定的范围后,比如单表超过2000万之后,查询响应速度会下降的很快,因此,一方面可以 ...
- 基于docker搭建zookeeper集群、kafka集群(多台真机之间的集群)
基于docker搭建zookeeper集群.kafka集群---二(多台真机之间的集群) https://blog.csdn.net/diebiao6526/article/details/10143 ...
- 利用docker搭建服务器集群并部署大数据生态软件
1.集群搭建与配置 本来想使用centos镜像搭建服务器集群,但最小化安装版的镜像也需要1G左右,如果后面再部署一些大数据软件,单是多台服务器环境部署就会占用大量空间,加上此版本镜像在不同电脑环境的安 ...
- [零基础]用docker搭建Hadoop集群
目录 前言:为什么要用docker搭建Hadoop集群? 准备:下载VMware.VMwareTools(或Xftp.Xshell).Ubuntu或者CentOS映像文件.Hadoop和jdk压缩包 ...
最新文章
- [2] SSD配置+训练VOC0712+训练自己的数据集
- PMCAFF | 刷微信朋友圈行为分析:刷朋友圈是一种感觉?有一种批皇帝批奏章的感觉...
- CSS3的box-sizing:向外撑content-box向内挤border-box 外撑的padding算自己的盒子会变大 内挤的padding会缩小自己
- [ASP.NET MVC2 系列] ASP.NET MVC 之如何创建自定义路由约束
- mongoose如何发送html页面,javascript – 如何将HTML插入Mongodb?
- java 编码实现内存拷贝_java提高篇(六)-----使用序列化实现对象的拷贝
- 检索COM类工厂中CLSID为{00024500-0000-0000-C000-000000000046}的组件时失败
- jquery--选择器sizzle源码分析
- openjudge 二叉树 2756
- 【JAVA】java 堆溢出分析
- 退出Activity
- nginx php访问阻塞,php-cgi和php-fpm,Windows环境下解决Nginx+php并发访问阻塞问题。
- 学习总结(一):ad画板总结
- Go适合做什么?为何这么多人偏爱Go语言?
- vue + openlayers鼠标移动获取地图经纬度格式化的两种方式
- 做一个学(chou)习(ka)游戏(一)
- 电脑dns服务器未响应该怎么操作,电脑DNS服务器未响应该怎么办
- 面试运维没工作经验怎么办?
- 杂项 20221108 finrl 的玩法 python技巧 查看版本信息
- 美团“互联网下半场”的筹码:豪赌B端业务
热门文章
- 途观l怎么使用_官宣!中型SUV质量最新排名出炉:汉兰达失前三,大众途观L上榜!...
- 表情包+外卖+壁纸小程序源码
- Spring Boot集成Redis缓存之注解方式
- 博客系统架构对比分析
- Android模拟器genymotion的安装和使用
- 用ssh反向连接访问内网主机 ( 实例使用autossh隧道实现mysql的同步 )
- js如何判断是否在iframe中及防止网页被别站用 iframe嵌套 (Load denied by X-Frame-Options)...
- 《剑指Offer》 矩形覆盖
- 【C++ STL学习之三】容器deque深入学习
- 数据表的新建 修改 删除 mysql