docker服务发现——etcd集群

简介: etcd etcd用于服务发现的基础注册和通知,功能类似于zk,通过注册和监听,实现基础的服务发现。 安装 etcd安装非常简单,可以用go自己编译,etcd也提供了可以直接使用的二进制包(64位)。 具体的安装提示页面在github上, 直接按照上面的描述下载即可。为了方便,把里面的et

etcd

etcd用于服务发现的基础注册和通知,功能类似于zk,通过注册和监听,实现基础的服务发现。

安装

etcd安装非常简单,可以用go自己编译,etcd也提供了可以直接使用的二进制包(64位)。
具体的安装提示页面在github上,
直接按照上面的描述下载即可。为了方便,把里面的etcd相关的二进制文件(etcd, etcdctl等)
复制到了/usr/local/bin中,方便后续使用。

运行

首先尝试单机版启动,参照手册先直接启动,etcd默认监听的是localhost,既只监听了lo设备,
这样会导致启动后集群中的其他机器无法访问,因此在启动的时候将默认的localhost改成0.0.0.0,
确保etcd监听了所有网卡。


etcd -listen-client-urls "http://0.0.0.0:4001" -listen-peer-urls="http://0.0.0.0:7001"

启动之后可通过rest接口或者etcdctl执行命令:


curl -L http://127.0.0.1:4001/version

输出结果为:

{“releaseVersion”:”2.0.0″,”internalVersion”:”2″}

简单写入和读取:


curl -L http://127.0.0.1:4001/v2/keys/message -XPUT -d value="Hello world"

{“action”:”set”,”node”:{“key”:”/message”,”value”:”Hello world”,”modifiedIndex”:3,”createdIndex”:3}}


curl -L http://127.0.0.1:4001/v2/keys/message

{“action”:”get”,”node”:{“key”:”/message”,”value”:”Hello world”,”modifiedIndex”:3,”createdIndex”:3}}

集群启动

之前的启动方式为单机启动,集群创建官方给了很多种方式,这里尝试动态添加机器的方式。

etcd -name "node1" -initial-cluster "node1=http://10.211.55.11:2380" 
    -initial-advertise-peer-urls "http://10.211.55.11:2380" 
    -listen-client-urls "http://0.0.0.0:4001" 
    -listen-peer-urls="http://0.0.0.0:2380"

启动之后,通过member api,可以查看到当前集群:


curl -L http://10.211.55.11:4001/v2/members

{“members”:[{“id”:”f0b31008acf03099″,”name”:”node1″,”peerURLs”:[“http://10.211.55.11:2380″,”http://10.211.55.11:7001″],”clientURLs”:[“http://localhost:2379″,”http://localhost:4001″]}]}

向集群中添加一台机器:


etcdctl member add node2 http://10.211.55.12:2380

Added member named node2 with ID 6d345c68496f80fc to cluster

ETCD_NAME=”node2″
ETCD_INITIAL_CLUSTER=”node2=http://10.211.55.12:2380,node1=http://10.211.55.11:2380,node1=http://10.211.55.11:7001″
ETCD_INITIAL_CLUSTER_STATE=”existing”

这里为了方便,没有只用rest接口,直接使用了etcdctl,该命令会提示在启动新的节点时所需要配置的环境变量。

启动新的节点:


export ETCD_NAME="node2"
export ETCD_INITIAL_CLUSTER="node1=http://10.211.55.11:2380,node2=http://10.211.55.12:2380"
export ETCD_INITIAL_CLUSTER_STATE="existing"
etcd -listen-client-urls http://0.0.0.0:4001 
    -advertise-client-urls http://0.0.0.0:4001 
    -listen-peer-urls http://10.211.55.12:2380 
    -initial-advertise-peer-urls http://10.211.55.12:2380

启动之后,通过member接口查看当前集群机器:


etcdctl member list

293ea5ba1d70f5f1: name=node2 peerURLs=http://10.211.55.12:2380 clientURLs=http://0.0.0.0:4001

bd93686a68a54c2d: name=node1 peerURLs=http://10.211.55.11:2380 clientURLs=http://localhost:2379,http://localhost:4001

同样的方式再添加一台,成为基础的3台机器集群:


export ETCD_NAME="node3"
export ETCD_INITIAL_CLUSTER="node2=http://10.211.55.12:2380,node3=http://10.211.55.13:2380,node1=http://10.211.55.11:2380"
export ETCD_INITIAL_CLUSTER_STATE="existing"
etcd -listen-client-urls http://0.0.0.0:4001 
    -advertise-client-urls http://0.0.0.0:4001 
    -listen-peer-urls http://10.211.55.13:2380 
    -initial-advertise-peer-urls http://10.211.55.13:2380

最终集群为:

293ea5ba1d70f5f1: name=node2 peerURLs=http://10.211.55.12:2380 clientURLs=http://0.0.0.0:4001

76610041ace6c4f8: name=node3 peerURLs=http://10.211.55.13:2380 clientURLs=http://0.0.0.0:4001

bd93686a68a54c2d: name=node1 peerURLs=http://10.211.55.11:2380 clientURLs=http://localhost:2379,http://localhost:4001

在node1节点机器上运行:


etcdctl set /message hello

之后,在三台机器中执行:


etcdctl get /message

都能够正确的获取这个key的值:hello。


转载自:https://coolex.info/blog/481.html

目录
相关文章
|
2月前
|
网络安全 Docker 容器
|
12天前
|
Prometheus 监控 Cloud Native
如何使用Prometheus监控Docker Swarm集群的资源使用情况?
还可以根据实际需求进行进一步的配置和优化,如设置告警规则,当资源使用超出阈值时及时发出警报。通过这些步骤,能够有效地使用 Prometheus 对 Docker Swarm 集群的资源进行监控和管理。
33 8
|
12天前
|
Prometheus 监控 Cloud Native
如何监控Docker Swarm集群的性能?
如何监控Docker Swarm集群的性能?
48 8
|
12天前
|
监控 Docker 容器
Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项
本文深入探讨了Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项,旨在帮助用户高效管理集群资源,适应业务变化,确保服务稳定性和资源优化。
33 6
|
12天前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
33 3
|
29天前
|
API Docker 容器
【赵渝强老师】构建Docker Swarm集群
本文介绍了如何使用三台虚拟主机构建Docker Swarm集群。首先在master节点上初始化集群,然后通过特定命令将node1和node2作为worker节点加入集群。最后,在master节点上查看集群的节点信息,确认集群构建成功。文中还提供了相关图片和视频教程,帮助读者更好地理解和操作。
|
29天前
|
调度 Docker 容器
【赵渝强老师】Docker Swarm集群的体系架构
Docker Swarm自1.12.0版本起集成至Docker引擎,无需单独安装。它内置服务发现功能,支持跨多服务器或宿主机创建容器,形成集群提供服务。相比之下,Docker Compose仅限于单个宿主机。Docker Swarm采用主从架构,Swarm Manager负责管理和调度集群中的容器资源,用户通过其接口发送指令,Swarm Node根据指令创建容器运行应用。
|
3天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
121 77
|
12天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
5天前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
31 3