etcd 指定配置文件启动_干货 | 手把手教你Etcd的云端部署

42208827cebf2585b09ac615fd16f884.png

Etcd是一个开源的分布式键值存储,它由CoreOS团队开发,现在由Cloud Native Computing Foundation负责管理。这个词的发音是“et-cee-dee”,表示在多台机器上分发Unix系统的“/etc”目录,其中包含了大量的全局配置文件。它是许多分布式系统的主干,为跨服务器集群存储数据提供可靠的方式。它适用于各种操作系统,包括Linux、BSD和OS X。

Etcd具有下面这些属性:

  • 完全复制:集群中的每个节点都可以使用完整的存档

  • 高可用性:Etcd可用于避免硬件的单点故障或网络问题

  • 一致性:每次读取都会返回跨多主机的最新写入

  • 简单:包括一个定义良好、面向用户的API(gRPC)

  • 安全:实现了带有可选的客户端证书身份验证的自动化TLS

  • 快速:每秒10000次写入的基准速度

  • 可靠:使用Raft算法实现了存储的合理分布

自从2014年成为Kubernetes的一部分以来,Etcd社区呈现指数级的增长。CoreOS、谷歌、Redhat、IBM、思科、华为等等均是Etcd的贡献成员。其中AWS、谷歌云平台和Azure等大型云提供商成功在生产环境中使用了Etcd。

Etcd在Kubernetes中的工作是为分布式系统安全存储关键数据。它最著名的是Kubernetes的主数据存储,用于存储配置数据、状态和元数据。由于Kubernetes通常运行在几台机器的集群上,因此它是一个分布式系统,需要Etcd这样的分布式数据存储。内网部署同一网段情况下访问很方便。

但当集群基于云部署的时候客户端多要跨网络访问集群。今天,我们会专门为大家介绍两个跨网络访问方案:

方案一:每个Etcd节点拥有公网ip,通过指定--advertise-client-urls 参数通过公网IP广播地址

方案二:Etcd节点无公网ip,通过网关及ssh tunnel转发请求

具体实施可参考以下步骤:

集群节点

内网ip外网iphostname
10.0.64.100125.94.39.48etcdpub1
10.0.64.101125.94.39.105etcdpub2
10.0.64.10259.37.136.50etcdpub3
10.0.64.200157.255.51.197guangzhou_portal

通过internetwork访问,每个Etcd节点都有公网IP

如需要通过internet访问Etcd集群,必须配置 --advertise-client-urls 为内网ip和外网IP例如:

--advertise-client-urls http://10.0.64.100:2379,http://125.94.39.48:2380

集群配置

./etcd --name etcd0 --initial-advertise-peer-urls http://10.0.64.100:2380 \
  --listen-peer-urls http://0.0.0.0:2380 \
  --listen-client-urls http://0.0.0.0:2379  \
  --advertise-client-urls http://10.0.64.100:2379,http://125.94.39.48:2380 \
  --initial-cluster-token etcd-cluster-1 \
  --initial-cluster etcd0=http://10.0.64.100:2380,etcd1=http://10.0.64.101:2380,etcd2=http://10.0.64.102:2380 \
  --initial-cluster-state new >> etcd.log 2>&1 &
./etcd --name etcd1 --initial-advertise-peer-urls http://10.0.64.101:2380  \
  --listen-peer-urls http://0.0.0.0:2380 \
  --listen-client-urls http://0.0.0.0:2379 \
  --advertise-client-urls http://10.0.64.101:2379,http://125.94.39.105:2380  \
  --initial-cluster-token etcd-cluster-1 \
  --initial-cluster etcd0=http://10.0.64.100:2380,etcd1=http://10.0.64.101:2380,etcd2=http://10.0.64.102:2380 \
  --initial-cluster-state new  >> etcd.log 2>&1 &
./etcd --name etcd2 --initial-advertise-peer-urls http://10.0.64.102:2380 \
  --listen-peer-urls http://0.0.0.0:2380 \
  --listen-client-urls  http://0.0.0.0:2379  \
  --advertise-client-urls http://10.0.64.102:2379,http://59.37.136.50:2380 \
  --initial-cluster-token etcd-cluster-1 \
  --initial-cluster etcd0=http://10.0.64.100:2380,etcd1=http://10.0.64.101:2380,etcd2=http://10.0.64.102:2380 \
  --initial-cluster-state new  >> etcd.log 2>&1 &

访问集群

export ETCDCTL_API=3

#内网访问
etcdctl  --endpoints=http://10.0.64.100:2379,http://10.0.64.101:2379,http://10.0.64.102:2379 member list

#公网访问
etcdctl  --endpoints=http://125.94.39.48:2379,http://125.94.39.105:2379,http://59.37.136.50:2379 member list
curl http://125.94.39.48:2379/v2/keys/message

通过网关访问集群,集群无公网IP,gateway有公网IP。

Etcd集群配置

./etcd --name etcd0 --initial-advertise-peer-urls http://10.0.64.100:2380 \
  --listen-peer-urls http://0.0.0.0:2380 \
  --listen-client-urls http://0.0.0.0:2379  \
  --advertise-client-urls http://10.0.64.100:2379 \
  --initial-cluster-token etcd-cluster-1 \
  --initial-cluster etcd0=http://10.0.64.100:2380,etcd1=http://10.0.64.101:2380,etcd2=http://10.0.64.102:2380 \
  --initial-cluster-state new >> etcd.log 2>&1 &
./etcd --name etcd1 --initial-advertise-peer-urls http://10.0.64.101:2380  \
  --listen-peer-urls http://0.0.0.0:2380 \
  --listen-client-urls http://0.0.0.0:2379 \
  --advertise-client-urls http://10.0.64.101:2379  \
  --initial-cluster-token etcd-cluster-1 \
  --initial-cluster etcd0=http://10.0.64.100:2380,etcd1=http://10.0.64.101:2380,etcd2=http://10.0.64.102:2380 \
  --initial-cluster-state new  >> etcd.log 2>&1 &
./etcd --name etcd2 --initial-advertise-peer-urls http://10.0.64.102:2380 \
  --listen-peer-urls http://0.0.0.0:2380 \
  --listen-client-urls  http://0.0.0.0:2379  \
  --advertise-client-urls http://10.0.64.102:2379 \
  --initial-cluster-token etcd-cluster-1 \
  --initial-cluster etcd0=http://10.0.64.100:2380,etcd1=http://10.0.64.101:2380,etcd2=http://10.0.64.102:2380 \
  --initial-cluster-state new  >> etcd.log 2>&1 &

开启gateway

etcd gateway start --endpoints=http://10.0.64.100:2379,http://10.0.64.101:2379,http://10.0.64.102:2379   >> etcd_gateway.log 2>&1 &

验证集群

export ETCDCTL_API=3
etcdctl  --endpoints=http://10.0.64.100:2379,http://10.0.64.101:2379,http://10.0.64.102:2379 member list
etcdctl  --endpoints=http://127.0.0.1:23790 member list

创建ssh tunnel

# 有公网ip地址主机上执行
ssh  -g -f -N -L 23690:127.0.0.1:23790 root@127.0.0.1

通过公网访问网关

export ETCDCTL_API=3
etcdctl  --endpoints=http://157.255.51.197:23690 member list
etcdctl  --endpoints=http://157.255.51.197:23690 put foo bar
etcdctl  --endpoints=http://157.255.51.197:23690 get foo 
d42c8895ba1a4e4a409f800544c4a9d6.png

494db675f2554466b32e1d811e849146.gif

58bacfd5b9d99d382bf64476e07cc17f.gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值