文章目录
查看三个节点的zoo.cfg配置文件,主要查看server.id行
查看zookeeper.out运行日志,发现有好几个报错:连接被阻止
依次停止并开启zookeeper服务,并推选zookeeper1为leader
前言
根据项目练习开始搭建ZooKeeper,希望能帮到你
本次项目目标:
- 了解ZooKeeper分布式应用程序协调服务。
- 使用3台机器搭建ZooKeeper集群。
- 使用ZooKeeper集群。
项目准备
镜像
Linux-CentOS7
软件
VMware Workstation 15.5 Pro
MobaXterm_Personal_22.0
软件包
zookeeper-3.4.14.tar.gz
gpmall-repo
主机配置
2vCPU/4GB内存/50GB硬盘
节点规划
(见下表)
IP | 主机名 | 节点 |
---|---|---|
172.16.51.23 | zookeeper1 | 集群节点 |
172.16.51.32 | zookeeper2 | 集群节点 |
172.16.51.41 | zookeeper3 | 集群节点 |
提示:以下是本篇文章正文内容,下面案例可供参考
一、关于Zookeeper
![](https://i-blog.csdnimg.cn/blog_migrate/47739d36a173cec30f3dda99cf2078a8.gif)
1.ZooKeeper简介
ZooKeeper 是一种分布式同步协调服务与集中式组管理服务,用于管理大型场合。
2.ZooKeeper目录
[root@zookeeper3 zookeeper-3.4.14]# ls -l | grep ^d #只显示文件夹
(
drwxr-xr-x. 2 2002 2002 223 Sep 21 06:52 bin
drwxr-xr-x. 2 2002 2002 70 Sep 21 06:46 conf
drwxr-xr-x. 2 2002 2002 4096 Mar 6 2019 dist-maven
drwxr-xr-x. 4 2002 2002 4096 Mar 6 2019 lib
drwxr-xr-x. 3 2002 2002 22 Mar 6 2019 src
drwxr-xr-x. 3 2002 2002 47 Mar 6 2019 zookeeper-client
drwxr-xr-x. 12 2002 2002 4096 Mar 6 2019 zookeeper-contrib
drwxr-xr-x. 7 2002 2002 4096 Mar 6 2019 zookeeper-docs
drwxr-xr-x. 3 2002 2002 35 Mar 6 2019 zookeeper-it
drwxr-xr-x. 4 2002 2002 46 Mar 6 2019 zookeeper-jute
drwxr-xr-x. 5 2002 2002 176 Mar 6 2019 zookeeper-recipes
drwxr-xr-x. 3 2002 2002 32 Mar 6 2019 zookeeper-server
)
- bin:放置运行脚本与工具脚本(如果是Linux,还有运行日志zookeeper.out文件)
- conf:zookeeper配置文件
- zookeeper-docs:zookeeper相关文档
3.ZooKeeper集群角色
(图片来源于网络,侵删)
- Leader: ZooKeeper 集群工作的核心 事务请求(写操作)的唯一调度和处理者,保证集群事务处理的顺序性;集群内部各个服务的调度者。 对于 create,setData,delete 等有写操作的请求,则需要统一转发给 leader 处理,leader 需要决定编号、执行操作,这个过程称为一个事务。
- Follower: 处理客户端非事务(读操作)请求 转发事务请求给 Leader 参与集群 leader 选举投票2n-1台可以做集群投票 此外,针对访问量比较大的 zookeeper 集群,还可以新增观察者角色
- Observer: 观察者角色,观察ZooKeeper集群的最新状态变化并将这些状态同步过来,其对于非事务请求可以进行独立处理,对于事务请求,则会转发给Leader服务器处理 不会参与任何形式的投票只提供服务,通常用于在不影响集群事务处理能力的前提下提升集群的非事务处理能力 扯淡:说白了就是增加并发的请求。
4.ZooKeeper的作用
ZooKeeper主要用于分布式应用管理,他可以做到:统一配置管理、统一命名服务、分布式锁、集群管理。
二、使用步骤
1.基础配置
-
改名
zookeeper1:
[root@localhost ~]# hostnamectl set-hostname zookeeper1
[root@localhost ~]# su
su
[root@zookeeper1 ~]#
zookeeper2:
[root@localhost ~]# hostnamectl set-hostname zookeeper2
[root@localhost ~]# su
su
[root@zookeeper2 ~]#
zookeeper3:
[root@localhost ~]# hostnamectl set-hostname zookeeper3
[root@localhost ~]# su
su
[root@zookeeper3 ~]#
-
配置网卡(主要信息)
zookeeper1:
[root@zookeeper1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
{
BOOTPROTO=static
ONBOOT=yes
IPADDR=172.16.51.23
NETMASK=255.255.255.0
GATEWAY=172.16.51.254
DNS1=223.5.5.5 #阿里免费公共DNS
}
[root@zookeeper1 ~]# systemctl restart network #重启网