Docker Swarm
购买服务器
4 台服务器 1核2G
到此,服务器购买完毕!1主3从
4台机器安装 Docker
还我们单机安装一样
技巧:xshell 直接同步操作,省时间
工作模式
搭建集群
私网、公网
172.24.82.149 用自己的网络地址
初始化节点 :docker swarm init
加入一个节点:docker swarm join
# 获取令牌
docker swarm join-token manager
docker swarm join-token worker
把后面的节点都搭建进去
小结
1、生成主节点 init
2、加入(管理者、worker)
Raft 协议
双主双从:假设一个节点挂了,其他节点是否可用?
Ratf协议:保证大多数节点存活才可以用。 只要 >1,集群至少大于3台。
实验
1、将docker1机器停止。宕机,双主,另外一个主节点也不能使用了。
systemctl stop docker
2、可以将其他节点离开
3、work就是工作的,管理命令只能在管理节点操作。3台机器设置为管理节点
十分简单:集群,可用!3个主节点 。 > 1个管理节点存活
Raft 协议:保证大多数节点存活,才可以使用,高可用!
体会
弹性 扩容 集群
以后告别 docker run
docker-compose up 启动一个项目,单机
集群:swarm docker service
容器 -> 服务
容器 -> 服务 -> 副本
redis 服务 -> 10个副本(同时开启10个redis容器)
体验:创建服务、动态扩展服务、动态更新服务
灰度发布:金丝雀发布
docker run # 容器启动,不具有扩缩容器的功能
docker service # 服务,具有扩缩容器,滚动更新
查看服务 REPLICAS
动态扩缩容
服务,集群中任意的节点都可以访问,服务可以有多个副本动态扩缩容实现高可用!
移除
docker swarm 其实并不难
只要会搭建集群、会启动服务、动态管理容器就可以了
概念总结
swarm
集群的管理和编号。docker可以初始化一个 swarm 集群,其他节点可以加入。(管理、工作者)
Node
就是一个 docker 节点,多个节点就组成了一个网络集群。(管理、工作者)
service
任务,可以在管理节点和工作节点来运行,核心。用户访问
Task
容器内的命令,细节任务
逻辑是不变的。
命令 -> 管理 -> api -> 调度 -> 工作节点 (创建 Task 容器维护创建)
Docker Stack
docker-compose 单机部署项目
Docker Stack部署,集群部署!
# 单机
docker-compose up -d wordpress.yaml
# 集群
docker stack deploy wordpress.yaml
Docker Secret
安全!配置密码,证书
Docker Config
配置