企业入门实战- - docker三剑客之swarm

企业入门实战- - docker三剑客之swarm

一.Docker Swarm 简介

Swarm 是 Docker 官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主机抽象为一个整体,并且通过一个入口统一管理这些 Docker 主机上的各种 Docker 资源。

Swarm 和 Kubernetes 比较类似,但是更加轻,具有的功能也较 kubernetes 更少一些。

Docker Swarm 包含两方面:一个企业级的 Docker 安全集群,以及一个微服务应用编排引擎。

集群方面,Swarm 将一个或多个 Docker 节点组织起来,使得用户能够以集群方式管理它们。

Swarm 默认内置有加密的分布式集群存储(encrypted distributed cluster store)、加密网络(Encrypted Network)、公用TLS(Mutual TLS)、安全集群接入令牌 Secure Cluster Join Token)以及一套简化数字证书管理的 PKI(Public Key Infrastructure)。我们可以自如地添加或删除节点。

编排方面,Swarm 提供了一套丰富的 API 使得部署和管理复杂的微服务应用变得易如反掌。通过将应用定义在声明式配置文件中,就可以使用原生的 Docker 命令完成部署。

此外,甚至还可以执行滚动升级、回滚以及扩缩容操作,同样基于简单的命令即可完成

二.Docker Swarm建立集群

[root@server1 harbor]# docker-compose up -d
传相应文件使得server2、34可以访问仓库
[root@server1 ~]# cd /etc/docker/
[root@server1 docker]# scp -r certs.d/ server2:/etc/docker/
[root@server1 docker]# scp -r certs.d/ server3:/etc/docker/
[root@server1 docker]# scp -r certs.d/ server4:/etc/docker/

[root@server1 ~]# cd /etc/sysctl.d/
[root@server1 sysctl.d]# scp docker.conf server2:/etc/sysctl.d/
[root@server1 sysctl.d]# scp docker.conf server3:/etc/sysctl.d/
[root@server1 sysctl.d]# scp docker.conf server4:/etc/sysctl.d/

server2、34重启
[root@server2 ~]# systemctl reload docker
[root@server2 ~]# sysctl  --system

在这里插入图片描述
在这里插入图片描述
server1上搭建harbor仓库
server1将监控镜像上传至仓库,方便server2使用。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

初始化集群

[ root@ server2~]# docker swarm init Swarm initialized: current node (5evedjlbhwrrtietpelm39jpq) is now a manager.
To add a worker to this swarm, run the following command: docker swarm join--token SWTKN-1-3z1761743cb555tzlpm6ail5ikn4okr421906xo8k1y4lo2ua2-3m2y55awqlb7dec8
et60nf2u 172.25.5.2:23771
To add a manager to this swarm, run ' docker swarm join-token manager' and follow the instructions.

在这里插入图片描述
server3、server4执行下列命令即可加入集群

docker swarm join --token SWMTKN-1-0vack7no2k2g5755sjalrlfc24cun449ocxglhkxmhutw3w1kj-8vp67zo0n3eb7jfz592pstbea 172.25.5.2:2377

在这里插入图片描述
在这里插入图片描述
查看swarm集群节点

[root@server2 ~]# docker node ls

在这里插入图片描述

[root@server2 ~]# docker service create --name webservice --publish 80:80 --replicas 3 myapp:v1

在这里插入图片描述
进行curl172.25.15.2/hostname.html
在这里插入图片描述
集群拉伸

docker service scale webservice=6
docker service ls webservice


在这里插入图片描述

在这里插入图片描述
进行curl172.25.15.2/hostname.html
在这里插入图片描述

三.部署swarm监控

[root@server1 ~]# docker load -i visualizer.tar 
[root@server1 ~]# docker tag dockersamples/visualizer:latest reg.westos.org/library/visualizer:latest 
[root@server1 ~]# docker push  reg.westos.org/library/visualizer:latest 

server2先停掉之前的webservice

[root@server2 ~]# docker service rm webservice

编写.yml文件

[root@server2 ~]# vim docker-compose.yml
version: "3.8"
services:
  web:
    image: myapp:v1
    ports:
      - "80:80"
    networks:
      - webnet
    deploy:
      replicas: 6
      update_config:
        parallelism: 20
        delay: 5s
      restart_policy:
        condition: on-failure

  visualizer:
    image: visualizer:latest
    ports:
      - "8080:8080"
    stop_grace_period: 1m30s
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints:
          - "node.role==manager"

networks:
  webnet:

在这里插入图片描述
执行
在这里插入图片描述
查看集群状态
在这里插入图片描述
浏览器访问172.25.5.2:8080,进入监控界面
在这里插入图片描述
图形化集群管理
server1创建仓库portainer并设置为公开
在这里插入图片描述

[root@server1 ~]# cd portainer/
[root@server1 portainer]# ls
portainer-agent-stack.yml  portainer-agent.tar  portainer.tar

[root@server1 portainer]# docker load -i portainer-agent.tar #加载镜像
[root@server1 portainer]# docker load -i portainer.tar  #加载镜像
[root@server1 portainer]# docker tag portainer/agent:latest reg.westos.org/portainer/agent:latest  #修改标签 
[root@server1 portainer]# docker tag portainer/portainer:latest reg.westos.org/portainer/portainer:latest
[root@server1 portainer]# docker push reg.westos.org/portainer/agent:latest #上传仓库
[root@server1 portainer]# docker push reg.westos.org/portainer/portainer:latest

在这里插入图片描述
server2

[root@server2 ~]# cd portainer/
[root@server2 portainer]# docker stack deploy -c portainer-agent-stack.yml portainer

[root@server2 portainer]# docker service ls
ID                  NAME                   MODE                REPLICAS            IMAGE                        PORTS
ozwx24nlt83s        mycluster_visualizer   replicated          1/1                 visualizer:latest            *:8080->8080/tcp
wl0f72lvddc6        mycluster_web          replicated          60/60               myapp:v1                     *:80->80/tcp
9fnnag1e5lfg        portainer_agent        global              3/3                 portainer/agent:latest       
eku69kc08d4w        portainer_portainer    replicated          1/1                 portainer/portainer:latest   *:9000->9000/tcp

浏览器访问172.25.5.2:9000
输入自己创建的id及密码登陆,显示如下
在这里插入图片描述
修改仓库为自己的默认仓库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值