使用docker部署consul
2019-05-20 本文已影响30人
__Brick__
1. 创建docker虚拟机
1. 提前安装好docker与virtualbox,然后创建4个虚拟机
docker-machine create --driver virtualbox Consul1
docker-machine create --driver virtualbox Consul2
docker-machine create --driver virtualbox Consul3
docker-machine create --driver virtualbox Consul4
2. 修改docker仓库为国内,重启虚拟机的docker
sudo vi /etc/docker/daemon.json
{
"experimental" : true,
"registry-mirrors" : [
"https://registry.docker-cn.com"
]
}
sudo /etc/init.d/docker restart
2. 部署consul
1. 启动consul server
docker run -h cnode1 --name consul -v /config:/config -v /data:/data --restart=always\
-p 8300:8300 \
-p 8301:8301 \
-p 8301:8301/udp \
-p 8302:8302 \
-p 8302:8302/udp \
-p 8400:8400 \
-p 8500:8500 \
progrium/consul -server \
-bootstrap-expect 1 \
-advertise 192.168.99.100
然后依次在剩下每台虚拟机中部署并加入集群
docker run -h cnode2 --name consul -d -v /config:/config -v /data:/data --restart=always\
-p 8300:8300 \
-p 8301:8301/udp \
-p 8302:8302 \
-p 8302:8302/udp \
-p 8400:8400 \
-p 8500:8500 \
progrium/consul -server \
-advertise 192.168.99.101 \
-join 192.168.99.100
部署完成效果如下
image.png
2.部署并注册服务
部署、注册nginx
curl -X PUT -d '{"id": "nginx","name": "nginx","address": "192.168.99.102","port": 80,"checks": [{"http": "http://192.168.99.102/","interval": "5s"}]}' http://127.0.0.1:8500/v1/agent/service/register
image.png
传输加密
1. 通信结构
QQ20190520-230253.png2. 加密配置
从图中我们可以看到,consul有几种通信方式,有RPC和gossip,gossip用于维护集群节点关系,也就是包括leader选举、状态检查等等维护集群关系的通信都通过gossip来进行,gossip之间通信安全通过。数据的请求通过RPC协议进行数据传输。
为保障通信安全,两种通信方式都有各自的加密方法
goosip
: 通过对称加密来对集群协议进行加密
执行
consul keygen
生成密钥,具体配置方法根据自身需求来,官方参考页
面:https://learn.hashicorp.com/consul/security-networking/agent-encryption#enable-gossip-encryption-existing-cluster
RPC
: 通过ca数字证书进行可靠性验证,加密通过TLS进行
consul tls cert create -server
consul tls cert create -client
两个命令生成证书,具体配置参数参考官方文档:
https://learn.hashicorp.com/consul/security-networking/certificates
其他内容待日后补充