swarm是一系列节点的集合,而节点可以是一台裸机或者一台虚拟机。一个节点能扮演一个或者两个角色,manager或者worker。manager节点
Docker Swarm集群需要至少一个manager节点,节点之间使用Raft consensus protocol进行协同工作。 通常,第一个启用docker swarm的节点将成为leader,后来加入的都是follower。当前的leader如果挂掉,剩余的节点将重新选举出一个新的leader。
集群中经常谈到的stacks, services, tasks,他们之间的关系。
下面简单解释一下这三者的含义:task
例如下图有三个副本的HTTP服务,每个服务实例就是一个任务。
有两种类型的服务部署:副本和全局。 对于副本服务,指定要运行的相同任务的数量,每个副本都是相同的内容。
下图显示三个副本服务(黄色)和全局服务(灰色):
我的三台测试机IP地址角色主机名192.168.64.153managernode1192.168.64.154workernode2192.168.64.155workernode3服务器端口开放
在创建集群前,如果开启了防火墙,请确认三台主机的防火墙能让swarm需求的端口开放,需要打开主机之间的端口,以下端口必须可用。在某些系统上,这些端口默认为打开。
可以直接禁用系统防火墙来让这些端口通信不受限制,一般测试环境我们都会禁用防火墙
当首次安装并使用Docker Engine时,默认情况下swarm模式是禁用的。当启用swarm模式时,可以使用docker service 服务管理命令。
有两种方式在swarm模式下运行引擎:
下面我们就来搭建一个swarm集群初始化集群
在第一个从节点执行加入 work的指令
第二个节点执行加入work的命令
执行docker node ls 查看swarm节点信息
显示节点是属于manager或者worker
默认centos的主机名是localhost,我们看上面,节点的主机名都是localhost,我们修改以下查看主机名
hostnamectl status可以查看主机名
修改主机名使用hostnamectl set-hostname NAME命令可以进行修改,我们使用 node1,node2...方式命名我们的节点
其他节点依次操作就可以再次查看节点
再次查看swarm节点信息
因为我们用到了节点约束,所有启动服务之前需要添加节点标签
无论您升级或降级节点,您应该始终在群中维护奇数个管理器节点, 升降级节点角色只能在管理节点上运行,应先升级工作节点为被选举者,再降级领导者为工作节点,然后被选举者成为领导者完成替换;
要降级一个节点或一组节点,请从管理器节点运行
docker node promote 节点名称
升级节点后不会马上生效,会进入Reachable 状态,如果leader节点关掉,当前节点会参与主节点竞争降级节点
要升级一个节点或一组节点,请从管理器节点运行
docker node demote 节点名称
swam将节点降级后,再次查看节点命令不生效,需要到管理节点查看节点退出swarm集群
在工作节点执行以下命令可以退出swarm节点
在管理节点查看节信息
根据退出节点前后查看节点信息,可以发现退出的节点是down的状态,并没有删除节点
在管理节点执行删除命令docker node rm 节点ID
管理集群服必须在manager角色的主机上创建overlay网络
我们需要载多个服务器中运行Docker容器集群,需要使用overlay网络,overlay网络用于连接不同机器上的docker容器,允许不同机器上的容器相互通信,同时支持对消息进行加密
使用docker service create命令来创建服务创建MySQL服务
--replicas 1 表示在集群中创建1个服务
node.labels.role == data表示节点需要创建在标签是data的节点上
可以查看swarm的进程
nacos也是需要创建一个,但是节点是可以漂移的,不需要固定在某一台机器
可以查看swarm的进程
我们发现nacos运行在了 node3节点上创建learn-docker-storage服务
我们创建learn-docker-storage服务,我们将该服务部署两个节点
可以查看swarm的进程
我们发现我们的存储服务运行在两个节点上
我们创建learn-docker-web服务,我们将该服务同样部署两个节点
可以查看swarm的进程
我们创建learn-docker-gateway服务,因为是网关服务,我们只创建一个节点,因为需要对外暴漏端口,需要开放8888端口
可以查看swarm的进程
因为在node2节点上,node2节点IP是192.168.64.154 我们可以请求URL访问
通过docker service logs 服务命可以看到当前服务的日志,但是这个服务有两个容器在运行,所有能同时看到两个容器的日志
可以通过集群操作对集群进行扩缩容扩容操作
我们将learn-docker-storage由两个容器变为三个容器
这样我们就把存储服务变成了三台服务缩容操作
同样,使用该命令对learn-docker-storage进行缩容
我们可以尝试把learn-docker-gateway删除掉,删除操作将会把整个服务的所有容器删除
本文由传智教育博学谷教研团队发布。
如果本文对您有帮助,欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力。
转载请注明出处!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |