consul部署多台Docker集群
Consul
最近在学习Ocelot,发现里面集成Consul,所有部署一下多机版集群,后来发现网上都是在一台虚拟机中的Docker部署,而且大同小异,没有真正解释清楚。
前提准备
- 4台Centos虚拟机,本人安装VM虚拟机,用复制镜像快速搭建环境。(需要脚本的话联系我)
- 第一台安装好后,把Docker安装好,设置docker开机启动,关掉防火墙,设置静态IP等。
然后用copy虚拟机,修改ip地址后,全部启动
这些操作可自行百度
Consul
目前都是单数据中心,多数据中心后面更新,此篇仅供入门参考,如果有不对的地方欢迎指正
- Consul分client和server模式
- client 负责注册服务,转发请求,没有持久化的功能 配置文件启动 ,会默认遍历所有/config/file 下的*.json文件
server 也可以注册服务,但是推荐client,能持久化数据,存放在 /config/data下
在客户端模式下运行Consul Agent
--net=host:docker内部对于虚拟机的来说也是localhost如果主机上的其他容器也使用--net=host,这将是一个很好的配置,它还会将代理暴露给直接在容器外部的主机上运行的进程
-bind:这是给其他consul server来加入集群的ip-join:加入集群-client:使用此配置,Consul的客户端接口将绑定到网桥IP,并可供该网络上的其他容器使用,但不能在主机网络上使用。Consul还将接受-client=0.0.0.0绑定到所有接口的选项。
-bootstrap-expect设置服务数量,当达到设定数量启动集群。-bind的这台机器成为leader-ui管理界面-h:设置node的名称,集群的服务器不能取同名的node名称CONSUL_BIND_INTERFACE:ifconfig查看,好像虚拟机的这个名称不一样,我的是ens33,还有叫eth0的。需要用到的命令
- Docker中
Consul部署
docker inspect -f '{{.NetworkSettings.IPAddress}}' consul1查看容器内Consul1的ipdocker exec -t consul名称 consul members查看集群成员ifconfig查看ip配置/sbin/ifconfig ens33 | sed -n 's/.*inet \(addr:\)\?\([0-9.]\{7,15\}\) .*/\2/p'docker run -d --name consul1 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -bind=192.168.110.100 -ui -bootstrap-expect=3leader 服务docker run -d --name consul2 -h=node1 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -join=192.168.110.100 -uifollowerdocker run -d --name consul4 -h=node4--net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=false -client=0.0.0.0 -join=192.168.110.100 -uiclient启动
现有四台虚拟机,ip地址分别是:
- 192.168.110.100
- 192.168.110.101
- 192.168.110.102
192.168.110.103
在第一台服务器中运行server作为leader
docker run -d --name consul1 -h=node1 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -bind=192.168.110.100 -ui -bootstrap-expect=3
接下来三台台加入集群
docker run -d --name consul2 -h=node2 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -join=192.168.110.100 -ui
docker run -d --name consul3 -h=node3 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -join=192.168.110.100 -ui
docker run -d -v /consulconfig:/config/file --name consul4 -h=node4 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -config-dir=/config/file -server=false -client=0.0.0.0 -join=192.168.110.100 -ui如果需要挂载数据文件,请指定
-data-dir
查看状态
docker exec -t consul1 consul operator raft list-peers查看投票状态docker exec -t consul名称 consul members查看集群成员
consul部署多台Docker集群的更多相关文章
- 在ubuntu上部署Kubernetes管理docker集群示例, vxlan,gre
http://www.chenshake.com/openstack-folsom-guide-for-ubuntu-12-04/ http://www.cnblogs.com/sammyliu/p/ ...
- Consul安装部署(Windows单机、Docker集群)
1. Consul简介 Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发,基于 Mozilla Public Licen ...
- Docker(十三):OpenStack部署Docker集群
1.介绍 本教程使用Compose.Machine.Swarm工具把WordPress部署在OpenStack上. 本节采用Consul作为Swarm的Discovery Service模块,要利用C ...
- 27.Docker集群部署
对于scrapy的部署方式 1.Scrapyd 安装扩展组件,远程控制scrapy任务,包括部署源代码,启动任务,监听任务.scrapy-client .scrapyd api 协助完成部署和监听操作 ...
- RocketMQ(2)---Docker集群部署RocketMQ
RocketMQ(2)-Docker集群部署RocketMQ =前言= 1.因为自己只买了一台阿里云服务器,所以RocketMQ集群都部署在单台服务器上只是端口不同,如果实际开发,可以分别部署在多台服 ...
- consul异地多数据中心以及集群部署方案
consul异地多数据中心以及集群部署方案目的实现consul 异地多数据中心环境部署,使得一个数据中心的服务可以从另一个数据中心的consul获取已注册的服务地址 环境准备两台 linux服务器,外 ...
- 使用Docker构建持续集成与自动部署的Docker集群
为什么使用Docker " 从我个人使用的角度讲的话 部署来的更方便 只要构建过一次环境 推送到镜像仓库 迁移起来也是分分钟的事情 虚拟化让集群的管理和控制部署都更方便 hub.docke ...
- Docker Compose 一键部署Nginx代理Tomcat集群
Docker Compose 一键部署Nginx代理Tomcat集群 目录结构 [root@localhost ~]# tree compose_nginx_tomcat/ compose_nginx ...
- (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)
参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https:/ ...
随机推荐
- eval 是执行一段完整的js字符串代码,并将结果返回
var strArray="[{"message1":{ "id": "-1","content": &quo ...
- nyoj746 整数划分
nyoj746 http://acm.nyist.net/JudgeOnline/problem.php?pid=746 一道区间dp的题目: 设:a[i][j]为那一串数字中从第i位到第j位的数是多 ...
- No member named 'setResizeMode' in 'QHeaderView' - Convert Qt 4.7 to Qt 5.8
https://stackoverflow.com/questions/42743141/no-member-named-setresizemode-in-qheaderview-convert-qt ...
- rpm管理
系统上rpm命令管理程序包: 安装.卸载.升级.查询.校验.数据库维护 安装: rpm {-i|--install} [install-options] PACKAGE_FILE ... -v: ve ...
- scrapy爬虫事件以及数据保存为txt,json,mysql
今天要爬取的网页是虎嗅网 我们将完成如下几个步骤: 创建一个新的Scrapy工程 定义你所需要要抽取的Item对象 编写一个spider来爬取某个网站并提取出所有的Item对象 编写一个Item Pi ...
- webstorm最新破解方法
方法来自 Rover12421 大神. 1.从官网下载WebStorm2016.1安装. 2.下载 破解补丁 并解压,记住路径 3.编辑WebStorm安装目录下 bin 文件夹中的 WebStorm ...
- 关于Javascript 那些事
Javascript是一种由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为 ...
- LVM与RAID阵列
创建LVM分区: 相关命令: pvcreat /dev/sdb{1,2,3} 创建物理卷 vgcreat test_vg1 /dev/sdb1 创建卷组 vgcreat test_vg2 -s ...
- 利用html5 postMessage接口跨域设置iframe大小
<!doctype html> <html> <head> <title>Document A</title> <meta chars ...
- 快速排序 java实现 (原理-优化) 三路快排
一.基本的快速排序 在数组中选取一个元素为基点,然后想办法把这个基点元素移动到它在排好序后的最终位置,使得新数组中在这个基点之前的元素都小于这个基点,而之后的元素都大于这个基点,然后再对前后两部分数组 ...