Docker Swarm集群

简介:Swarm是GO语言开发,通过把多个Docker Engine聚集在一起,形成一个大的Docker Engine,对外提供容器的集群服务,同时这个集群对外提供Swarm API(命令),用户可以像使用Docker Engine一样使用Docker集群。Swarm是容器管理工具,Docker管理工具还有Compose和Machine。

1、Swarm构成

  A. swarm集群由管理节点和工作节点构成;

  B. 管理节点:负责整个集群的管理工作包括集群配置,服务管理等所有跟集群有关的工作,其实就是一个调度器(scheduler)加路由器(router);

  C. 工作节点:是执行容器,Worker节点不参与 Raft分布式状态,不做出调度决策,也不为swarm模式 HTTP API 提供服务;

  D. 路由网格:路由网格使得Swam集群中的每个节点能够接受在Swarm集群中运行的任何服务中已发布端口上的连接,即使节点上没有任何任务正在运行, 路由网络将所有接入请求路由到可用节点上的已发布端口到活动容器中;

  E. 负载均衡:Swarm集群路由网络将请求路由到活动任务中,swarm调度程序将任务分派给不同的节点;

 

2、集群环境

  A.  准备安装docker引擎Centos系统的主机;

  B.  docker容器主机的IP地址固定,集群中所有工作节点必须能访问该管理节点;

  C.  集群管理节点必须使用Raft一致性协议并且保证端口可用,需要防火墙开放以下端口

    管理节点之间通讯:TCP,端口2377

    管理与工作或工作与工作节点之间通讯:TCP和UDP,端口7946

    覆盖型网络(docker overlay网络):UDP,端口4789  overlay驱动;

  D. 要保证集群的高可用,最少需要三台管理节点机器,最多容忍一台宕机,否则集群无法提供服务

rpc error: code = Unknown desc = The swarm does not have a leader. It's possible that too few managers are online. Make sure more than half of the managers are online.

 

3、搭建集群

  A.  创建管理节点:docker swarm init --advertise-addr 192.168.1.1;

  B.  创建工作节点:docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.1.1:2377,该处token是创建管理节点产生的;

    注意:如若报错,请记得关闭防火墙:systemctl stop firewalld;

  C. 查看集群节点信息:docker node ls;

  D.  查看集群信息:docker info;

  E.  部署服务到集群中:docker service create --replicas 1 --name helloworld alpine ping docker.com;

  F.  查看服务部署情况:docker service ps helloworld ;

  G.  修改服务副本:docker service scale helloworld=2;

  H.  删除服务:docker service rm helloworld;

  I. 查看加入worker的命令:docker swarm join-token worker;

  J. 查看加入manager的命令:docker swarm join-token manager;

  K.查看证书的限制时间:docker swarm ca | openssl x509 -noout -text;

  L. 离开集群:docker swarm leave。

 

4. portainer监控

  A. 发布端口:

 

 

  

可参考:容器技术Docker Swarm

     Docker Swarm深入浅出

 

posted @ 2020-06-06 13:45  如幻行云  阅读(339)  评论(0编辑  收藏  举报