Docker Swarm(创建swarm集群,节点的升级降级,滚动更新,Portainer)

Docker Swarm是一个Dockerized化的分布式应用程序的本地集群,它是在Machine所提供的功能的基础上优化主机资源的利用率和容错服务。具体来说,Docker Swarm支持用户创建可运行Docker Daemon的主机资源池,然后在资源池中运行Docker容器。Docker Swarm可以管理工作负载并维护集群状态。

1.创建 Swarm 集群

初始化集群:

docker swarm init

在这里插入图片描述
执行上图提示,在其他docker节点上执行命令,节点作为一个worker会添加进swam

docker swarm join --token SWMTKN-1-4owwqn5j0u0k1bqxgozn3p1glcvmo7yl33w700xswc2293eiw0-dn40jytlvqqpw5zo5udbdgbzg 172.25.10.1:2377

在这里插入图片描述

在这里插入图片描述

查看swam 集群节点(server1 作为leader,)

docker node ls

在这里插入图片描述

2.部署swam监控

查看官方文档帮助
https://github.com/dockersamples/docker-swarm-visualizer

 docker pull dockersamples/visualizer
 docker tag dockersamples/visualizer:latest visualizer:latest
docker service create \
--name=viz \
--publish=8080:8080/tcp \
--constraint=node.role==manager \
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
dockersamples/visualizer

3.节点的降级升级

在这里插入图片描述
在这里插入图片描述

4.删除节点

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5. 私有仓库的结合

1.加速文件(server2,3,4)

[root@server2 docker]# cat daemon.json 
{
  "registry-mirrors": ["https://reg.westos.org"]
}

2.拷贝证书
[root@server2 docker]# scp -r certs.d/ server4:/etc/docker/
3.每个节点有解析

[root@server2 docker]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.10.250 localhost.localdomain
172.25.10.1   server1 reg.westos.org
172.25.10.2   server2
172.25.10.3   server3
172.25.10.4   server4
127.0.1.1 server2

[root@server1 harbor]# ./install.sh --with-chartmuseum
使用server1中搭建的habor仓库

在这里插入图片描述
测试
在节点处就可以直接在私有仓库中拉取镜像,速度快
在这里插入图片描述

当有了私有仓库之后,部署速度提升
自动部署

在这里插入图片描述
在这里插入图片描述

发现问题:
自动拉取镜像的时候,tag是none: 为了在仓库中更新(始终找最新版本)

在这里插入图片描述

6.滚动更新

节点扩容

[root@server2 ~]# docker service scale my_web=10

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

滚动更新镜像版本

每个多长时间,每次几个,直到更新所有

docker service update --image myapp:v2 --update-parallelism 2 --update-delay 5s my_web
注释
--image 指定要更新的镜像
-update-parallelism 指定最大同步更新的任务数
--update-delay 指定更新间隔

在这里插入图片描述更新myapp镜像,每次两个,间隔5S,直至更新完所有

在这里插入图片描述

在这里插入图片描述

从仓库中找最新版本的镜像
在这里插入图片描述

删除服务

在这里插入图片描述

7. 编写compose文件部署服务:stack 替换了compose

https://docs.docker.com/compose/compose-file/compose-file-v3/ 官方文档查看帮助

将监控镜像也放在仓库中

[root@server2 compose]# pwd
/root/compose    ###建立一个单独的compose目录
[root@server2 compose]# ls
docker-compose.yml
[root@server2 compose]# cat docker-compose.yml 
version: '3.9'
services:

  web:
    image: myapp:v1   ##直接改镜像版本,可实现滚动更新
    networks:
      - mynet 
    deploy:
      replicas: 2     ##负载个数
      update_config: 
        parallelism: 2  #每次更新个数
        delay: 10s    #更新时间间隔
      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:
  mynet:

docker stack deploy -c docker-compose.yml my_cluster 部署 -c 指定compose文件 my_cluster名字
在这里插入图片描述

在这里插入图片描述

删除:docker stack rm my_cluster

8.可视化容器管理工具 Portainer的结合

将所需镜像放在habor仓库中
可以直接在github上下载
在这里插入图片描述

下载portainer-agent-stack.yml文件,修改

[root@server3 compose]# cat portainer-agent-stack.yml 
version: '3.2'

services:
  agent:
    image: agent    ####需要修改镜像的名字
    environment:
      # REQUIRED: Should be equal to the service name prefixed by "tasks." when
      # deployed inside an overlay network
      AGENT_CLUSTER_ADDR: tasks.agent
      # AGENT_PORT: 9001
      # LOG_LEVEL: debug
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes
    networks:
      - agent_network
    deploy:
      mode: global
      placement:
        constraints: [node.platform.os == linux]

  portainer:
    image: portainer
    command: -H tcp://tasks.agent:9001 --tlsskipverify
    ports:
      - "9000:9000"
    volumes:
      - portainer_data:/data
    networks:
      - agent_network
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == manager]

networks:
  agent_network:
    driver: overlay
    attachable: true

volumes:
  portainer_data:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
待更新

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Docker Swarm和Docker Compose来创建Zookeeper集群。以下是一个简单的步骤: 1. 创建一个Docker Compose文件,用于定义Zookeeper集群中的服务和配置。例如,可以创建一个名为docker-compose.yml的文件,其中包含以下内容: ``` version: '3' services: zoo1: image: zookeeper restart: always hostname: zoo1 environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 ports: - "2181:2181" - "2888:2888" - "3888:3888" volumes: - ./data/zoo1:/data - ./logs/zoo1:/datalog zoo2: image: zookeeper restart: always hostname: zoo2 environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 ports: - "2182:2181" - "2889:2888" - "3889:3888" volumes: - ./data/zoo2:/data - ./logs/zoo2:/datalog zoo3: image: zookeeper restart: always hostname: zoo3 environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 ports: - "2183:2181" - "2890:2888" - "3890:3888" volumes: - ./data/zoo3:/data - ./logs/zoo3:/datalog ``` 该文件定义了三个Zookeeper实例(zoo1、zoo2和zoo3),每个实例都有自己的ID和端口映射。 2. 使用Docker Swarm启动Zookeeper集群。首先,需要初始化Swarm: ``` docker swarm init ``` 然后,使用以下命令在Swarm中部署Zookeeper集群: ``` docker stack deploy -c docker-compose.yml zookeeper ``` 这将在Swarm中启动三个Zookeeper实例,并配置它们以形成一个集群。 3. 验证集群是否正常工作。可以使用以下命令查看Zookeeper集群的状态: ``` docker exec -it $(docker ps -q -f name=zookeeper_zoo1) /bin/bash zkServer.sh status ``` 该命令将连接到Zookeeper集群中的一个实例(这里是zoo1),并显示集群的状态信息。 这样就可以使用Docker Swarm和Docker Compose创建一个Zookeeper集群。需要注意的是,这仅是一个简单的示例,实际部署可能需要进行更多的配置和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值