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. [转]CLion 2022.2.4破解教程详细图解mac,windows,linux均适用(2022.11.10亲测有效)

    前言 此教程为CLion 2022.2.4 破解教程,且此教程以及下面提供的破解补丁适用与2022.2以后的新版本.2022年11月10日亲测有效,mac与windows均测试完美破解 CLion   ...

  2. IM跨平台技术学习(十三):从理论到实践,详细对比Electron和Tauri的优劣

    本文由京东技术王泽知分享,原题"基于Web的跨平台桌面应用开发",下文进行了排版和内容优化. 1.引言 近些年来,跨平台跨端一直是比较热门的话题,Write once, run a ...

  3. WPF使用Microsoft.Toolkit.Mvvm作为Mvvm框架DryIoc作依赖注入

    背景 MVVMLight已多年未更新,Microsoft.Toolkit.Mvvm作为MVVMLight继任者,需要学习一下. Microsoft.Toolkit.Mvvm跟MVVMLight使用非常 ...

  4. 探索Python @dataclass的内部原理

    之前写过一篇介绍Python中dataclass的文章:<掌握python的dataclass,让你的代码更简洁优雅>. 那篇侧重于介绍dataclass的使用,今天想探索一下这个有趣的特 ...

  5. 「V 曲闲谈」《hello&bye,days》——记这周

      这周破事儿浓度真的,情绪渗透压巨大失调.   完全没有曲析啊喂,顶多当个阅读时 BGM.() 两度失眠   "砰--"   朦胧之中看见斜上方的室友起身.   "砰- ...

  6. 开箱你的 AI 语音女友「GitHub 热点速览」

    随着大模型 API 服务的不断丰富,开发者无需再依赖昂贵的硬件,也能轻松开发出拥有强大 AI 能力的应用.这不仅降低了技术门槛,也激发了极客们的创造力. 就比如上周飙升 1.5k Star 的开源项目 ...

  7. springboot整合security实现权限控制

    1.建表,五张表,如下:1.1.用户表CREATE TABLE `t_sys_user` ( `user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ...

  8. MySQL---约束、主从复制原理、Docker搭建

    MySQL(11)---约束 含义: 一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性. 先把Mysql几种约束列出来: 主键约束 外键约束 唯一性约束 非空约束 默认值约束 自增约束 ...

  9. Linux:yum

    yum介绍 [yellow dog updater,modified],一个在Fedora和RedHat以及SUSE.Centos中的shell前段软件包管理器 能够自动的从指定的服务器自动下载RPM ...

  10. Kotlin:【Map集合】集合创建、集合遍历、元素增加

    to本身是一个函数