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月前
|
数据安全/隐私保护 Windows
安装 Windows Server 2019
安装 Windows Server 2019
|
2月前
|
Windows
安装 Windows Server 2003
安装 Windows Server 2003
|
2月前
|
NoSQL Shell MongoDB
Windows 平台安装 MongoDB
10月更文挑战第10天
56 0
Windows 平台安装 MongoDB
|
2月前
|
Windows Python
Windows安装dlib,遇到问题汇总解决
Windows安装dlib,遇到问题汇总解决
67 4
|
2月前
|
Oracle 关系型数据库 MySQL
Mysql(1)—简介及Windows环境下载安装
MySQL 是一个流行的关系型数据库管理系统(RDBMS),基于 SQL 进行操作。它由瑞典 MySQL AB 公司开发,后被 Sun Microsystems 收购,现为 Oracle 产品。MySQL 是最广泛使用的开源数据库之一,适用于 Web 应用程序、数据仓库和企业应用。
57 2
|
2月前
|
JavaScript Windows
windows安装vue
windows安装vue
|
2月前
|
应用服务中间件 Apache Windows
免安装版的Tomcat注册为windows服务
免安装版的Tomcat注册为windows服务
131 3
|
2月前
|
Linux 网络安全 虚拟化
适用于Linux的Windows子系统(WSL1)的安装与使用记录
并放到启动文件夹,就可以开机自动启动了。
62 0
|
2月前
|
Windows
安装Windows XP系统
安装Windows XP系统
|
2月前
|
Ubuntu Linux 开发工具
windows11安装WLS2+Ubuntu
windows11安装WLS2+Ubuntu