注册中心Consul使用【集群容器化部署】

13 篇文章 1 订阅
6 篇文章 0 订阅
docker pull consul:1.6.0
  • 本地创建映射目录及配置文件

#创建server1对应的目录
mkdir /docker/consul/server1
mkdir /docker/consul/server1/data
mkdir /docker/consul/server1/config

#创建server2对应的目录
mkdir /docker/consul/server2
mkdir /docker/consul/server2/data
mkdir /docker/consul/server2/config

#创建server3对应的目录
mkdir /docker/consul/server3
mkdir /docker/consul/server3/data
mkdir /docker/consul/server3/config

#consul容器默认config路径在/consul/config,data路径在/consul/data
#使用docker -v映射,启动可以使用本地config,data也可以持久化到本地
#创建server1配置文件config.json
#注意配置ui集群页面,client_addr对应-client,bootstrap

{
    "datacenter":"dc1",
    "primary_datacenter":"dc1",
    "server":true,
    "ui":true,
    "client_addr":"0.0.0.0",
    "bootstrap":true,
    "enable_script_checks":false,
    "node_name":"consul-server-1",
    "enable_local_script_checks":true
}


#拷贝同样的配置到/docker/consul/server2,/docker/consul/server3目录下,注意去掉ui和bootstrap属性,注意修改节点名node_name,不能冲突

#client_addr不写的话,外面服务访问不了容器里的consul服务
  • 启动容器

#docker启动命令

docker run -d -e CONSUL_BIND_INTERFACE=eth0 -v /docker/consul/server1/config:/consul/config -v /docker/consul/server1/data:/consul/data  -p 8500:8500  --name=consul consul:1.6.0 agent

#前面的不解释了,-v是将本地目录映射到容器内,容器内的路径是刚刚config.json配置中指定的,启动consul时指定配置文件,实际这个配置文件在本地/docker/consul/server1/config/config.json
  • 访问本地8500端口,可以看到页面

  • 启动第二、第三个server加入到集群

#第一步:通过consul命令查看现有server信息
docker exec consul_server_1 consul members

主要是要知道第一个server的IP,以便后面的server能够join进来。

#第二部:修改server2和server3的配置文件,增加以下内容
    "start_join":[
        "172.17.0.4"
    ],
    "retry_join":[
        "172.17.0.4"
    ]
#注意保持json格式正确


#也可以在docker启动命令后加 -join=172.17.0.4 -retry-join=172.17.0.4,结果一样
#第三步:使用docker命令启动server2和server3
#启动第2个server节点
docker run -d -e CONSUL_BIND_INTERFACE=eth0 -v /docker/consul/server2/config:/consul/config -v /docker/consul/server2/data:/consul/data --name=consul_server_2 consul:1.6.0 agent


#启动第3个server节点
docker run -d -e CONSUL_BIND_INTERFACE=eth0 -v /docker/consul/server3/config:/consul/config -v /docker/consul/server3/data:/consul/data --name=consul_server_3 consul:1.6.0 agent
  • 查看ui

可以看到3个server都有了,状态正常,node-name是我们命名的consul-server1-3。

  • 增加client类型consul

#复制一个config.json到/docker/consul/client1目录下


#修改client1的配置文件,具体如下

{
    "datacenter":"dc1",
    "primary_datacenter":"dc1",
    "server":false,
    "client_addr":"0.0.0.0",
    "enable_script_checks":false,
    "node_name":"consul-client-1",
    "enable_local_script_checks":true,
    "start_join":[
        "172.17.0.4"
    ],
    "retry_join":[
        "172.17.0.4"
    ]
}

#注意点:指明了server为false

#docker启动
docker run -d -e CONSUL_BIND_INTERFACE=eth0 -v /docker/consul/client1/config:/consul/config -v /docker/consul/client1/data:/consul/data --name=consul_client_1 consul:1.6.0 agent

client加入之后可以通过命令consul members查看

可以看到我们刚刚启动的consul_client_1这个节点。

UI中在service中看不到client

但是可以在node中看到

至于client节点和server节点有啥区别。。。

  • 查看容器中运行的数据是否保存在本地

成功部署完成!

本文consul命令主要参考官网:https://www.consul.io/docs/agent/options.html

https://docs.docker.com/samples/library/consul/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值