惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
小众软件
小众软件
J
Java Code Geeks
I
InfoQ
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
腾讯CDC
L
LangChain Blog
博客园 - 司徒正美
量子位
Y
Y Combinator Blog
C
Check Point Blog
T
Tailwind CSS Blog
D
DataBreaches.Net
Blog — PlanetScale
Blog — PlanetScale
N
Netflix TechBlog - Medium
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
A
About on SuperTechFans
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
大猫的无限游戏
大猫的无限游戏
V
V2EX
阮一峰的网络日志
阮一峰的网络日志

lvbibir's Blog

shell | 磁盘空间分析脚本 Linux cat 和 tee 命令写入文件 python | 使用 uv 管理你的 python 环境 Claude Code 完整配置指南 windows | mihomo 内核独立部署指南 linux | 磁盘扩容 wsl | 释放长久运行占用的磁盘空间 mysql | 线程上限问题处理 麒麟 7.6 安装谷歌 OTP 认证模块 suse 12sp5 升级 openssh 及 openssl suse 12sp5 部署 mysql 5.7 《谁的青春不迷茫》 docker | centos7 部署 docker vim | 基础配置和使用 windows | rime 输入法 & 雾凇方案 shell | sshpass 批量传输文件及执行命令 wsl | 原生 linux 方式安装 docker nodejs | fnm + pnpm 开发环境配置 wsl | 安装配置 miniconda 虚拟环境 wsl | 自动更新系统代理 wsl | bashrc 环境变量不正确加载的处理方法 wsl | win10 安装 wsl2 troubleshooting | ssh 成功但是 scp 失败 linux | 常用命令总结 docker 部署 piclist shell | 检测网站存活并自动钉钉告警 Zabbix | 监控端口连通性并自动追踪 TCP 路由 windows | 自定义开机快速启动项 windows | miniconda 配置 python 虚拟环境 Zabbix | 监控主机到指定 ip 的流量大小
docker | 三剑客之 swarm
lvbibir · 2019-08-01 · via lvbibir's Blog

0 前言

本文参考以下链接:

1 部署

1.1 环境准备

  1. 准备 3 台 Ubuntu 系统主机 (即用于搭建集群的 3 个 Docker 机器),每台机器上都需要安装 Docker 并且可以连接网络,同时要求 Docker 版本必须是 1.12 及以上,因为老版本不支持 Docker Swarm
  2. 集群管理节点 Docker 机器的 IP 地址必须固定,集群中所有节点都能够访问该管理节点。
  3. 集群节点之间必须使用相应的协议并保证其以下端口可用:
    • 用于集群管理通信的 TCP 端口 2377;
    • TCP 和 UDP 端口 7946,用于节点间的通信;
    • UDP 端口 4789,用于覆盖网络流量

为了进行本实例演示,此处按照要求安装了 3 台使用 centos7.4 系统的机器,这三台机器的主机名称分别为 manager1(作为管理节点),worker1(作为工作节点),worker2(作为工作节点),其 IP 地址分别如下:

主机名 IP 地址
manager 192.168.0.101
worker-1 192.168.0.102
worker-2 192.168.0.103

1.2 创建集群

在 manager 上创建 swarm 集群

[root@node-1 ~]# docker swarm init --advertise-addr 192.168.0.101

使用 docker node ls 查看集群节点信息

[root@manager ~]# docker node ls

在这里插入图片描述

1.3 添加工作节点

在 worker1 和 worker2 中执行,加入 swarm 集群

docker swarm join --token SWMTKN-1-2zhqxsklcroivbpjzzntn5snsim79o5z7xzj4hzexk9phsz68q-d0seaxjgxpjebk8fdqt6d6yz5 192.168.0.101:2377

在这里插入图片描述

在这里插入图片描述

在管理节点上,使用 docker node ls 查看集群节点信息

[root@manager ~]# docker node ls

在这里插入图片描述

1.4 部署服务

在向 docker swarm 集群中部署服务时,既可以使用 docker hub 上自带的镜像来启动服务,也可以自己通过 dockerfile 的镜像来启动服务,如果使用自己的 dockerfile 构建的镜像来启动服务,那么必须先将镜像推送到 docker hub 中心仓库

这里,我们使用 docker hub 上自带的 alpine 镜像为例来部署集群服务

[root@manager ~]# docker service create --replicas 1 --name helloworld alpine ping docker.com

在这里插入图片描述

1.5 查看服务

当服务部署完成后,在管理节点上可以通过 docker service ls 查看当前集群中的服务列表信息

[root@manager ~]# docker service ls

在这里插入图片描述

使用 docker service inspect 查看部署的服务具体详情

[root@manager ~]# docker service inspect helloworl

使用 docker service ps 查看指定服务在集群节点上的分配和运行情况

[root@manager ~]# docker service ps helloworld

在这里插入图片描述

1.6 更改副本数量

在集群中部署的服务,如果只运行一个副本,就无法体现出集群的优势,并且一旦该机器或副本崩溃,该服务将无法访问,所以通常一个服务会启动多个副本

[root@manager ~]# docker service scale helloworld=5

在这里插入图片描述

更改完成后,就可以谈过 docker service ps 查看这五个服务副本在 3 个节点上的具体分布和运行情况

[root@manager ~]# docker service ps helloworld

在这里插入图片描述

1.7 删除服务

对于不需要的服务,我们可以进行删除

[root@manager ~]# docker service rm helloworld

1.8 访问服务

在管理节点上,执行 docker network ls 查看网络列表

[root@manager ~]# docker network ls

在这里插入图片描述

在管理节点上,创建 overlay 网络

[root@manager ~]# docker network create -d overlay ov_net

在管理节点上,再次部署服务

[root@manager ~]# docker service  create --network ov_net --name my-web --publish 8080:80 --replicas 2 nginx

在这里插入图片描述

访问 nginx 服务

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

以上