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的集群调配的更多相关文章

  1. docker swarm英文文档学习-11-上锁你的集群来保护你的加密密钥

    Lock your swarm to protect its encryption key上锁你的集群来保护你的加密密钥 在Docker 1.13及更高版本中,默认情况下,群管理器使用的Raft日志在 ...

  2. Linux环境快速搭建elasticsearch6.5.4集群和Head插件

    https://blog.csdn.net/boling_cavalry/article/details/86358716

  3. 基于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 ...

  4. 二进制搭建kubernetes多master集群【开篇、集群环境和功能介绍】

    本文主要说明kubernetes集群使用组建的版本和功能介绍.. 一.组件版本 Kubernetes 1.12.3 Docker 18.06.1-ce Etcd 3.3.10 Flanneld 0.1 ...

  5. Docker搭建MySQL的PXC集群

    原文:Docker搭建MySQL的PXC集群 一.简介 PXC属于一套近乎完美的mysql高可用集群解决方案,相比那些比较传统的基于主从复制模式的集群架构MHA和MM+keepalived,galer ...

  6. 带你自行搭建虚拟机和Redis集群环境,值得收藏!

    前言: 我们看到分析 Redis 使用或原理的文章不少,但是完整搭建一套独立的 redis 集群环境的介绍,并不是很多或者说还不够详细. 那么,本文会手把手带着大家搭建一套 Redis 集群环境,Re ...

  7. [转]搭建高可用mongodb集群(二)—— 副本集

    在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点 ...

  8. 搭建高可用mongodb集群(二)—— 副本集

    在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点 ...

  9. 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群(转载-2)

    原文:http://www.cnblogs.com/PurpleDream/p/4510279.html 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群 前言:       ...

  10. 二进制搭建kubernetes多master集群【二、配置flannel网络】

    上一篇我们已经搭建etcd高可用集群,参考:二进制搭建kubernetes多master集群[一.使用TLS证书搭建etcd集群] 此文将搭建flannel网络,目的使跨主机的docker能够互相通信 ...

随机推荐

  1. [转]OpenCV三角测量重建triangulatePoints原理解析

    opencv源代码注释 附上opencv三角测量函数的主要代码和注释 cvTriangulatePoints(CvMat* projMatr1, CvMat* projMatr2, CvMat* pr ...

  2. IM通讯协议专题学习(五):Protobuf到底比JSON快几倍?全方位实测!

    本文由陶文分享,InfoQ编辑发布,有修订和改动. 1.前言 本系列的前几篇主要是从各个角度讲解Protobuf的基本概念.技术原理这些内容,但回过头来看,对比JSON这种事实上的数据协议工业标准,P ...

  3. JVM实战—6.频繁YGC和频繁FGC的后果

    大纲 1.JVM GC导致系统突然卡死无法访问 2.什么是Young GC什么是Full GC 3.Young GC.Old GC和Full GC的发生情况 4.频繁YGC的案例(G1解决大内存YGC ...

  4. 使用Matlab进行图像分类

    Classify images Instructions are in the task pane to the left. Complete and submit each task one at ...

  5. RL中on-policy和off-policy的本质区别/重要性采样

    本随笔的图片都来自UCL强化学习课程lec5 Model-free prediction的ppt (Teaching - David Silver ). 回忆值函数的表达式: \[v_\pi(s) = ...

  6. 2006. 差的绝对值为 K 的数对数目

    给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j 且 |nums[i] - nums[j]| == k . |x| 的值定义为: 如果 x &g ...

  7. 小程序和h5垂直时间轴

    <template> <view class="steps"> <view class="list" v-for="(i ...

  8. CRISP-DM的应用与理解

    本文分享自天翼云开发者社区<CRISP-DM的应用与理解>,作者:吴****嫄 CRISP-DM是一个数据挖掘项目规划的开放标准流程框架模型,主要分为业务理解.数据理解.数据准备.建模.评 ...

  9. 一文详解 Sa-Token 中的 SaSession 对象

    Sa-Token 是一个轻量级 java 权限认证框架,主要解决登录认证.权限认证.单点登录.OAuth2.微服务网关鉴权 等一系列权限相关问题. Gitee 开源地址:https://gitee.c ...

  10. 使用Shell工具连接Kali Linux

    使用Shell工具连接Kali Linux 允许root用户登录ssh服务 1.使用命令 vim /etc/ssh/sshd_config 打开SSH的配置文件 2.将33行的 prohibit-pa ...