Docker 集群Swarm创建和Swarm Web管理
来源:互联网 发布:数易生日计算法 编辑:程序博客网 时间:2024/05/16 09:21
关于Docker Swarm更多的介绍请查看《Docker管理工具-Swarm部署记录》
一、环境配置
1、安装环境
# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) # docker versionClient: Version: 1.12.3 API version: 1.24 Go version: go1.6.3 Git commit: 6b644ec Built: OS/Arch: linux/amd64Server: 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 anywhereChain 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 MASQUERADECOMMIT# 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 ACCEPTCOMMIT# 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 ExecStartExecStart=/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 imagesREPOSITORY TAG IMAGE ID CREATED SIZEdocker.io/swarm latest 36b1e23becab 4 months ago 15.85 MB
2、创建Swarm
# docker swarm init --advertise-addr 192.168.23.56:2377Swarm 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:2377To 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:2377This node joined a swarm as a worker.
4、查看集群节点
[root@along ~]# docker node listID HOSTNAME STATUS AVAILABILITY MANAGER STATUS4cejtuairtof6d0wjq88merwb * along.party Ready Active Leader9388mi6e3fnk9l70g24cljhr5 kbsonlong Ready Active
[root@along ~]# docker node listID HOSTNAME STATUS AVAILABILITY MANAGER STATUS4cejtuairtof6d0wjq88merwb * along.party Ready Active Leader9388mi6e3fnk9l70g24cljhr5 kbsonlong Ready Active //将kbsonlong 节点下线。如果要删除node1节点,命令是"docker node rm --force kbsonlong "[root@along ~]# docker node update --availability drain kbsonlong kbsonlong[root@along ~]# docker node listID HOSTNAME STATUS AVAILABILITY MANAGER STATUS4cejtuairtof6d0wjq88merwb * along.party Ready Active Leader9388mi6e3fnk9l70g24cljhr5 kbsonlong Ready Drain [root@along ~]#//可以看到kbsonlong节点状态变为Drain,那么该节点就不会接受task任务分发,就算之前已经接受的任务也会转移到别的节点上。 //再次修改为active状态(及将下线的节点再次上线)[root@along ~]# docker node update --availability active kbsonlongkbsonlong[root@along ~]# docker node listID HOSTNAME STATUS AVAILABILITY MANAGER STATUS4cejtuairtof6d0wjq88merwb * along.party Ready Active Leader9388mi6e3fnk9l70g24cljhr5 kbsonlong Ready Active [root@along ~]#
##关于Swarm更多的命令行操作,请查看《Docker管理工具-Swarm部署记录》
三、Swarm 的Web管理(Portainer、Shipyard、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 将容器目录挂载(映射)到物理机对应位置,这里指定通讯方式为sockportainer/portainer 为镜像名称portainner 也支持用TCP通讯,启动命令# docker run -d -p 9000:9000 portainer/portainer -H tcp://<REMOTE_HOST>:<REMOTE_PORT>
优点
- 支持容器管理、镜像管理
- 轻量级,消耗资源少
- 基于docker api,安全性高,可指定docker api端口,支持TLS证书认证。
- 支持权限分配
- 支持集群
缺点
- 功能不够强大。
- 容器创建后,无法通过后台增加端口。
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 shi7122d3f37464 shipyard/shipyard:latest "/bin/controller --de" About an hour ago Up About an hour 0.0.0.0:8080->8080/tcp shipyard-controllerb350b117d76d swarm:latest "/swarm j --addr 172." About an hour ago Up About an hour 2375/tcp shipyard-swarm-agenta7feb0759efe swarm:latest "/swarm m --replicati" About an hour ago Up About an hour 2375/tcp shipyard-swarm-manager3e784b0b2140 shipyard/docker-proxy:latest "/usr/local/bin/run" About an hour ago Up About an hour 0.0.0.0:2375->2375/tcp shipyard-proxy49f9700f0811 alpine "sh" About an hour ago Up About an hour shipyard-certs7fe4c0e821c1 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-discoverye3750c5de7e2 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 instanceupgrade
: 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 clusterremove
: Completely removes Shipyard
DISCOVERY自动发现
etcd://10.0.1.10:4001 管理节点上的自动发现服务
:8080">:8080">:8080">:8080">http://<server_ip>:8080 admin/shipyard
优点:
- 支持镜像管理、容器管理。
- 支持控制台命令
- 容器资源消耗监控
- 支持集群swarm,可以随意增加节点
- 支持控制用户管理权限,可以设置某个容器对某个用户只读、管理权限。
- 有汉化版
缺点
- 启动容器较多,占用每个节点的一部分资源,
创建的Swarm集群无法使用Swarm service功能
- Docker 集群Swarm创建和Swarm Web管理
- Docker Swarm 集群的创建与管理几篇好文章
- Docker Swarm 集群创建+Portainer 图形化管理实验
- Docker创建Docker Swarm集群节点
- Chapter 2 Swarm管理Docker集群
- Swarm创建docker集群:服务发现-etcd
- docker swarm集群搭建
- docker + swarm 集群
- Swarm搭建Docker集群
- Docker搭建Swarm集群
- docker swarm集群安装
- Swarm搭建Docker集群
- docker集群-----swarm
- Swarm+docker集群搭建
- Swarm -- 搭建Docker集群
- Swarm管理分布式docker
- 使用 Docker Toolbox 自动创建 Swarm 集群+Portainer 图形化管理的脚本
- docker swarm集群TLS配置
- CentOS 6 网络设置修改 指定IP地址 DNS 网关
- android studio 中如何找到R文件。
- JDK动态代理代理与Cglib代理原理探究
- HDOJ 1829 A Bug's Life (并查集)
- 窗体主控件Dock属性设置为Fill后,被工具条盖住了
- Docker 集群Swarm创建和Swarm Web管理
- JavaScript的DOM操作
- oracle数据库备份类型
- linux下VNC配置详解
- 在windows上传一个新的项目到GitHub上
- 直接插入排序升序,降序,去重排序
- Suse启动cron的方法
- 安卓解决ScrollView嵌套ListView显示不全、与ViewPager滑动冲突的3个类
- 详解Unix和Linux操作系统中Cron的用法