Docker Swarm多节点环境的搭建(二): Docker的集群调配
Docker的集群调配
在上篇文章中介绍了如何如何在多个CentOS中安装Docker应用。本文章为大家介绍如何实现对已安装的这一堆机器实现集群化。
Docker Swarm运行Spring Cloud应用(一): Docker的安装
Docker Swarm运行Spring Cloud应用(二):集群Docker的调配(本文)
1、初始化集群(在node1上操作):
[root@linux-node1 ~]# docker swarm init --advertise-addr 192.168.10.101
Swarm initialized: current node (xxkq6mhnilt0lulmhwrwrtfrr) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-1m7l3vepkees60zh321bssfdlqo36vjvoy5b1mlm0mcypcq13e-58azd8nskaixhbxjh1mvcx8jt \
192.168.10.101:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
2、查看集群状态(在node1上操作):
[root@linux-node1 ~]# docker info | grep -i swarm
Swarm: active #激活状态
3、查看端口状态(在node1上操作):
[root@linux-node1 ~]# netstat -tunlp | grep docker (默认监听两个端口,tcp2377端口为集群的管理端口,tcp7946为节点之间的通讯端口)
tcp6 0 0 :::2377 :::* LISTEN 3979/dockerd-curren
tcp6 0 0 :::7946 :::* LISTEN 3979/dockerd-curren
4、查看默认创建网络(在node1上操作):
默认会创建一个overlay的网络ingress,还会创建一个桥接的网络docker_gwbridge)
[root@linux-node1 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
c3f9bacc7a27 bridge bridge local
169aedb818b9 docker_gwbridge bridge local
6488efd3fa8a host host local
squcqnplf4gz ingress overlay swarm
b044056e55bd none null local
5、查看集群节点(在node1上操作):
[root@linux-node1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
xxkq6mhnilt0lulmhwrwrtfrr * node1 Ready Active Leader
6、查看swarm配置文件(在node1上操作):
[root@linux-node1 ~]# ll /var/lib/docker/swarm/
drwxr-xr-x 2 root root 72 Sep 27 09:14 certificates (使用的tls来进行安全通信)
-rw------- 1 root root 112 Sep 27 09:14 docker-state.json(用来记录通信的地址和端口,也会记录本地的地址和端口)
drwx------ 4 root root 53 Sep 27 09:14 raft(raft协议)
-rw------- 1 root root 70 Sep 27 09:14 state.json (manager的ip和端口)
drwxr-xr-x 2 root root 21 Sep 27 09:14 worker (记录工作节点下发的任务信息)
7、将其它节点接入swarm集群(在node2、node3上操作):
[root@linux-node2 ~]# docker swarm join --token SWMTKN-1-1m7l3vepkees60zh321bssfdlqo36vjvoy5b1mlm0mcypcq13e-58azd8nskaixhbxjh1mvcx8jt 192.168.10.101:2377
[root@linux-node3 ~]# docker swarm join --token SWMTKN-1-1m7l3vepkees60zh321bssfdlqo36vjvoy5b1mlm0mcypcq13e-58azd8nskaixhbxjh1mvcx8jt 192.168.10.101:2377
注:当忘记了加入集群的token的时候,可以使用如下的指令找到token,然后在node节点上直接执行,就可以加入worker节点或者是manager节点。
[root@linux-node1 ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-1m7l3vepkees60zh321bssfdlqo36vjvoy5b1mlm0mcypcq13e-58azd8nskaixhbxjh1mvcx8jt \
192.168.10.101:2377
8、查看集群状态(在node1上操作):
[root@linux-node1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
ibrkg91oq7ezcqtr9b25e2ook node2 Ready Active
uzvohbfv7ta440px57b4o7bn6 node3 Ready Active
xxkq6mhnilt0lulmhwrwrtfrr * node1 Ready Active Leader
9、节点之间的角色可以随时进行切换,使用update(在node1上操作):
[root@linux-node1 ~]# docker node update --role manager node3
node3
[root@linux-node1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
ibrkg91oq7ezcqtr9b25e2ook node2 Ready Active
uzvohbfv7ta440px57b4o7bn6 node3 Ready Active Reachable
xxkq6mhnilt0lulmhwrwrtfrr * node1 Ready Active Leader
[root@linux-node1 ~]# docker node update --role worker node3
node3
[root@linux-node1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
ibrkg91oq7ezcqtr9b25e2ook node2 Ready Active
uzvohbfv7ta440px57b4o7bn6 node3 Ready Active
xxkq6mhnilt0lulmhwrwrtfrr * node1 Ready Active Leader
10、docker swarm 集群可视化管理
目前为止,集群创建完成了,对于集群的操作都是通过“docker-machine ssh 节点名”登录到主机上,再执行docker指令完成的,很不方便。有很多可视化的集群管理工具,“Docker Universal Control Plane(UCP)”是docker原厂的可视化集群管理GUI,企业级的,只支持docker EE。这里采用完全开源的"portainer",详细参考https://portainer.io.
整个过程很简单,只需要在集群中部署portainer的service就可以了。但是portainer比较特殊,这个服务只能被调度给manager角色的节点,在本集群中满足这个条件的节点只有node1节点。另外需要提前在 node1 节点上准备好运行服务需要挂载的目录,这里是/etc/portainer,提前创建好就可以了。运行如下指令:
1.各节点下载镜像(在node1、node2、node3上操作):
# 查询当前有哪些Portainer镜像
docker search portainer
# 下载镜像
docker pull portainer/portainer
2.各节点配置2375端口号(在node1、node2、node3上操作):
进入路径/usr/lib/systemd/system下找到docker.service文件增加
-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \
2.管理节点运行portainer(在node1上操作):
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
浏览器打开页面地址注册用户后在如下界面输入对应的ip端口号,这里我用管理节点安装,所以填写管理节点自身的ip端口号。注意:下图网上找的,ip不是本文提到node1管理节点ip,实操时请务必将各ip修改成需要连接节点的ip。
登录成功之后如下:
可以在Endpoints中新增docker swarm各个子节点
配置完毕后在主页可看到配置的各个节点连接信息,可随意切换管理
到此,Docker的集群调配完成。
————————————————
版权声明:本文为CSDN博主「M中南保镖」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_31858847/article/details/90298933
Docker Swarm多节点环境的搭建(二): Docker的集群调配的更多相关文章
- docker swarm英文文档学习-11-上锁你的集群来保护你的加密密钥
Lock your swarm to protect its encryption key上锁你的集群来保护你的加密密钥 在Docker 1.13及更高版本中,默认情况下,群管理器使用的Raft日志在 ...
- Linux环境快速搭建elasticsearch6.5.4集群和Head插件
https://blog.csdn.net/boling_cavalry/article/details/86358716
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:4.安装Oracle RAC FAQ-4.3.Oracle 集群节点间连通失败
1.检查节点连通性的错误 [grid@linuxrac1 grid]$ ./runcluvfy.sh stage -post hwos -n linuxrac1,linuxrac2 -verbose ...
- 二进制搭建kubernetes多master集群【开篇、集群环境和功能介绍】
本文主要说明kubernetes集群使用组建的版本和功能介绍.. 一.组件版本 Kubernetes 1.12.3 Docker 18.06.1-ce Etcd 3.3.10 Flanneld 0.1 ...
- Docker搭建MySQL的PXC集群
原文:Docker搭建MySQL的PXC集群 一.简介 PXC属于一套近乎完美的mysql高可用集群解决方案,相比那些比较传统的基于主从复制模式的集群架构MHA和MM+keepalived,galer ...
- 带你自行搭建虚拟机和Redis集群环境,值得收藏!
前言: 我们看到分析 Redis 使用或原理的文章不少,但是完整搭建一套独立的 redis 集群环境的介绍,并不是很多或者说还不够详细. 那么,本文会手把手带着大家搭建一套 Redis 集群环境,Re ...
- [转]搭建高可用mongodb集群(二)—— 副本集
在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点 ...
- 搭建高可用mongodb集群(二)—— 副本集
在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点 ...
- 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群(转载-2)
原文:http://www.cnblogs.com/PurpleDream/p/4510279.html 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群 前言: ...
- 二进制搭建kubernetes多master集群【二、配置flannel网络】
上一篇我们已经搭建etcd高可用集群,参考:二进制搭建kubernetes多master集群[一.使用TLS证书搭建etcd集群] 此文将搭建flannel网络,目的使跨主机的docker能够互相通信 ...
随机推荐
- VS2008新建MFC程序时提示:当前页面的脚本发送错误 不是有效的Win32应用程序的解决办法
错误现象: 解决方案: 1.根据错误信息中的url,找到对应文件夹下的htm文件 2.使用notepad++打开default.htm文件,找到错误提示地方,注释掉其中两句语句,如433和434行所示 ...
- 阿里IM技术分享(三):闲鱼亿级IM消息系统的架构演进之路
本文由阿里闲鱼技术团队今朝.有攸分享,本次有修订. 1.引言 闲鱼即时消息系统历经数代迭代,目前已能稳定的支撑亿级消息体量. 在此消息系统的建设过程中,我们经历了从简单到复杂.从困扰到破局,每一次的技 ...
- IM跨平台技术学习(六):网易云信基于Electron的IM消息全文检索技术实践
本文作者网易云信高级前端开发工程师李宁,本文有修订. 1.引言 在IM客户端的使用场景中,基于本地数据的全文检索功能扮演着重要的角色,最常用的比如:查找聊天记录.联系人等. 类似于IM中的聊天记录查找 ...
- 在 Ubuntu 或 Debian 上安装 LaTeX
在 Ubuntu 或 Debian 上安装 LaTeX LaTeX 是一种文档标记语言.建议使用 LaTeX 创建技术或科学文章.论文.报告.书籍和其他文档,如博士. 1. 打开你的终端 终端是一个命 ...
- Python学习(一)——配套《PyTorch深度学习实战》
记录一下Python学习过程中的一些问题: 1. 在JupyterLab中查询当前文件的地址 import os print(os.getcwd()) #查询该文件的地址 2. 新建cell 在 Ju ...
- WPF test animation robot(simulate blink,mouse talk)
WPF 动画,模拟机器人眨眼,说话. using System; using System.Collections.Generic; using System.Linq; using System.T ...
- 分布式事务-XA-DTP-TCC-BASE介绍
前言 数据库事务(简称:事务,Transaction)是指数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成. 事务拥有以下四个特性,习惯上被称为 ACID 特性: 原子性(Atomici ...
- 第一个shell脚本(bash脚本)
首先它是一个脚本,并不能作为正式的编程语言.因为是跑在linux的shell中,所以叫shell脚本.说白了,shell脚本就是一些命令的集合.运维工作中把常用的一系列的操作都记录到一个文档中,然后去 ...
- IO流:File类的使用
java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关 File 能新建.删除.重命名文件和目录,但 File 不能访问文件内容本身.如果需要访问文件内容本身,则需要使用输入/ ...
- 自定义swagger扩展解析jsondoc
需求规定 为了减少注释和swagger注解的重复定义, 通过规范注释, 让swagger可以通过javadoc来产生 替换@Api.@ApiOperation.@ApiModel.@ApiModelP ...