文章目录
- 概念
- AVAILABILITY 的三种状态 可用性
- MANAGER STATUS 的三种状态
- 操作命令
-
- docker node update --availability 修改节点可用性
- docker swarm leave 节点离开集群
- docker node rm 删除节点
- docker node promote/demote 升级降级节点
- docker service create 部署服务到集群
- 动态扩容两种方式
- docker service ps 查看服务部署情况
- docker service rm 删除服务
- docker service ps 查看服务部署情况
- docker service inspect 查看具体服务信息
- docker service update 滚动升级
- docker info 集群信息
- 上机实验
- 服务在提交之后不会发生动态调整
概念
Docker 集群化部署
概念的总结
swarm
集群的管理和编号,docker可以初始化一个swarm集群,其他结点可以加入。(管理,工作者)
Node
就是一个docker结点,多个结点就组成了一个网络集群(管理、工作者)
Service
任务,可以在管理结点或者工作结点来运行。核心,用户访问。
Task
容器内的命令、细节任务!
service
AVAILABILITY 的三种状态 可用性
- Active:调度器能够安排任务到该节点
- Pause:调度器不能够安排任务到该节点,但是已经存在的任务会继续运行
- Drain:调度器不能够安排任务到该节点,而且会停止已存在的任务,并将这些任务分配到其他 Active 状态的节点
MANAGER STATUS 的三种状态
- Leader:为群体做出所有群管理和编排决策的主要管理者节点
- Reachable:如果 Leader 节点变为不可用,该节点有资格被选举为新的 Leader
- Unavailable:该节点不能和其他 Manager 节点产生任何联系,这种情况下,应该添加一个新的 Manager 节点到集群,或者将一个 Worker 节点提升为 Manager 节点
升级降级
[升级] docker node promote WorkerA
[降级] docker node demote WorkerA
操作命令
docker node update --availability 修改节点可用性
- 使node不可调度:
docker node update --availability drain <node_name>
- 停止node:
docker node update --availability pause <node_name>
- 使node可调度:
docker node update --availability active <node_name>
docker swarm leave 节点离开集群
- 使当前work节点离开集群:
[root@iZ2zeeea01dfr0ijz61q5bZ ~]# docker swarm leave
Node left the swarm.
- leader/Reachable节点离开集群
[root@iZ2zeeea01dfr0ijz61q5cZ /]# docker swarm leave
Error response from daemon: You are attempting to leave the swarm on a node that is participating as a manager. Removing this node leaves 1 managers out of 2. Without a Raft quorum your swarm will be inaccessible. The only way to restore a swarm that has lost consensus is to reinitialize it with `--force-new-cluster`. Use `--force` to suppress this message.
- 为了删除leader或者Reachable节点我们可以先进行降级为Work节点之后进行离开集群
[升级] docker node promote WorkerA
[降级] docker node demote WorkerA
docker node rm 删除节点
- 删除node:
docker node rm <node-id>
删除节点
-f可以删除运行的工作节点,但是不能是主节点
docker node promote/demote 升级降级节点
[升级] docker node promote WorkerA
[降级] docker node demote WorkerA
docker service create 部署服务到集群
docker service create --replicas 1 --name redis --update-delay 10s redis:3.0.6
运行了三个nginx服务,被分配给了三个容器
[root@iZ2zeeea01dfr0ijz61q5cZ /]# docker service create -p 8080:80 --replicas 3 --name my-nginx nginx
nb0p3u573jvu8wcfruhp04ri6
overall progress: 3 out of 3 tasks
1/3: running [==================================================>]
2/3: running [==================================================>]
3/3: running [==================================================>]
verify: Service converged
每个服务器查询容器状况
[root@iZ2zeeea01dfr0ijz61q5bZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5ce1bc85f035 nginx:latest "/docker-entrypoint.…" 44 seconds ago Up 43 seconds 80/tcp my-nginx.1.s0q9r0qhb1yajsel1i20tdlum
[root@iZ2zeeea01dfr0ijz61q5aZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5ca14540ba74 nginx:latest "/docker-entrypoint.…" 48 seconds ago Up 46 seconds 80/tcp my-nginx.3.y9ddyamakd7411sgvhyl24nw2
[root@iZ2zeeea01dfr0ijz61q59Z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7baa823ebdc7 nginx:latest "/docker-entrypoint.…" About a minute ago Up 59 seconds 80/tcp my-nginx.2.wzp7a77pu4f2lu9fk38yme2ni
#5cZ是没有的
[root@iZ2zeeea01dfr0ijz61q5cZ /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
动态扩容两种方式
docker service scale my-nginx=5
docker service update --replicas 10 my-nginx
- 方式一:
docker service update --replicas 10 my-nginx
[root@iZ2zeeea01dfr0ijz61q5cZ /]# docker service update --replicas 10 my-nginx
my-nginx
overall progress: 10 out of 10 ta