Windows下安装etcd集群及zRPC的简单使用

简介: Windows下安装etcd集群及zRPC的简单使用

etcd简介


etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。


etcd作为服务发现系统,有以下的特点:


  • 简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单


  • 安全:支持SSL证书验证


  • 快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作


  • 可靠:采用raft算法,实现分布式系统数据的可用性和一致性


etcd项目地址:https://github.com/etcd-io/etcd


etcd应用场景


etcd比较多的应用场景是用于服务发现,服务发现(Service Discovery)要解决的是分布式系统中最常见的问题之一,即在同一个分布式集群中的进程或服务如何才能找到对方并建立连接。


从本质上说,服务发现就是要了解集群中是否有进程在监听upd或者tcp端口,并且通过名字就可以进行查找和链接。


要解决服务发现的问题,需要下面三大支柱,缺一不可。


  • 一个强一致性、高可用的服务存储目录。


基于Ralf算法的etcd天生就是这样一个强一致性、高可用的服务存储目录。


  • 一种注册服务和健康服务健康状况的机制。


用户可以在etcd中注册服务,并且对注册的服务配置key TTL,定时保持服务的心跳以达到监控健康状态的效果。


  • 一种查找和连接服务的机制。


etcd 安装包的下载地址


etcd地址:https://github.com/etcd-io/etcd/releases


选择对应的版本下载即可,Windows版本解压后文件目录如下:



etcd是服务端,etcdctl 是内置客户端


查看版本号  etcdctl --version



建议API version的版本设为3


windows下设置版本,使用: set ETCDCTL_API=3


etcdctl help查看版本3和2命令和功能方面有不少的差别







etcdctl的V3版本查看所有的keys,指令为:


etcdctl get "" --prefix --keys-only





在同级目录分别创建如下三个启动脚本:


默认使用2379端口提供HTTP API服务,2380端口和peer通信。


start01.bat


.\etcd.exe --name etcd01 ^
--data-dir .\data\etcd01 ^
--advertise-client-urls http://127.0.0.1:2379 ^
--listen-client-urls http://127.0.0.1:2379 ^
--listen-peer-urls http://127.0.0.1:2380 ^
--initial-advertise-peer-urls http://127.0.0.1:2380 ^
--initial-cluster-token etcd-cluster-1 ^
--initial-cluster etcd01=http://127.0.0.1:2380,etcd02=http://127.0.0.1:2381,etcd03=http://127.0.0.1:2382 ^
--initial-cluster-state new
pause


start02.bat


.\etcd.exe --name etcd02 ^
--data-dir .\data\etcd02 ^
--advertise-client-urls http://127.0.0.1:3379 ^
--listen-client-urls http://127.0.0.1:3379 ^
--listen-peer-urls http://127.0.0.1:2381 ^
--initial-advertise-peer-urls http://127.0.0.1:2381 ^
--initial-cluster-token etcd-cluster-1 ^
--initial-cluster etcd01=http://127.0.0.1:2380,etcd02=http://127.0.0.1:2381,etcd03=http://127.0.0.1:2382 ^
--initial-cluster-state new
pause


start03.bat


.\etcd.exe --name etcd03 ^
--data-dir .\data\etcd03 ^
--advertise-client-urls http://127.0.0.1:4379 ^
--listen-client-urls http://127.0.0.1:4379 ^
--listen-peer-urls http://127.0.0.1:2382 ^
--initial-advertise-peer-urls http://127.0.0.1:2382 ^
--initial-cluster-token etcd-cluster-1 ^
--initial-cluster etcd01=http://127.0.0.1:2380,etcd02=http://127.0.0.1:2381,etcd03=http://127.0.0.1:2382 ^
--initial-cluster-state new
pause


然后在同级目录下创建好对应的data-dir,如/data/etcd01、/data/etcd02、/data/etcd03,不创建也行,启动后会自动创建。


依次启动start01.bat、start02.bat、start03.bat三个脚本,然后使用etcdctl.exe member list,当输出如下信息时,代表集群创建成功了。


etcd集群启动参数说明


参数

使用说明

 

--name etcd0 本member的名字

--initial-advertise-peer-urls http://192.168.2.55:2380

其他member使用,其他member通过该地址与本member交互信息。一定要保证从其他member能可访问该地址。静态配置方式下,该参数的value一定要同时在--initial-cluster参数中存在。


memberID的生成受--initial-cluster-token和--initial-advertise-peer-urls影响。



--listen-peer-urls  http://0.0.0.0:2380

本member侧使用,用于监听其他member发送信息的地址。ip为全0代表监听本member侧所有接口


--listen-client-urls http://0.0.0.0:2379

本member侧使用,用于监听etcd客户发送信息的地址。ip为全0代表监听本member侧所有接口


