Docker安装Consul集群

Docker 安装Consul集群

使用windows 环境,Docker desktop community 构建consul集群。

1、docker 容器网络

docker安装后,默认会创建三种网络类型,bridge、host和none,可通过如下命令查看:

sudo docker network ls

NETWORK ID          NAME                DRIVER              SCOPE
32c1b52444f2        bridge              bridge              local
6a2d84a36162        host                host                local
cff3a04a41f6        none                null                local

  • bridge:网络桥接:默认情况下启动、创建容器都是使用该模式,每次容器重启都会按顺序获取对应的ip地址,这就导致每次重启后容器的ip发生变化。
  • none:无指定网络,启动时通过:-network=none 则docker不会分配局域网ip。
  • host:主机网络:docker容器的网络会附属在主机上,两者互通。

2、创建固定ip的容器

  1. 创建自定义网络类型,并指定网段
    docker network create --subnet=192.168.0.0/16 staticnet

--subnet=192.168.0.0/16 子网网段
staticnet 自定义网络类型

再次查看docker 网络类型:docker network ls 会多出来一个自定义的网络类型。

  1. 使用新的网络类型创建并启动容器

udo docker run -it --name userserver --net staticnet --ip 192.168.0.2 mysql:5.7
参数说明:--net 指定网络类型。--ip 指定容器ip(对应网络类型下的网段内)

创建单节点Consul

docker run -d -p 8500:8500 -v /data/consul:/consul/data -e CONSUL_BIND_INTERFACE='eth0' --name=cs1 --net staticnet --ip 192.168.0.2 consul agent -server -bootstrap -ui -node=Server01 -client='0.0.0.0'

参数说明:
-p <hostPort>:<containerPort> 映射容器端口到主机端口
-v <hostDataDir>:<containerDataDir> 卷文件映射
--net <networktype> 指定网络类型这里使用自定以的网络类型
--ip <ipaddress> 指定容器在网络类型下的ip地址
consul ... 开始执行consul的命令
agent -server 表示启动 Agent 进程以consul server模式
agen -client 表示启动 Agent 进程以consul client模式
-bootatrap 表示此节点时server-leader,通常多个server会采用Raft算法选举产生一个leader,剩下的server为follow
-ui 启动web ui管理界面,默认端口:8500 须开放出来。
-node 节点名称,集群中唯一
-client='0.0.0.0' 将绑定客户端地址,0.0.0.0表示所有地址都能访问
-join 加入某一集群中

上面命令会启动一个Consul节点,名称为:Server01,端口已经进行了映射,可通过主机地址:8500 访问web ui管理页面。

组装集群(3个server+2个client)

1、查看刚刚创建的leader节点的信息:
docker exec cs1 consul members
输出:

Node      Address           Status  Type    Build  Protocol  DC   Segment
Server01  192.168.0.2:8301  alive   server  1.6.1  2         dc1  <all>

可以看到第一个节点的地址。
2、创建第二个server并加入集群

docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=cs2 --net staticnet --ip 192.168.0.3 consul agent -server -node=Server02 -join='192.168.0.2'

3、创建第三个server并加入集群

docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=cs3 --net staticnet --ip 192.168.0.4  consul agent -server -node=Server03 -join='192.168.0.2'
server加入完成后,在web管理页面就可以看到新增加的节点,以及当前的leader节点。

4、创建client并加入集群

-- client01
 docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=CC-ip05 --net staticnet --ip 192.168.0.5  consul agent -node client01 -join='192.168.0.2' -client='0.0.0.0'

--client02
 docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=CC-ip06 --net staticnet --ip 192.168.0.6  consul agent -node client02 -join='192.168.0.2' -client='0.0.0.0'

-- client03
 docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=CC-ip07 --net staticnet --ip 192.168.0.7  consul agent -node client03 -join='192.168.0.2' -client='0.0.0.0'
posted @ 2019-11-19 15:06  pluto-arch  阅读(295)  评论(0编辑  收藏  举报