安装 ZooKeeper

本文详细介绍了ZooKeeper的单机服务安装步骤,包括配置Java环境、上传安装包、解压、创建数据目录、配置文件、启动与关闭服务、验证安装及使用客户端。同时,还阐述了ZooKeeper集群的配置,强调了群组配置中的服务器地址、myid文件的重要性,并提及了Observer节点的角色和集群中的角色分工。
摘要由CSDN通过智能技术生成

1. 单机服务

(1)配置 Java环境

(2)上传安装包

(3)安装包解压

tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz

(4)创建数据文件存放目录

mkdir -p /var/lib/zookeeper

(5)创建配置文件并写入配置(conf/zoo_sample.cfg文件提供了基本的配置示例)

cat > /usr/local/zookeeper/conf/zoo.cfg << EOF
> tickTime=2000
> dataDir=/var/lib/zookeeper
> clientPort=2181
> EOF

(6)启动、查看、关闭服务

sh zkServer.sh start # 使得zk服务进程在后台进行
sh zkServer.sh start-foreground  # 慎用,前台运行,能看到大量详细信息的输出,前台退出后status为not running,但是端口仍然被占用
sh zkServer.sh status 
sh zkServer.sh stop

(7)验证是否安装正确(会返回基本信息)

telnet localhost 2181
srvr

(8)连接客户端

# 连接客户端
zkCli.sh -server node1:2181,node2:2181,node3:2181

# 查看目录
ls /

# 创建节点
# 在集群模式下任意一个服务端节点创建了节点数据,都会同步到另外的ZK服务节点中去
create /firstNode  serverCreated

# 获取节点数据
get /firstNode

# 删除节点
delete /firstNode

2. ZooKeeper 群组

  • 由于使用了再均衡算法,一个 ZooKeeper 集群应该包含奇数个节点。
  • 只有当群组里的大多数节点处于可用状态时, Zookeeper 才能处理外部的请求。也就是说,一个包含 3 个节点的群组允许 1 个节点失效,而一个包含 5 个节点的群组允许 2 个节点失效。
  • 如果要对群组做一些如更换节点的修改,那么就需要依次重启每个节点。
  • 不建议一个群组包含超过 7 个节点,因为 ZooKeeper 使用了一致性协议,节点过多则会降低整个群组的性能。
  • 如果由于客户端连接太多,5 个或 7 个节点仍然无法支撑负载,则可以考虑增加额外的观察者节点来分摊只读流量。
  • 安装 ZooKeeper 群组与 ZooKeeper 单机服务的区别在于配置文件有差异,并且每个节点需要增加 myid 文件

(1)修改公共配置(所有服务器的地址)

  • tickTime:Zookeeper 服务器间或客户端与服务器间维持心跳的时间间隔,即每个 tickTime 时间发送一个心跳。以毫秒为单位。
  • initLimit:用来配置 Zookeeper 接受客户端初始化连接时最长能忍受多少个心跳时间间隔数(这里的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)。当已经超过 5 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10 * 2000 = 20 秒。
  • syncLimit:标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5 * 2000 = 10 秒。
  • server.X= hostname:peerPort:leaderPort
    • X:服务器的ID,必须是一个整数,不过不一定要从零开始,也不要求是连续的。
    • hostname:服务器主机名或 IP 地址
    • peerPort:用于节点间通信的 TCP 端口。
    • leaderPort:用于首领选举的 TCP 端口。
  • authProvider.X:用于安全认证。
  • autopurge.snapRetainCount:保留多少个 snapshot ,之前的则删除。
  • autopurge.purgeInterval:设置多少小时清理一次。
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/lib/zookeeper
clientPort=2181
server.1= 10.8.212.55:2888:3888
server.2= 10.8.213.55:2888:3888 
server.3= 10.8.214.55:2888:3888 
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
authProvider.2=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
authProvider.3=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
autopurge.snapRetainCount=10
autopurge.purgeInterval=1

(2)新增 myid 文件

  • 每台服务器必须在 dataDir 指定的目录下创建一个叫作 myid 文件,文件中要包含服务器 ID,这个 ID要与配置文件中的 ID 一致。

(3)集群中增加Observer节点

  • zoo4.cfg 节点配置中增加如下配置
# zoo4.cfg中单独添加
peerType=observer
#servers列表中增加(集群中的所有zoox.cfg都需要添加)
server.4=localhost:2890:3890

集群中的角色

  • 领导者(Leader): 领导者不接受客户端请求,负责进行投票的发起和决议。
  • 跟随者(Follower): 用于接收客户端请求并返回结果,同时参与 Leader 发起的投票。
  • 观察者(Observer):Observer 可以接受客户端请求,并把请求转发给 Leader, 但是Observer不参与投票过程,只是同步 Leader 的转态, Observer 为系统扩展提供了一种方式。
  • 学习者(Learner):和 Leader 进行状态同步的 server 统称为 Learner, 以上的 Follower 和 Observer 都是 Learner。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值