Docker 集群Swarm创建和Swarm Web管理

关于Docker Swarm更多的介绍请查看《Docker管理工具-Swarm部署记录

 

一、环境配置

1、安装环境

# cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core) 
# docker version
Client:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        
 OS/Arch:      linux/amd64

2、安装iptables,并关闭firewall防火墙,

# yum install iptables-services -y &&  systemctl enable iptables &&  service iptables save
# systemctl disable firewalld.service
# systemctl stop firewalld.service

关闭firewall防火墙,如果不开启iptables nat,Docker容器将无法正常启动。

  • 运行 sudo iptables -L | grep DOCKER 若输出

    DOCKER     all  --  anywhere             anywhere
    Chain DOCKER (1 references)

    则没问题。

  • 否则,运行 iptables-save > /etc/sysconfig/iptables 并编辑添加相应的内容:

    • *nat
      :PREROUTING ACCEPT [27:11935]
      :INPUT ACCEPT [0:0]
      :OUTPUT ACCEPT [598:57368]
      :POSTROUTING ACCEPT [591:57092]
      :DOCKER - [0:0]
      -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
      -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
      -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
      COMMIT
      # Completed on Sun Sep 20 17:35:31 2015
      # Generated by iptables-save v1.4.21 on Sun Sep 20 17:35:31 2015
      *filter
      :INPUT ACCEPT [139291:461018923]
      :FORWARD ACCEPT [0:0]
      :OUTPUT ACCEPT [127386:5251162]
      :DOCKER - [0:0]
      -A FORWARD -o docker0 -j DOCKER
      -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
      -A FORWARD -i docker0 ! -o docker0 -j ACCEPT
      -A FORWARD -i docker0 -o docker0 -j ACCEPT
      COMMIT
      # Completed on Sun Sep 20 17:35:31 2015

 

3、所有主机节点docker开启2375监听,docker版本不同,配置方式不一样

vim /etc/sysconfig/docker

......
OPTIONS='-H 0.0.0.0:2375 -H unix:///var/run/docker.sock'           //在OPTIONS参数项后面的''里添加内容

 

或者

# cat  /usr/lib/systemd/system/docker.service  |grep ExecStart
ExecStart=/usr/bin/dockerd   -H 0.0.0.0:2375  -H unix:///var/run/docker.sock

 

重启docker服务

systemctl daemon-reload    ##使配置文件生效
systemctl restart docker

 

二、Swarm安装和集群创建

1、Swarm镜像下载

# docker pull swarm
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/swarm     latest              36b1e23becab        4 months ago        15.85 MB

 

2、创建Swarm

# docker swarm init --advertise-addr  192.168.23.56:2377
Swarm initialized: current node (4cejtuairtof6d0wjq88merwb) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-3kntv9pmgo1w2uk4yqk79v0lw0z35uw2k5j6rw7cns2v0xv3tn-2zqnn7e2zf1azaad2teeh9arw \
    192.168.23.56:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

上面命令执行后,该机器自动加入到swarm集群。这个会创建一个集群token,获取全球唯一的 token,作为集群唯一标识。后续将其他节点加入集群都会用到这个token值。

其中,--advertise-addr参数表示其它swarm中的worker节点使用此ip地址与manager联系。命令的输出包含了其它节点如何加入集群的命令。

 

3、添加集群节点

 

[root@kbsonlong ~]# docker swarm join \
>     --token SWMTKN-1-3kntv9pmgo1w2uk4yqk79v0lw0z35uw2k5j6rw7cns2v0xv3tn-2zqnn7e2zf1azaad2teeh9arw \
>     192.168.23.56:2377
This node joined a swarm as a worker.

 

4、查看集群节点

[root@along ~]# docker node list
ID                           HOSTNAME     STATUS  AVAILABILITY  MANAGER STATUS
4cejtuairtof6d0wjq88merwb *  along.party  Ready   Active        Leader
9388mi6e3fnk9l70g24cljhr5    kbsonlong    Ready   Active
[root@along ~]# docker node list
ID                           HOSTNAME     STATUS  AVAILABILITY  MANAGER STATUS
4cejtuairtof6d0wjq88merwb *  along.party  Ready   Active        Leader
9388mi6e3fnk9l70g24cljhr5    kbsonlong    Ready   Active        

//将kbsonlong  节点下线。如果要删除node1节点,命令是"docker node rm --force kbsonlong  "
[root@along ~]# docker node update --availability drain kbsonlong  
kbsonlong
[root@along ~]# docker node list
ID                           HOSTNAME     STATUS  AVAILABILITY  MANAGER STATUS
4cejtuairtof6d0wjq88merwb *  along.party  Ready   Active        Leader
9388mi6e3fnk9l70g24cljhr5    kbsonlong    Ready   Drain         
[root@along ~]#
//可以看到kbsonlong节点状态变为Drain,那么该节点就不会接受task任务分发,就算之前已经接受的任务也会转移到别的节点上。
 

