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.添加网络出入站规则

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

原文标题:Docker Swarm搭建生产环境的集群

原文地址:https://www.l1mn.com/p/f08og2.html

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

分类:docker
标签:dockerswarm
评论

皖ICP备2023023451号

Copyright © L1MN.COM 联系方式:l1mnfw@163.com