关于etcd集群部署

折腾良久,终于部署成功了……


2019年8月25日更
有点儿无语,蠢哭…
看了下Document\demo.md里是有Set a cluster的步骤的…
与之前摸索的步骤的区别在于
1、initial-cluster中将集群中的所有节点都加进来
2、initial-cluster-state都是new
3、直接启动节点,不需要执行member add的命令
下文中的步骤,应该集群部署之后添加节点,或者是原有节点下线之后重新上线之后的步骤…再一次尴尬


一开始在做服务发现的时候,只是搭了单机的etcd就开始玩儿了,出于可靠性的考量,单机并不能满足实际项目的要求,于是决定搭一个三台机器的小集群,也就有了本文的折腾,这里实名吐槽win10的WSL,吹得天花乱坠,用起来巨坑无比,谁用谁知道~

本来是决定在win10单机开三个端口来假装是三台机器的,中间配置失败等各种原因,尝试未果,于是又上了一台centos7的虚拟机

正确的配置步骤应该是这样的~

首先,下载etcd release,这里选用的是3.3.15版本,根据自己的操作系统下载对应的包,解压即可。主要有两个可执行文件,etcd和etcdctl。etcd用于启动etcd服务,etcdctl是’A simple command line client for etcd’,etcd的命令行客户端。

其次,启动etcd服务。本地测试可以直接执行./etcd不用带任何参数,启动成功之后,执行命令 ./etcdctl member list可以查看启动的服务信息,使用的是默认对外端口2379。另外还可以通过浏览器访问http://localhost:2379/v2/members查看。

简单的glance到此为止,上述etcd服务启动后,只有本地可以访问,如果其他机器需要访问,就需要在启动服务的时候,指定client-urls

./etcd --listen-client-urls http://192.168.56.101:2379 --advertise-client-urls http://192.168.56.101:2379
此时就可以使用指定的client-url访问了,例如http://192.168.56.101:2379/v2/members,返回结果如下

{
	"members": [{
		"id": "8e9e05c52164694d",
		"name": "default",
		"peerURLs": [
			"http://localhost:2380"
		],
		"clientURLs": [
			"http://192.168.56.101:2379"
		]
	}]
}

到此为止,单机版etcd服务的简单配置,基本就结束了。

下面开始集群的配置。

在机器A上的服务启动配置文件etcd0.json,内容如下

{
	"name": "etcd0",
	"listen-peer-urls": "http://192.168.56.101:2380",
	"listen-client-urls": "http://192.168.56.101:2379,http://127.0.0.1:2379",
	"initial-advertise-peer-urls": "http://192.168.56.101:2380",
	"initial-cluster": "etcd0=http://192.168.56.101:2380",
	"initial-cluster-state": "new",
	"data-dir": "/path/to/{$name}.etcd",
	"wal-dir": "/path/to/{$name}.wal",
	"initial-cluster-token": "etcd-cluster",
	"advertise-client-urls": "http://192.168.56.101:2379"
}
  • name: 服务节点可读的名称

  • listen-peer-urls:侦听对等流量的URL列表

  • listen-client-urls:用于客户端请求的url地址,多值逗号隔开

  • advertise-client-urls: 客户端通过这些url连接到集群

  • initial-advertise-peer-urls: 用于集群节点间通信的url地址

  • initial-cluster: 引导的初始集群配置,如果是第一台启动服务的节点,只需要配置当前节点即可

  • initial-cluster-state: 初始集群状态(new,existing),如果是第一台启动服务的节点,name值为new,其余的为existing

  • data-dir

  • wal-dir

  • initial-cluster-token: etcd集群启动时的初始集群令牌。在运行多个集群时,指定此选项可以防止意外的跨群集交互。同一个集群的节点使用同一个值。

通过制定config-file的方式启动节点

./etcd --config-file etcd0.json
在机器B上的服务启动配置文件etcd1.json,内容如下

{
	"name": "etcd1",
	"listen-peer-urls": "http://10.0.117.211:2380",
	"listen-client-urls": "http://10.0.117.211:12379,http://127.0.0.1:2379",
	"initial-advertise-peer-urls": "http://10.0.117.211:2380",
	"initial-cluster": "etcd0=http://192.168.56.101:2380,etcd1=http://10.0.117.211:2380",
	"data-dir": "/path/to/{$name}.etcd",
	"wal-dir": "/path/to/{$name}.wal",
	"initial-cluster-state": "existing",
	"initial-cluster-token": "etcd-cluster",
	"advertise-client-urls": "http://10.0.117.211:2379"
}

对于集群中已经有节点存在的情况下,需要注意以下几点

  • 配置文件中initial-cluster-state需要为existing

  • initial-cluster中要包含集群中其他已启动的节点以及当前节点

  • 最后也是最重要的,要先将当前节点添加到集群,再启动节点!

  • 添加当前节点到集群:执行命令 etcdctl member add <name> <peerURL>,上面的节点的话,命令是 ./etcdctl member add etcd1 "http://10.0.117.211:2380"

  • 启动当前节点 ./etcd --config-file etcd1.json

继续添加节点即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是在 CentOS 中部署 etcd 集群的步骤: 1. 下载 etcd 安装包 可以从 etcd 官网下载最新版的 etcd 安装包,下载地址为:https://github.com/etcd-io/etcd/releases 2. 解压安装包 将下载的 etcd 安装包解压到指定目录,比如 /usr/local/etcd ``` tar -zxvf etcd-v3.4.13-linux-amd64.tar.gz -C /usr/local/etcd --strip-components=1 ``` 3. 创建 etcd 配置文件 在每个节点上创建 etcd 配置文件,比如 /etc/etcd.conf,配置内容如下: ``` name=node1 # 节点名称,每个节点名称不同 data-dir=/var/lib/etcd # 数据存储目录 initial-cluster=node1=http://192.168.1.1:2380,node2=http://192.168.1.2:2380,node3=http://192.168.1.3:2380 # 集群中所有节点的地址和端口号 initial-advertise-peer-urls=http://192.168.1.1:2380 # 当前节点的地址和端口号 listen-peer-urls=http://192.168.1.1:2380 # 监听地址和端口号 listen-client-urls=http://192.168.1.1:2379,http://127.0.0.1:2379 # 监听客户端连接的地址和端口号,可以指定多个 advertise-client-urls=http://192.168.1.1:2379 # 当前节点对外提供服务的地址和端口号 initial-cluster-state=new # 集群状态,new 表示新建集群 ``` 其中,initial-cluster 中的节点名称和地址需要根据实际情况修改。 4. 启动 etcd 集群 在每个节点上启动 etcd 服务: ``` /usr/local/etcd/etcd --config-file /etc/etcd.conf ``` 5. 验证 etcd 集群 使用 etcdctl 工具验证 etcd 集群是否正常运行: ``` export ETCDCTL_API=3 etcdctl --endpoints=http://192.168.1.1:2379,http://192.168.1.2:2379,http://192.168.1.3:2379 member list ``` 如果返回了所有节点的信息,则说明 etcd 集群已经成功启动。 以上是在 CentOS 中部署 etcd 集群的步骤,希望能对你有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值