• 【云原生 | 57】Docker三剑客之Docker Swarm֯使用其他服务发现后端


    🍁博主简介
            🏅云计算领域优质创作者
            🏅2022年CSDN新星计划python赛道第一名

            🏅2022年CSDN原力计划优质作者
            🏅阿里云ACE认证高级工程师
            🏅阿里云开发者社区专家博主

    💊交流社区CSDN云计算交流社区欢迎您的加入!

    目录

    1.使用文件 

    2.其他发现服务后端 

    3.地址和端口的范围匹配 

     👑👑👑结束语👑👑👑​


    Swarm目前可以支持多种服务发现后端,这些后端在功能上都是一致的,即维护属于某个集群的节点信息。不同的方案并无优劣之分,在实际使用时,可以结合自身需求和环境限制进行选择,甚至自己定制其他方案。

    使用中可以通过不同的路径来选择特定的服务发现后端机制:

    👉token://:使用Docker Hub提供的服务,适用于可以访问公网的情况;

    👉file://path/to/file:使用本地文件,需要手动管理;

    👉consul:///:使用Consul服务,私有环境推荐;
    👉 etcd://,/:使用Etcd服务,私有环境推荐;
    👉zk://,/:使用ZooKeeper服务,私有环境推荐;
    👉[nodes://],:手动指定集群中节点的地址,方便进行服务测试。

    1.使用文件 

    使用本地文件的方式十分简单,就是将所有属于某个集群的节点的Docker
    daemon信息写入一个文件中,然后让manager从这个文件中直接读取相关信息。
    首先,在Swarm管理节点(192.168.0.2)上新建一个文件,把要加入集群的机器的Docker daemon信息写入文件:
    1. $ tee /tmp/cluster_info <<-'EOF'
    2. 192.168.0.2:2375
    3. 192.168.0.3:2375
    4. EOF
    然后,本地执行swarm manage命令,并指定服务发现机制为本地文件。注意,因为是容器方式运行manager,需要将本地文件挂载到容器内:
    1. $ docker run -d -p 12375:2375 -v /tmp/cluster_info:/tmp/cluster_info swarm
    2. manage file:///tmp/cluster_info
    接下来就可以通过使用Swarm服务来进行管理了,例如使用info查看所有节点的信息:
    1. $ docker -H 192.168.0.2:12375 info
    2. Containers: 18
    3. Images: 36
    4. Role: primary
    5. Strategy: spread
    6. Filters: health, port, dependency, affinity, constraint
    7. Nodes: 2
    8. Host-1: 192.168.0.2:2375
    9. └ Containers: 15
    10. └ Reserved CPUs: 0 / 4
    11. └ Reserved Memory: 1 GiB / 4.053 GiB
    12. └ Labels: executiondriver=native-0.2, kernelversion=3.16.0-43-generic,
    13. operatingsystem=Ubuntu 14.04.3 LTS, storagedriver=aufs
    14. Host-2: 192.168.0.3:2375
    15. └ Containers: 3
    16. └ Reserved CPUs: 0 / 8
    17. └ Reserved Memory: 0 B / 16.46 GiB
    18. └ Labels: executiondriver=native-0.2, kernelversion=3.16.0-30-generic,
    19. operatingsystem=Ubuntu 14.04.3 LTS, storagedriver=aufs
    20. CPUs: 12
    21. Total Memory: 20.51 GiB
    22. Name: e71eb5f1d48b

    2.其他发现服务后端 

    其他服务发现后端的使用方法也是大同小异,不同之处在于使用Swarm命令时指定的路径格式不同。
    例如,对于前面介绍的Consul服务后端来说,快速部署一个Consul服务的命令为:
    $ docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap
    之后创建Swarm的管理服务,指定使用Consul服务,管理端口监听在本地的4000端口:
    1. $ docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise
    2. :4000 consul://:8500

    Swarm节点注册时的命令格式类似于:

    $ swarm join --advertise= consul:///

    对于Etcd服务后端来说,节点注册时的命令格式类似于:

    1. $ swarm join --addr= etcd://,/
    2. path prefix>

    启动管理服务时,格式类似于:

    1. $ swarm manage -H tcp://:4000 etcd://,/

    3.地址和端口的范围匹配 

    对于基于文件和手动指定节点信息两种服务发现后端机制来说,其中地址和端口域可以支持指定一个范围,以一次性指定多个地址。例如:
    192.168.0.[2:10]:2375代表192.168.0.2:2375~192.168.0.10:2375一共9个地址;
    192.168.0.2:[2:9]375代表192.168.0.2:2375~192.168.0.2:9375一共8个地址。

     👑👑👑结束语👑👑👑

  • 相关阅读:
    C++:多态的内容和底层原理
    Deblur-NeRF CVPR 2022
    顺应趋势,用大数据精准营销抓住大数据时代的机遇
    QT:tcpSocket 报错The proxy type is invalid for this operation
    PyTorch Conv2d 前向传递中发生了什么?
    2022英特尔® FPGA中国技术周
    萌新看过来,你还学不懂VScode插件吗?
    LeetCode简单题之合并相似的物品
    java毕业设计计算机组成原理虚拟仿真实验系统mybatis+源码+调试部署+系统+数据库+lw
    C++ 对象克隆关键点
  • 原文地址:https://blog.csdn.net/qq_62294245/article/details/131444807