docker overlay网络部署
在实际的项目中,因为需要部署多节点冗余备份,以实现高可用,这里就要用到各类工具的分布式部署方案了,以前手动部署过mysql replication和pxc,但docker的方案没有尝试成功,无法成功部署,这里也是参考了各类博客和文档后,尝试部署成功。
假设要在两台节点上安装docker,并使这两个docker可以相互访问。
环境:Ubuntu 16.04 etcd docker
安装ETCD
etcd集群
etcd集群参考基于etcd服务发现的overlay跨多宿主机容器网络。
在两台主机上:
1 | curl -L <https://github.com/coreos/etcd/releases/download/v2.2.1/etcd-v2.2.1-linux-amd64.tar.gz> -o etcd-v2.2.1-linux-amd64.tar.gz |
注意下面的命令需要先设置下面值:
{NODE_NAME}:etcd节点名称,需要和命令中的-initial-cluster的对应的{NODE1_NAME}或{NODE2_NAME}对应
{NODE_IP}/{NODE1_IP}/{NODE2_NAME}:节点的IP
1 | ./etcd -name {NODE_NAME} -initial-advertise-peer-urls [http://{NODE_IP}:2380](http://NODE_IP:2380) \ |
单个运行etcd
etcd配置:
etcd启动
etcd启动命令:
1 | etcd --advertise-client-urls 'http://192.168.15.232:2379' --listen-client-urls 'http://0.0.0.0:2379' |
需要确保 advertise-client-urls 是在正确的ip和端口上监听
etcd检查
- 本机检查:
在etcd运行的机器上,检查启动情况:
1 | etcdctl member list |
检查功能是否正确,能否正确设置和获取
1 | etcdctl mk key value |
- 远程检查
在其他主机上,验证远程连接的正确性,是否可以正确设置和获取
1 | ./etcdctl -endpoints http://192.168.15.232:2379 get key |
安装docker
如何安装,参考:https://docs.docker.com/install/linux/docker-ce/ubuntu/
在两个节点上:
1 | sudo service docker stop |
在其中一台主机上初始化swarm,使其为swarm manager节点
1 | sudo docker swarm init |
加入集群(运行完上面的命令后,会出现指示如何加入网络的指令)。
1 | docker swarm join --token SWMTKN-1-0qo83je2oxsfxd72m09fgsm598i4dqzu3xfim36f4w20ioovgs-7oj4jufbt6yhsbq8mdxzf0bkj xxx.1xx.xxx.201:2377 |
在这台主机上,新建overlay network:(注意下面命令{NETWORK_NAME}改为自己的network名称,–attachable参数很重要)
1 | sudo docker network create --driver overlay --attachable {NETWORK_NAME} |
测试:
第一个节点:
1 | sudo docker run -itd --name=worker-1 --net={NETWORK_NAME} ubuntu |
第二个节点:
1 | sudo docker run -itd --name=worker-2 --net={NETWORK_NAME} ubuntu |
在两个节点运行的ubuntudocker 容器安装ping和ifconfig并查看各自的ip:
第一个节点:
1 | sudo docker exec worker-1 apt-get update |
第二个节点:
1 | sudo docker exec worker-2 apt-get update |
本文标题:docker overlay网络部署
文章作者:小师
发布时间:2019-05-21
最后更新:2022-05-04
原始链接:chunlife.top/2019/05/21/docker-overlay网络部署/
版权声明:本站所有文章均采用知识共享署名4.0国际许可协议进行许可