Docker Swarm搭建生产环境的集群

搭建swarm集群的步骤如下:
- 做好前提准备
- 建立基本网络安全
- 创建节点
- 每个节点上安装Docker Engine
- 配置一个用于主机发现服务
- 创建Swarm集群
- 使用swarm
- 测试Swarm manager的高可靠性

如果是安装Virtualbox和docker-machine环境下,创建虚拟主机boot2docker,会自动安装Docker Engine,就很简单了,不用管网络环境、节点中安装Docker Engin等步骤了。

以下以AWS(Amazon Web Services)为例

前提条件

- 一个AWS账号
- 熟悉AWS的特性和工具:
    - EC2 Dashbord (Elastic Cloud)
    - VPC Dashboard (Virtual Private Cloud)
    - VPC 安全组
    - 使用SSH连接到EC2

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

1.添加网络出入站规则

AWS使用security group管理VPC网络指定类型的网络流程。
默认安全组的初始规则:拒绝入站流量,允许所有出站流量,允许站内所有节点之间的访问。
因为后面要使用SSH连接节点和下载容器镜像,需要为其设置端口访问规则。
此外,根据你部署应用程序的需要,可能还需额外指定地其它的访问端口。

操作步骤如下:
- 点击VPC - Isolatedd Cloud Resource
- 导航到Security Groups
- 选择default安全组,添加两条规则

规则如下:

TypeProtocolPort RangeSource
SSHTCP220.0.0.0/0
HTTPTCP800.0.0.0/0

2.创建节点

打开EC2 Dashboard,创建五个节点(生个节点一台主机)

  • 选择一个AMI镜像 (Amazon Machine Images)创建节点
  • 用manager0、manager1、consul0、node0、node1等标记节点

五个节点分类如下:

Node DescriptionName
Swarm primary and secondary managersmanager0, manager1
Swarm nodenode0, node1
Discovery backendconsul0

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
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

4.创建用于节点发现的容器

# 使用SSH连接到consul0,获取IP(例如:172.30.0.161)
ifconfig
# 启动consult容器
docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap
 
 
  • 1
  • 2
  • 3
  • 4

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
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

参考:https://docs.docker.com/swarm/install-manual/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值