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 集群中所有节点



相关文章
|
10天前
|
iOS开发 MacOS Windows
Mac air使用Boot Camp安装win10 ,拷贝 Windows 文件时出错
Mac air使用Boot Camp安装win10 ,拷贝 Windows 文件时出错
9-14|npm install --global windows-build-tools 安装太慢了,能够指定国内源
9-14|npm install --global windows-build-tools 安装太慢了,能够指定国内源
|
25天前
|
Windows
Windows操作系统部署安装Kerberos客户端
详细介绍了在Windows操作系统上部署安装Kerberos客户端的完整过程,包括下载安装包、安装步骤、自定义安装路径、修改环境变量、配置hosts文件和Kerberos配置文件,以及安装后的验证步骤。
40 3
Windows操作系统部署安装Kerberos客户端
|
16天前
|
SQL JavaScript 数据库
sqlite在Windows环境下安装、使用、node.js连接
sqlite在Windows环境下安装、使用、node.js连接
|
1月前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
24天前
|
网络安全 虚拟化 Windows
windows 11安装openSSH server 遇到的"kex_exchange_identification: read: Connection reset"问题
windows 11安装openSSH server 遇到的"kex_exchange_identification: read: Connection reset"问题
|
1月前
|
Ubuntu Linux 虚拟化
安装Windows Linux 子系统的方法:适用于windows 11 版本
本文提供了在Windows 11系统上安装Linux子系统(WSL)的详细步骤,包括启用子系统和虚拟化功能、从Microsoft Store安装Linux发行版、设置WSL默认版本、安装WSL2补丁,以及完成Ubuntu的首次安装设置。
87 2
|
30天前
|
API Docker Windows
2024 Ollama 一站式解决在Windows系统安装、使用、定制服务与实战案例
这篇文章是一份关于Ollama工具的一站式使用指南,涵盖了在Windows系统上安装、使用和定制服务,以及实战案例。
2024 Ollama 一站式解决在Windows系统安装、使用、定制服务与实战案例
|
1月前
|
网络安全 Windows
windows安装ssh服务
windows安装ssh服务
24 0
|
1月前
|
Linux Python Windows
【Azure 环境】Windows中安装Python azure-eventhub-checkpointstoreblob-aio模块时出错 ERROR: Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory:
【Azure 环境】Windows中安装Python azure-eventhub-checkpointstoreblob-aio模块时出错 ERROR: Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: