搭建swarm集群的步骤如下:
如果是安装Virtualbox和docker-machine环境下,创建虚拟主机boot2docker,会自动安装Docker Engine,就很简单了,不用管网络环境、节点中安装Docker Engin等步骤了。
以下以AWS(Amazon Web Services)为例
前提条件
1.添加网络出入站规则
AWS使用security group管理VPC网络指定类型的网络流程。
默认安全组的初始规则:拒绝入站流量,允许所有出站流量,允许站内所有节点之间的访问。
因为后面要使用SSH连接节点和下载容器镜像,需要为其设置端口访问规则。
此外,根据你部署应用程序的需要,可能还需额外指定地其它的访问端口。
操作步骤如下:
- 点击VPC - Isolatedd Cloud Resource
- 导航到Security Groups
- 选择default安全组,添加两条规则
规则如下:
Type Protocol Port Range Source
SSH TCP 22 0.0.0.0/0
HTTP TCP 80 0.0.0.0/0
2.创建节点
打开EC2 Dashboard,创建五个节点(生个节点一台主机)
选择一个AMI镜像 (Amazon Machine Images)创建节点
用manager0、manager1、consul0、node0、node1等标记节点
五个节点分类如下:
Node Description Name
Swarm primary and secondary managers manager0, manager1
Swarm node node0, node1
Discovery backend consul0
3.在每个节点上安装Docker Engine
安装Docker Engine之后,你才能用Engine命令行(或API)使Swarm manager定位Nodes。
# 升级yum包
sudo yum update
# 运行安装脚本
curl -sSL https://get.docker.com/ | sh
# 启动docker守护进程,在2375端口监听swarm nodes
sudo docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
# 验证Docker Engine正确安装
sudo docker run hello-world
# 给ec2-user设置root权限
sudo usermod -aG docker ec2-user
# 退出
logout
4.创建用于节点发现的容器
# 使用SSH连接到consul0,获取IP(例如:172.30.0.161)
ifconfig
# 启动consult容器
docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap
5.创建swarm集群
以下将创建两个Swarm Manager实现高可靠性配置。
第一个manager成为Swarm的primary manager,曾经称之为master,此术语已经过时。
第二个manager用作备机,当primary manager不可用时,集群将推举此备机作为primary manager。
# 在manager0中创建primary manager
docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise <manager0_ip>:4000 consul://<consul_ip>:8500
# 在manager1中创建secondary manager
docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise <manager1_ip>:4000 consul://<consul_ip>:8500
# 获取node0、node1的IP,并将它们分别添加到集群中
docker run -d swarm join --advertise=<node_ip>:2375 consul://<consul_ip>:8500
# 查看Swarm
docker -H :4000 info
# 在swarm中运行一个应用程序
docker -H :4000 run hello-world
# 查看应用程序运行于哪个节点
docker -H :4000 ps
6.测试灾备
当前有两个manager主机,primary manager和secondary manager。
当primary manager荡机或关机时,secondary manager变成了primary manager。
重启刚关闭的manager时,它已经变成了secondary manager。
# 使用SSH连接到manager0,获取swarm容器的id或name
# 移除manager0主机上的swarm容器,模拟manager0荡机
docker rm -f <swarm-container>
# 再次启动manager0主机的swarm容器,以manager加入到集群中
docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise 172.30.0.161:4000 consul://172.30.0.161:8500
# 查看docker日志
sudo docker logs <swarm-container>
# 查看集群信息
docker -H :4000 info
参考:https://docs.docker.com/swarm/install-manual/
原文地址:http://blog.csdn.net/gezhonglei2007/article/details/51588351
出处:www.l1mn.com
原文地址:https://www.l1mn.com/p/f08og2.html
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
Copyright © L1MN.COM 联系方式:l1mnfw@163.com