//再次修改为active状态(及将下线的节点再次上线)
[root@along ~]# docker node update --availability active kbsonlong
kbsonlong
[root@along ~]# docker node list
ID                           HOSTNAME     STATUS  AVAILABILITY  MANAGER STATUS
4cejtuairtof6d0wjq88merwb *  along.party  Ready   Active        Leader
9388mi6e3fnk9l70g24cljhr5    kbsonlong    Ready   Active        
[root@along ~]#

 

##关于Swarm更多的命令行操作,请查看《Docker管理工具-Swarm部署记录

 

三、Swarm 的Web管理(PortainerShipyard、Docerkui)

1、Portainer安装

# docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
-d 参数以detach方式运行
-p 将容器工作端口映射至物理机端口 HOST端口:容器端口
-v 将容器目录挂载(映射)到物理机对应位置,这里指定通讯方式为sock
portainer/portainer 为镜像名称

portainner 也支持用TCP通讯,启动命令
# docker run -d -p 9000:9000 portainer/portainer -H tcp://<REMOTE_HOST>:<REMOTE_PORT>

 

image

image

image

image

image

image

image

image

image

image

image

image

优点
  1. 支持容器管理、镜像管理
  2. 轻量级,消耗资源少
  3. 基于docker api,安全性高,可指定docker api端口,支持TLS证书认证。
  4. 支持权限分配
  5. 支持集群
缺点
  1. 功能不够强大。
  2. 容器创建后,无法通过后台增加端口。

 

 

2、Shipyard

一键安装脚本

curl -sSL https://shipyard-project.com/deploy | bash -s

注意:由于Shipyard使用shipyard-proxy代理容器,所以需要把docker配置的tcp 0.0.0.0:2375关闭

[root@kbsonlong ~]# docker ps -a |grep shi
7122d3f37464        shipyard/shipyard:latest       "/bin/controller --de"   About an hour ago   Up About an hour    0.0.0.0:8080->8080/tcp                           shipyard-controller
b350b117d76d        swarm:latest                   "/swarm j --addr 172."   About an hour ago   Up About an hour    2375/tcp                                         shipyard-swarm-agent
a7feb0759efe        swarm:latest                   "/swarm m --replicati"   About an hour ago   Up About an hour    2375/tcp                                         shipyard-swarm-manager
3e784b0b2140        shipyard/docker-proxy:latest   "/usr/local/bin/run"     About an hour ago   Up About an hour    0.0.0.0:2375->2375/tcp                           shipyard-proxy
49f9700f0811        alpine                         "sh"                     About an hour ago   Up About an hour                                                     shipyard-certs
7fe4c0e821c1        microbox/etcd:latest           "/bin/etcd -addr 172."   About an hour ago   Up About an hour    0.0.0.0:4001->4001/tcp, 0.0.0.0:7001->7001/tcp   shipyard-discovery
e3750c5de7e2        rethinkdb                      "rethinkdb --bind all"   About an hour ago   Up About an hour    8080/tcp, 28015/tcp, 29015/tcp                   shipyard-rethinkdb
[root@kbsonlong ~]#

可以看到启动了7个Shipyard相关的容器

1、shipyard-rethinkdb  :数据存放

2、shipyard-discovery :自动发现

3、shipyard-certs:认证

4、shipyard-proxy:代理

5、shipyard-swarm-manager: swarm管理节点

6、shipyard-swarm-agent: swarm 工作节点 work

7、shipyard-controller:shipyard控制台,即Web页面

 

 

2、添加Swarm work节点,使用Shipyard时添加Swarm节点有点不一样

curl -sSL https://shipyard-project.com/deploy | ACTION=node DISCOVERY=etcd://10.0.1.10:4001 bash -s

 

ACTION

This controls the action for the deployment. Available options are:

  • deploy: Deploy a new Shipyard instance
  • upgrade: Upgrade an existing instance (note: you will need to pass the same environment variables as when you deployed to keep the same configuration)
  • node: Add current Docker engine as a new Swarm node in the cluster
  • remove: Completely removes Shipyard

 

DISCOVERY自动发现

etcd://10.0.1.10:4001  管理节点上的自动发现服务

:8080">:8080">:8080">:8080">http://<server_ip>:8080  admin/shipyard

image

image

image

image

image

优点:
  1. 支持镜像管理、容器管理。
  2. 支持控制台命令
  3. 容器资源消耗监控
  4. 支持集群swarm,可以随意增加节点
  5. 支持控制用户管理权限,可以设置某个容器对某个用户只读、管理权限。
  6. 有汉化版
缺点
  1. 启动容器较多,占用每个节点的一部分资源,

创建的Swarm集群无法使用Swarm service功能

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值