[ etcd[golang]服务发现 ]


github官方

官方文档

配置文件yaml

conf1.yaml

# 结点名称
name: "s1"

# 数据存储目录
data-dir: "/etcd-data"

# 集群提供给外部客户端访问的url, 即外部客户端必须通过指定
listen-client-urls: "http://0.0.0.0:2379"

# 想客户端发布的服务端点
advertise-client-urls: "http://42.193.152.252:2379"

# 集群成员之间通信使用的url
listen-peer-urls: "http://0.0.0.0:2380"

# 集群配置 
initial-advertise-peer-urls: "http://42.193.152.252:2380"

# 集群成员配置
initial-cluster: "s1=http://42.193.152.252:2380,s2=http://42.193.152.252:12380"

# 引导期间etcd集群的初始集群令牌
initial-cluster-token: "tkn"

# 初始化集群状态(new:新增 或者 existing: 加入已存在)
initial-cluster-state: "new"

# 日志级别
log-level: "info"

# 压缩
logger: "zap"
log-outputs:
 - "stderr"

conf2.yaml

# 结点名称
name: "s2"

# 数据存储目录
data-dir: "/etcd-data"

# 集群提供给外部客户端访问的url, 即外部客户端必须通过指定
listen-client-urls: "http://0.0.0.0:12379"

# 想客户端发布的服务端点
advertise-client-urls: "http://42.193.152.252:12379"

# 集群成员之间通信使用的url
listen-peer-urls: "http://0.0.0.0:12380"

# 集群配置 
initial-advertise-peer-urls: "http://42.193.152.252:12380"

# 集群成员配置
initial-cluster: "s1=http://42.193.152.252:2380,s2=http://42.193.152.252:12380"

# 引导期间etcd集群的初始集群令牌
initial-cluster-token: "tkn"

# 初始化集群状态(new:新增 或者 existing: 加入已存在)
initial-cluster-state: "new"

# 日志级别
log-level: "info"

# 压缩
logger: "zap"
log-outputs:
 - "stderr"

conf3.yaml

# 结点名称
name: "s3"

# 数据存储目录
data-dir: "/etcd-data"

# 集群提供给外部客户端访问的url, 即外部客户端必须通过指定
listen-client-urls: "http://0.0.0.0:22379"

# 想客户端发布的服务端点
advertise-client-urls: "http://42.193.152.252:22379"

# 集群成员之间通信使用的url
listen-peer-urls: "http://0.0.0.0:22380"

# 集群配置 
initial-advertise-peer-urls: "http://42.193.152.252:22380"

# 集群成员配置
initial-cluster: "s1=http://42.193.152.252:2380,s2=http://42.193.152.252:12380,s3=http://42.193.152.252:2.22380"

# 引导期间etcd集群的初始集群令牌
initial-cluster-token: "tkn"

# 初始化集群状态(new:新增 或者 existing: 加入已存在)
initial-cluster-state: "existing"

# 日志级别
log-level: "info"

# 压缩
logger: "zap"
log-outputs:
 - "stderr"

运行docker容器s1

docker run -d -p 2379:2379 -p 2380:2380 -v /root/etcd/s1-data:/etcd-data -v /root/etcd/conf:/etcd-conf --name etcd-s1 quay.io/coreos/etcd:v3.5.9 /usr/local/bin/etcd --config-file=/etcd-conf/conf1.yaml