--advertise-client-urls http://192.168.2.55:2379

etcd客户使用,客户通过该地址与本member交互信息。一定要保证从客户侧能可访问该地址


--initial-cluster-token etcd-cluster-2

用于区分不同集群。本地如有多个集群要设为不同。 


--initial-cluster etcd0=http://192.168.2.55:2380,

etcd1=http://192.168.2.54:2380

,etcd2=http://192.168.2.56:2380

本member侧使用。描述集群中所有节点的信息,本member根据此信息去联系其他member。

memberID的生成受--initial-cluster-token和--initial-advertise-peer-urls影响。


--initial-cluster-state new

用于指示本次是否为新建集群。有两个取值new和existing。如果填为existing,则该member启动时会尝试与其他member交互。


集群初次建立时,要填为new,经尝试最后一个节点填existing也正常,其他节点不能填为existing。


集群运行过程中,一个member故障后恢复时填为existing,经尝试填为new也正常。



-data-dir

指定节点的数据存储目录,这些数据包括节点ID,集群ID,集群初始化配置,Snapshot文件,若未指定-wal-dir,还会存储WAL文件;如果不指定会用缺省目录。


-discovery http://192.168.1.163:20003/v2/keys/discovery/78b12ad7-2c1d-40db-9416-3727baf686cb

用于自发现模式下,指定第三方etcd上key地址,要建立的集群各member都会向其注册自己的地址。



  • —data-dir 指定节点的数据存储目录,这些数据包括节点ID,集群ID,集群初始化配置,Snapshot文件,若未指定—wal-dir,还会存储WAL文件;


  • —wal-dir 指定节点的was文件的存储目录,若指定了该参数,wal文件会和其他数据文件分开存储。


  • —name 节点名称


  • —initial-advertise-peer-urls 告知集群其他节点url.


  • — listen-peer-urls 监听URL,用于与其他节点通讯


  • — advertise-client-urls 告知客户端url, 也就是服务的url


  • — initial-cluster-token 集群的ID


  • — initial-cluster 集群中所有节点



相关文章
|
2月前
|
人工智能 JavaScript 开发工具
极速上手!Claude Code 原生支持 Windows 免WSL安装教程
Claude Code 现已支持 Windows 原生运行,无需 WSL 配置。本文提供详细安装教程,涵盖 Node.js 环境验证、Git 安装及 Claude Code 配置步骤,助你快速上手这一强大 AI 编程工具。
1294 5
|
2月前
|
存储 虚拟化 Windows
VMware安装Windows10
本案例介绍了在Windows系统上使用VMware Workstation 17.5 Pro安装配置Windows 10虚拟机的详细步骤,包括所需设备、软件下载链接、虚拟机设置及系统安装全过程。
313 133
VMware安装Windows10
|
3月前
|
Ubuntu Unix Linux
在Windows上轻松安装和使用Ubuntu的方法详解
继续点击“Continue”按钮以继续安装流程,随后选择清理磁盘并安装操作系统的选项。 接下来,在安装过程中,你需要选择时区。为了与你的地理位置相匹配,请选择中国上海作为你的时区设置。 在安装过程中,你还需要设置计算机的名称以及账号密码。请务必牢记这些信息,因为它们将作为你登录系统的凭证。
|
1月前
|
安全 Ubuntu iOS开发
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
129 3
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
|
2月前
|
安全 数据安全/隐私保护 Windows
ZyperWin++使用教程!让Windows更丝滑!c盘飘红一键搞定!ZyperWin++解决系统优化、Office安装和系统激活
ZyperWin++是一款仅5MB的开源免费Windows优化工具,支持快速优化、自定义设置与垃圾清理,兼具系统加速、隐私保护、Office安装等功能,轻便无广告,小白也能轻松上手,是提升电脑性能的全能管家。
901 0
|
3月前
|
Ubuntu Linux Windows
如何在Ubuntu系统中安装Wine,借此来运行Windows程序
熟悉的登录画面出现,在Ubuntu系统中扫描登录微信程序。
|
3月前
|
Ubuntu Linux Shell
手把手教你安装适用于Linux的Windows子系统——Ubuntu
重启完成,你看看重新打开Ubuntu是不是发生了变化,等待几分钟,系统配置完成,根据提示设置用户名和密码即可
|
3月前
|
Ubuntu Linux 数据安全/隐私保护
Windows上快速安装Linux子系统Ubuntu
Installing, this may take a few minutes...WslRegisterDistribution failed with error: 0x800701bcError: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernelPress any key to continue... 原因是 wsl1 升级到 wsl2 之后,内核却没有升级。 解决:下载最新的wsl安装包(wsl安装包)