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集群相关推荐

  1. Mac 使用 docker 搭建 kafka 集群 + Zookeeper + kafka-manager

    Kafka 搭建: 建立Zookeeper容器: 这里我们用最简单的方式创建一个独立的Zookeeper节点,如果要考虑zookeeper的高可用,可以将其做成一个集群,最好是能有多台机器. $ do ...

  2. Docker搭建hadoop集群

    参考https://github.com/kiwenlau/hadoop-cluster-docker/blob/master/start-container.sh 因为之前在VMware上操作Had ...

  3. 用Docker搭建Elasticsearch集群

    用Docker搭建Elasticsearch集群 对于用Docker搭建分布式Elasticsearhc集群的一个介绍,以及一些实施中遇到问题的总结 搜索服务简述 结合业务的场景,在目前的商品体系需要 ...

  4. docker 添加端口映射_苟且偷生的程序猿没法摸鱼了,从docker搭建elasticsearch集群开始学习...

    最近刚换了公司,然后公司刚好使用的docker.而本人作为一个石锤的搬砖员,之前只知道搬砖们,对于这些东西确实没学过.今天在本地使用docker搭建elasticsearch集群,记录下过程,而且el ...

  5. Docker学习七:使用docker搭建Hadoop集群

    本博客简单分享了如何在Docker上搭建Hadoop集群,我的电脑是Ubuntu20,听同学说wsl2有些命令不对,所以建议在虚拟机里按照Ubuntu或者直接安装双系统吧 Docker学习一:Dock ...

  6. docker搭建pxc集群

    前言 随着mysql存储的数据量越来越大,mysql查询单表时的响应速度也会随之变慢,尤其是当单节点承载的数据量超出一定的范围后,比如单表超过2000万之后,查询响应速度会下降的很快,因此,一方面可以 ...

  7. 基于docker搭建zookeeper集群、kafka集群(多台真机之间的集群)

    基于docker搭建zookeeper集群.kafka集群---二(多台真机之间的集群) https://blog.csdn.net/diebiao6526/article/details/10143 ...

  8. 利用docker搭建服务器集群并部署大数据生态软件

    1.集群搭建与配置 本来想使用centos镜像搭建服务器集群,但最小化安装版的镜像也需要1G左右,如果后面再部署一些大数据软件,单是多台服务器环境部署就会占用大量空间,加上此版本镜像在不同电脑环境的安 ...

  9. [零基础]用docker搭建Hadoop集群

    目录 前言:为什么要用docker搭建Hadoop集群? 准备:下载VMware.VMwareTools(或Xftp.Xshell).Ubuntu或者CentOS映像文件.Hadoop和jdk压缩包 ...

最新文章

  1. [2] SSD配置+训练VOC0712+训练自己的数据集
  2. PMCAFF | 刷微信朋友圈行为分析:刷朋友圈是一种感觉?有一种批皇帝批奏章的感觉...
  3. CSS3的box-sizing:向外撑content-box向内挤border-box 外撑的padding算自己的盒子会变大 内挤的padding会缩小自己
  4. [ASP.NET MVC2 系列] ASP.NET MVC 之如何创建自定义路由约束
  5. mongoose如何发送html页面,javascript – 如何将HTML插入Mongodb?
  6. java 编码实现内存拷贝_java提高篇(六)-----使用序列化实现对象的拷贝
  7. 检索COM类工厂中CLSID为{00024500-0000-0000-C000-000000000046}的组件时失败
  8. jquery--选择器sizzle源码分析
  9. openjudge 二叉树 2756
  10. 【JAVA】java 堆溢出分析
  11. 退出Activity
  12. nginx php访问阻塞,php-cgi和php-fpm,Windows环境下解决Nginx+php并发访问阻塞问题。
  13. 学习总结(一):ad画板总结
  14. Go适合做什么?为何这么多人偏爱Go语言?
  15. vue + openlayers鼠标移动获取地图经纬度格式化的两种方式
  16. 做一个学(chou)习(ka)游戏(一)
  17. 电脑dns服务器未响应该怎么操作,电脑DNS服务器未响应该怎么办
  18. 面试运维没工作经验怎么办?
  19. 杂项 20221108 finrl 的玩法 python技巧 查看版本信息
  20. 美团“互联网下半场”的筹码:豪赌B端业务

热门文章

  1. 途观l怎么使用_官宣!中型SUV质量最新排名出炉:汉兰达失前三,大众途观L上榜!...
  2. 表情包+外卖+壁纸小程序源码
  3. Spring Boot集成Redis缓存之注解方式
  4. 博客系统架构对比分析
  5. Android模拟器genymotion的安装和使用
  6. 用ssh反向连接访问内网主机 ( 实例使用autossh隧道实现mysql的同步 )
  7. js如何判断是否在iframe中及防止网页被别站用 iframe嵌套 (Load denied by X-Frame-Options)...
  8. 《剑指Offer》 矩形覆盖
  9. 【C++ STL学习之三】容器deque深入学习
  10. 数据表的新建 修改 删除 mysql