基于Docker的swarm集群部署
程序员文章站
2024-03-01 13:51:34
...
一、环境:
vm1 manager
vm2/vm3 node1/node2
二、swarm集群搭建
创建swarm manager
[[email protected] docker]# systemctl start docker
[[email protected] docker]# docker load <swarm.tar
[[email protected] docker]# docker swarm init --advertise-addr 172.25.79.11
Swarm initialized: current node (fpfznpjxzaanovzsvucxxfhnb) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-4duz28idog1wc1ylc7k6d8zoia4h9ut6n5vz15a7avwtynayy6-79vwi03wx9a5oh6etlrnimqdu \
172.25.79.11:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
[[email protected] docker]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
fpfznpjxzaanovzsvucxxfhnb * vm1 Ready Active Leader
[[email protected] docker]# docker swarm join --token SWMTKN-1-4duz28idog1wc1ylc7k6d8zoia4h9ut6n5vz15a7avwtynayy6-79vwi03wx9a5oh6etlrnimqdu 172.25.79.11:2377
This node joined a swarm as a worker.
[[email protected] docker]# docker swarm join --token SWMTKN-1-4duz28idog1wc1ylc7k6d8zoia4h9ut6n5vz15a7avwtynayy6-79vwi03wx9a5oh6etlrnimqdu 172.25.79.11:2377
This node joined a swarm as a worker.
为集群添加节点
[[email protected] docker]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
3jon2hx1frkna8obyv5h1u54f vm2 Ready Active
fpfznpjxzaanovzsvucxxfhnb * vm1 Ready Active Leader
qzf7jgabj5u2l0medr89w03xq vm3 Ready Active
给节点开启防火墙策略
[root@vm2 docker]# systemctl start firewalld
[root@vm2 docker]# firewall-cmd --add-port 2377/tcp --permanent
success ##集群的管理端口
[root@vm2 docker]# firewall-cmd --add-port 7946/tcp --permanent
success ##节点之间的通讯端口
[root@vm2 docker]# firewall-cmd --add-port 4789/udp --permanent
success ##网络overlay的udp端口
[root@vm2 docker]# firewall-cmd --reload
success
[root@vm3 docker]# systemctl start firewalld
[root@vm3 docker]# firewall-cmd --add-port 2377/tcp --permanent
success
[root@vm3 docker]# firewall-cmd --add-port 7946/tcp --permanent
success
[root@vm3 docker]# firewall-cmd --add-port 4789/udp --permanent
success
[root@vm3 docker]# firewall-cmd --reload
success
[root@vm3 docker]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports: 7946/tcp 2377/tcp 4789/udp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
三、集群的nginx web部署
##联网下载nginx镜像
[[email protected] mnt]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
Digest: sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424
Status: Image is up to date for nginx:latest
[[email protected] mnt]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
Digest: sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424
Status: Image is up to date for nginx:latest
创建nginx集群服务,服务命名为webserver
[root@vm1 mnt]# docker service create --name webserver nginx
[root@vm1 mnt]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
fpfznpjxzaanovzsvucxxfhnb * vm1 Ready Active Leader
[root@vm1 mnt]# docker service ps webserver
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
kwqrnf6c17oh webserver.1 nginx:latest vm3 Running Running 39 seconds ago
docker的集群规模控制
[[email protected] mnt]# docker service scale webserver=3
webserver scaled to 3
[[email protected] mnt]# docker service ps webserver
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
kwqrnf6c17oh webserver.1 nginx:latest vm3 Running Running about a minute ago
dgcok6p3y6yg webserver.2 nginx:latest vm1 Running Running less than a second ago
p47udwopzdo2 webserver.3 nginx:latest vm2 Running Running less than a second ago
当vm1宕机时,swarm服务可以做自动迁移。
[[email protected] mnt]# docker node update --availability drain vm1
vm1
[[email protected] mnt]# docker service ps webserver
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
kwqrnf6c17oh webserver.1 nginx:latest vm3 Running Running 7 minutes ago
o9rn76zqm9lj webserver.2 nginx:latest vm2 Running Running 6 seconds ago
dgcok6p3y6yg \_ webserver.2 nginx:latest vm1 Shutdown Shutdown 34 seconds ago
zai9s6k3g23z webserver.3 nginx:latest vm2 Running Running 6 seconds ago
当vm2宕机时,vm3接管vm2的服务
[[email protected] mnt]# systemctl stop docker
[[email protected] mnt]# docker service ps webserver
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
kwqrnf6c17oh webserver.1 nginx:latest vm3 Running Running 7 minutes ago ##webserver.1由vm3接管
f0lcc0wnt8li webserver.2 nginx:latest vm3 Running Running 46 seconds ago
o9rn76zqm9lj \_ webserver.2 nginx:latest vm2 Shutdown Running about a minute ago
dgcok6p3y6yg \_ webserver.2 nginx:latest vm1 Shutdown Shutdown about a minute ago
mhrqub8p8uzn webserver.3 nginx:latest vm3 Running Running 46 seconds ago
zai9s6k3g23z \_ webserver.3 nginx:latest vm2 Shutdown Running about a minute ago
遇到的问题:
[root@vm1 docker]# docker service ps webserver
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
qygsjxpkd008 webserver.1 nginx vm1 Running Running 2 minutes ago
p717xdtel2nw \_ webserver.1 nginx vm2 Shutdown Rejected 2 minutes ago "No such image: nginx:latest"
v3cgi34qc7k7 \_ webserver.1 nginx vm3 Shutdown Rejected 2 minutes ago "No such image: nginx:latest"
查看digest
[[email protected] docker]# docker images --digests
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
nginx latest <none> af4b3d7d5401 2 years ago 190 MB
swarm latest <none> a44ce04d6d59 2 years ago
##获取到digest方可使用
[root@vm2 mnt]# docker pull nginx
[root@vm2 mnt]# docker images --digests
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
nginx latest sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424 c82521676580 3 weeks ago 109 MB
swarm latest <none> a44ce04d6d59 2 years ago 18.1 MB
推荐阅读
-
基于Docker的swarm集群部署
-
基于Docker Swarm的JStorm集群实践
-
使用docker创建swarm集群网络
-
Spring Boot和Docker实现微服务部署的方法
-
详解简单基于spring的redis配置(单机和集群模式)
-
基于tomcat插件的maven多模块工程热部署(附插件源码) 博客分类: java tomcat插件maven多模块热部署
-
Spark --最全的安装部署 local本地模式spark安装 spark--standalone集群安装 spark-HA高可用安装 spark on yarn安装
-
Spring Boot和Docker实现微服务部署的方法
-
Docker docker部署以及运行你的第一个容器
-
Springboot基于assembly的服务化打包方案及spring boot部署方式