Docker中运行consul集群

来源:互联网 发布:腾讯体育软件 编辑:程序博客网 时间:2024/06/10 18:29

前言

这篇博客主要依赖上一篇文章,在阿里云ECS中已经构建了consul镜像,同样的步骤,可以在腾讯云中构建consul镜像,用阿里云和腾讯云的主要原因就是新注册用户可以免费用一段时间的服务器。

DNS设置

修改Docker守护进程的DNS查找设置为:

  • 本地docker的IP地址,这样可以使用consul来解析DNS
  • Google的DNS服务器
  • 指定Consul的查询指定搜索域
    首先,先找到docker接口docker0的IP地址,如下:
ip addr show docker0

输出内容如下:

docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:79:f7:f6:36 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 scope global docker0 valid_lft forever preferred_lft forever

这个接口地址就是172.17.0.1,使用这个地址,我们把/etc/default/docker文件中的docker启动项DOCKER_POTS修改为:

DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"

我把阿里云的服务器叫做larry,腾讯云的服务器叫做curely。
在larry和curely中进行同样的设置,如下:

DOCKER_OPTS="--dns 172.17.0.1 --dns 8.8.8.8 --dns-search service .consul"

然后重启larry服务器

service docker restart

同样,重启curely服务器。

启动自启动consul节点

consul镜像已经存在larry和curely服务器中了,把larry服务器做为自启动的节点,执行以下命令:

docker run -d -h larry -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302 -p 8302:8302/udp -p 8400:8400 -p 8500:8500 -p 53:53/udp --name larry_agent chenpeihai/consul -server -advertise 101.132.146.94 -bootstrap-expect 2

-server告诉代理运行在服务器模式,-advertise 告诉代理通过101.132.146.94广播自己,-bootstrap-expect告诉consul集群中有多少代理。
larry需要在阿里云的安全组中开启对应的端口
这里写图片描述

启动curely节点

sudo docker run -d -h curly -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302 -p 8302:8302/udp -p 8400:8400 -p 8500:8500 -p 53:53/udp --name curly_agent chenpeihai/consul -server -advertise 122.152.199.200 -join 101.132.146.94

-join 告诉consul连接101.132.146.94指定的larry主机的IP所在的集群。

查看consul节点日志

docker logs larry_agent

可以看到日志如下:

这里写图片描述

sudo docker logs curely_agent

这里写图片描述
可以看到选举了larry为leader。

查看consul控制台

分别查看larry和consul控制,可以看到集群已经成功运行。
这里写图片描述
这里写图片描述
这样就运行成功了。

原创粉丝点击