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

2023-07-05 20:46:56

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

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

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

目录

1.使用文件 

2.其他发现服务后端 

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

 👑👑👑结束语👑👑👑​


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

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

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

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

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

1.使用文件 

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

2.其他发现服务后端 

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

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

$ swarm join --advertise=<node_ip:2375> consul://<consul_addr>/<optional path prefix>

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

$ swarm join --addr=<node_addr:2375> etcd://<etcd_addr1>,<etcd_addr2>/<optional
path prefix>

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

$ swarm manage -H tcp://<manager_ip>:4000 etcd://<etcd_addr1>,<etcd_addr2>/
<optional path prefix>

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个地址。

 👑👑👑结束语👑👑👑

更多推荐

C2基础设施威胁情报对抗策略

威胁情报是指在信息安全和安全防御领域,收集、分析和解释与潜在威胁相关的信息,以便预先发现并评估可能对组织资产造成损害的潜在威胁,是一种多维度、综合性的方法,其通过信息的收集、分析和研判,帮助组织了解可能对其安全构成威胁的因素。这种方法不仅仅着重于技术层面,还包括了社会、心理、政治等多个维度,以此更好地应对不断变化和复杂

Python--文件和异常

目录1、读取文件1.1读取文件的全部内容1.2相对路径和绝对路径1.3访问文件中的各行1.4使用文件中的内容1.5包含100万位的大型文件1.6圆周率中的生日2、写入文件2.1写入一行2.2写入多行3、异常3.1处理ZeroDivisionError异常3.2使用try-except代码块3.3使用异常避免崩溃3.4e

前端代码静态检测工具汇总

前端静态代码检测工具是用于分析代码并在不运行的情况下找出其中的问题的工具。下面列出了一些常见的前端静态代码检测工具:1.**ESLint**:ESLint是一个开源的JavaScript代码检查工具,它被设计成完全可配置的,支持现代JavaScript和JSX。ESLint可以帮助你发现代码错误和不一致的编码风格。2.

python+django美食菜谱分享网站系统平台

开发语言:Python框架:django/flaskPython版本:python3.7.7数据库:mysql数据库工具:Navicat开发软件:PyCharm.本系统采用了nodejs语言的vue框架,数据采用MySQL数据库进行存储。结合B/S结构进行开发设计,功能强大,界面化操作便于上手。本系统具有良好的易用性和

设计模式之解析器(Interpreter)的C++实现

1、解析模式的提出在软件开发的过程中,需要实现一种需求,该需求的结构稳定,但是需求的业务内容会频繁变化,如果使用普通语法实现需求,需要经常更新代码,不具有灵活性。可以使用解析器模式解决实现该类需求,解析器是实现一种能够解析该需求结构语法的功能代码,针对不同的业务调用对应的解析规则代码。2、需求描述有一个字符串的加减计算

【Docker】ubuntu20.04 X86机器搭建NVIDIA ARM64 TX2的Docker镜像

文章目录1.设置ubuntu为清华源1.1备份源文件1.2替换清华源1.3更新清华源2.UbuntuDocker安装3.安装qemu4.安装NvidiaTX2Docker镜像5.如何使用TX2容器6.参考资料1.设置ubuntu为清华源为了后面ubuntu下载安装软件快些,需要使用国内的源,比如清华源。(备注:已经更新

解读《生成式人工智能服务管理暂行办法》

《生成式人工智能服务管理暂行办法》第一章总则第二章技术发展与治理第三章服务规范第四章监督检查和法律责任第五章附则以ChatGPT为代表的现象级互联网应用的出现,掀起了人工智能领域新一轮技术浪潮。作为新一代信息技术,生成式人工智能通过对人类“脑力”的无限延伸,赋予人们对于追求美好生活的更大想象空间。与此同时,生成式人工智

云原生之使用Docker部署Firefox浏览器

云原生之使用Docker部署Firefox浏览器一、Firefox浏览器介绍1.1Firefox简介1.2Firefox特点二、本次实践介绍2.1本地环境规划2.2本次实践简介三、本地环境检查3.1检查Docker服务状态3.2检查Docker版本3.3检查dockercompose版本四、下载Firefox镜像五、部

QCustomPlot绘图类详解(大白话)

本文假定你会使用Qt开发,但未接触过QCustomPlot绘图类或者是刚接触。如何往Qt中引入QCustomPlot首先,去官网下载最新版本的源码,注意是QCustomPlot.tar.gz这个文件,里面包含源码和示例。实际上,我们只需要qcustomplot.h和qcustomplot.h这两个源文件。将代码文件拷贝

设计模式:简单工厂、工厂方法、抽象工厂

参考Java设计模式之创建型:工厂模式详解(简单工厂+工厂方法+抽象工厂)-知乎工厂方法以生产手机为例,具体的UML图如下:这种方法的优点是对于用户来说,不再需要面对具体的生产逻辑,只需要将生产的安排工作和细节都交给工厂类去做。缺点是在这种情况下,如果想要增加一种商品,比如华为手机,不仅需要新增一个实现抽象产品的接口,

MYSQL性能优化——SQL 性能分析

SQL性能分析⭐执行计划实际项目开发中,由于我们不知道实际查询的时候数据库里发生了什么事情,数据库软件是怎样扫描表、怎样使用索引的,因此,我们能感知到的就只有sql语句运行的时间,在数据规模不大时,查询是瞬间的,因此,在写sql语句的时候就很少考虑到性能的问题。但是随着数据规模增大,如千万、亿的时候,我们运行同样的sq

热文推荐