etcd集群部署

1.etcd介绍

1.1 什么是etcd

etcd的官方定义如下:

A distributed, reliable key-value store for the most critical data of 
distributed system

etcd是一个Go语言编写的分布式、高可用的一致性键值存储系统,用于提供可靠的分布式键值(key
value)存储、配置共享和服务发现等功能。
官网:etcd官网
文档:文档地址

1.2 etcd的应用场景

分布式系统中的数据分为控制数据和应用数据。etcd的使用场景默认处理的数据都是控制数据,对于
应用数据,只推荐数据量很小,但是更新访问频繁的情况。常见的etcd使用场景包括:服务发现、分
布式锁、分布式队列、分布式通知和协调、主备选举等。

1.3为什么使用etcd

与ZooKeeper相比,etcd更简单,安装、部署和使用更加容易,并且etcd的某些功能是ZooKeeper所
没有的。因此,在很多场景下,etcd比ZooKeeper更受用户的青睐,具体表现在如下几个方面:

  • etcd更加稳定可靠,它的唯一目标就是把分布式一致性KV存储做到极致,所以它更注重稳定 性和扩展性。
  • 在服务发现的实现上,etcd使用的是节点租约(Lease),并且支持Group(多key):而ZooKeeper使用的是临时节点,临时节点存在不少的问题。
  • etcd支持稳定的watch,而不是ZooKeeper一样简单的单次触发(onetimetrigger)watch 因为在微服务的环境下,通过调度系统的调度,一个服务随时可能会下线,也可能为应对临时访问压力而增加新的服务节点,而很多调度系统是需要得到完整节点历史记录的,在这方面,etcd可以存储数十万个历史变更。
  • etcd支持MVCC(多版本并发控制),因为有协同系统需要无锁操作。
  • etcd支持更大的数据规模,支持存储百万到千万级别的key。
  • 相比ZooKeeper,etcd的性能更好。在一个由3台8核节点组成的云服务器上,etcdv3版本
    可以做到每秒数万次的写操作和数十万次的读操作,

在这里插入图片描述

2.etcd实战

2.1 etcd环境搭建

对于搭建开发和测试环境,最简单和快捷的方式是在本地部署一个单机版或集群版的etcd环境。
单实例etcd部署
etcd社区提供了编译好的etcd服务器和客户端的二进制文件以下载

 wget https://github.com/etcd-io/etcd/releases/download/v3.5.13/etcd-v3.5.13-linux-amd64.tar.gz
 tar -zxvf etcd-v3.5.13-linux-amd64.tar.gz
 cd etcd-v3.5.13-linux-amd64
#启动etcd服务
./etcd
#后台启动etcd,日志文件输出到/tmp/etcd.log目录
 nohup./etcd>/tmp/etcd.log 2>&1 &
#查看etcd版本
./etcd-version
#将etcd和etcdctl复制到/usr/local/bin目录,系统中可以直接调用etcd/etcdctl
 cp etcd etcdctl/usr/local/bin

2.2单机多实例etcd部署

etcdserver默认使用2380端口监听集群中其他server的请求,但是如果在同一台机器上有多个
etcdserver都在同一个端口上监听,那么会导致端口冲突。作为示例,我们分别让3个etcdserver
监听在12380、22380、32380端口上。
我们可以通过进程管理工具goreman,快速创建、停止本地的多节点etcd集群


#安装goreman,依赖go环境

go install github.com/mattn/goreman@latest
goreman help

利用goreman创建3节点etcd集群
编写local-cluster-profile文件

etcd1: etcd --name infra1 --listen-client-urls http://127.0.0.1:12379 --advertise-client-urls http://127.0.0.1:12379 --listen-peer urls http://127.0.0.1:12380 --initial-advertise-peer-urls http://127.0.0.1:12380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http:///127.0.0.1:22380,infra3=http://127.0.0.1:32380' --initial-cluster-state new
etcd2: etcd --name infra2 --listen-client-urls http://127.0.0.1:22379 --advertise-client-urls http://127.0.0.1:22379 --listen-peer urls http://127.0.0.1:22380 --initial-advertise-peer-urls http://127.0.0.1:22380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http:///127.0.0.1:22380,infra3=http://127.0.0.1:32380' --initial-cluster-state new
etcd3: etcd --name infra3 --listen-client-urls http://127.0.0.1:32379 --advertise-client-urls http://127.0.0.1:32379 --listen-peer urls http://127.0.0.1:32380 --initial-advertise-peer-urls http://127.0.0.1:32380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http:///127.0.0.1:22380,infra3=http://127.0.0.1:32380' --initial-cluster-state new

在这里插入图片描述

  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值