swarm上手实操-swarm管理docker的web(nginx)集群

swarm管理的docker集群

和k8s一样是管理docker的工具,自带负载均衡和高可用性能

前期规划:

manager:192.168.0.34

worker:192.168.0.39 192.168.0.44 192.168.0.45

在manager上创建Swarm集群

[root@swarm-manager ~]# docker swarm init --advertise-addr 192.168.0.34
Swarm initialized: current node (srddq2lf5q54idhwx4y5sw20c) is now a manager.

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

    docker swarm join \
    --token SWMTKN-1-06ddfc5cukwjmk88td658nr5nezq0vngf4662za0g6t3uzop1j-ai9mbq1c8acs9coxm5shzakm9 \
    192.168.0.34:2377

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

把worker加入集群,在worker上操作

[root@swarm-worker1 ~]# docker swarm join \
>     --token SWMTKN-1-06ddfc5cukwjmk88td658nr5nezq0vngf4662za0g6t3uzop1j-ai9mbq1c8acs9coxm5shzakm9 \
>     192.168.0.34:2377
This node joined a swarm as a worker.

[root@swarm-worker2 ~]# docker swarm join \
>     --token SWMTKN-1-06ddfc5cukwjmk88td658nr5nezq0vngf4662za0g6t3uzop1j-ai9mbq1c8acs9coxm5shzakm9 \
>     192.168.0.34:2377
This node joined a swarm as a worker.

[root@swarm-worker3 ~]# docker swarm join \
>     --token SWMTKN-1-06ddfc5cukwjmk88td658nr5nezq0vngf4662za0g6t3uzop1j-ai9mbq1c8acs9coxm5shzakm9 \
>     192.168.0.34:2377
This node joined a swarm as a worker.

在manager上查看节点信息

[root@swarm-manager ~]# docker node ls
ID                           HOSTNAME   STATUS  AVAILABILITY  MANAGER STATUS
64rrurxm26pl7y1jvwocmqofn    db-slave   Ready   Active
nhttqvh8b961kvq9rpntcg48f    db-slave   Ready   Active
srddq2lf5q54idhwx4y5sw20c *  db-master  Ready   Active        Leader
sszb8hdctni1emgxvlznorbw2    db-slave   Ready   Active

在manager上创建网络

[root@swarm-manager ~]# docker network create -d overlay nginx_net
l2ed7k1o4s9f5grr0kkrk49pk

[root@swarm-manager ~]# docker network ls | grep nginx_net
l2ed7k1o4s9f        nginx_net           overlay             swarm

在master创建服务

[root@swarm-manager ~]# docker service create --replicas 1 --network nginx_net --name tzk_nginx -p 80:80 nginx
t1y1ye7e22ewit9i9g0qmqvje
[root@swarm-manager ~]# docker service ls
ID            NAME       MODE        REPLICAS  IMAGE
t1y1ye7e22ew  tzk_nginx  replicated  1/1       nginx:latest
[root@swarm-manager ~]# docker service ps tzk_nginx
ID            NAME         IMAGE         NODE           DESIRED STATE  CURRENT STATE          ERROR  PORTS
2mymixr2q1e7  tzk_nginx.1  nginx:latest  swarm-manager  Running        Running 5 minutes ago

扩充到5个副本

[root@swarm-manager ~]# docker service scale tzk_nginx=5
tzk_nginx scaled to 5
[root@swarm-manager ~]# docker service ps tzk_nginx
ID            NAME         IMAGE         NODE           DESIRED STATE  CURRENT STATE                                                                                                            ERROR  PORTS
2mymixr2q1e7  tzk_nginx.1  nginx:latest  swarm-manager  Running        Running 6 minutes a                                                                                                go
grrqksoek384  tzk_nginx.2  nginx:latest  swarm-worker3  Running        Preparing 9 seconds                                                                                                 ago
1r6f71m6s9ip  tzk_nginx.3  nginx:latest  swarm-worker3  Running        Preparing 9 seconds                                                                                                 ago
0avpc3sbbde6  tzk_nginx.4  nginx:latest  swam-worker1   Running        Preparing 9 seconds                                                                                                 ago
a0x75jax93w3  tzk_nginx.5  nginx:latest  swarm-worker2  Running        Preparing 9 seconds                                                                                                 ago

尝试宕机一台worker节点机器,查看高可用效果 ==》sawam-worker2的服务转移到manager上(swarm的负载均衡会把请求路由到一个任意节点的可用的容器上,随机转移到master和另外sawam-worker1、sawam-worker3上)

[root@swarm-manager ~]# docker service scale tzk_nginx=5
tzk_nginx scaled to 5

[root@swarm-manager ~]# docker service ps tzk_nginx
ID            NAME             IMAGE         NODE           DESIRED STATE  CURRENT STATE            ERROR                             PORTS
2mymixr2q1e7  tzk_nginx.1      nginx:latest  swarm-manager  Running        Running 41 minutes ago
grrqksoek384  tzk_nginx.2      nginx:latest  swarm-worker3  Running        Running 34 minutes ago
1r6f71m6s9ip  tzk_nginx.3      nginx:latest  swarm-worker3  Running        Running 34 minutes ago
0avpc3sbbde6  tzk_nginx.4      nginx:latest  swam-worker1   Running        Running 34 minutes ago
crq0v8axeov8  tzk_nginx.5      nginx:latest  swarm-manager  Running        Running 3 seconds ago
647qcrb35m5d   \_ tzk_nginx.5  nginx:latest  swarm-worker2  Shutdown       Running 22 seconds ago
a0x75jax93w3   \_ tzk_nginx.5  nginx:latest  swarm-worker2  Shutdown       Rejected 35 minutes ago  "No such image: nginx@sha256:b…"

把swarm-worker2的docker服务又起来之后,把manager上的tzk_nginx.5.crq0v8axeov885kqc0ztu7jod停掉,这个task又回到swarm-worker2上

[root@swarm-manager ~]# docker stop tzk_nginx.5.crq0v8axeov885kqc0ztu7jod
tzk_nginx.5.crq0v8axeov885kqc0ztu7jod
[root@swarm-manager ~]# docker service ps tzk_nginx
ID            NAME             IMAGE         NODE           DESIRED STATE  CURRENT STATE            ERROR                             PORTS
2mymixr2q1e7  tzk_nginx.1      nginx:latest  swarm-manager  Running        Running 58 minutes ago
grrqksoek384  tzk_nginx.2      nginx:latest  swarm-worker3  Running        Running 50 minutes ago
1r6f71m6s9ip  tzk_nginx.3      nginx:latest  swarm-worker3  Running        Running 50 minutes ago
0avpc3sbbde6  tzk_nginx.4      nginx:latest  swam-worker1   Running        Running 51 minutes ago
oouh6fo5tohv  tzk_nginx.5      nginx:latest  swam-worker2   Running        Running 6 seconds ago

swarm的负载均衡

在manager上缩容到2个,curl 192.168.0.34,仍然有web服务效果

[root@swarm-manager ~]# docker service scale tzk_nginx=2
tzk_nginx scaled to 2
[root@swarm-manager ~]# docker service ps tzk_nginx
ID            NAME         IMAGE         NODE           DESIRED STATE  CURRENT STATE           ERROR  PORTS
pl93ys463v5n  tzk_nginx.1  nginx:latest  db-slave       Running        Running 29 minutes ago
sdezn4ltgsyp  tzk_nginx.6  nginx:latest  swarm-worker3  Running        Running 29 minutes ago
[root@swarm-manager ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@swarm-manager ~]# curl 192.168.0.34
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值