基于Linux搭建Zookeeper集群

系统环境

# 操作系统版本
[admin@sparklee ~]$ cat /etc/issue
CentOS release 6.8 (Final)

# Zookeeper版本
zookeeper-3.4.12

# Zookeeper依赖JAVA环境
sudo yum install java

单节点Zookeeper服务

第一步,从最简单模式入手,搭建一个单节点Zookeeper服务

# 下载zookeeper-3.4.12
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz

# 解压
tar zxvf zookeeper-3.4.12.tar.gz
cd zookeeper-3.4.12

# 配置-基于Zookeeper自带的示例配置文件创建我们需要的配置文件
cp conf/zoo_sample.cfg conf/zoo.cfg

# 配置-修改配置文件中Zookeeper数据存放目录,此目录根据个人需求自定义即可
vim conf/zoo.cfg -> dataDir=/home/admin/zookeeper-3.4.12/data

# 启动Zookeeper服务
# start-foreground是以debug模式启动Zookeeper服务,如此便可在当前终端实时看到Zookeeper服务的运行日志,如果想要以daemon后台模式启动,使用./bin/zkServer.sh start即可。
./bin/zkServer.sh start-foreground

使用Zookeeper自带的客户端访问Zookeeper服务 

# 因为上面我们是以debug模式启动Zookeeper服务,所以需要另外开启一个新的SSH会话,以便操作Zookeeper客户端
cd /home/admin/zookeeper-3.4.12
./bin/zkCli.sh 或 ./bin/zkCli.sh -server 127.0.0.1:2181

# 罗列出Zookeeper根节点下面的所有一级节点
[zk: 127.0.0.1:2181(CONNECTED) 0] ls /
[zookeeper]

# 设置节点的值
[zk: 127.0.0.1:2181(CONNECTED) 3] set /zookeeper "Hello World."
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x6
mtime = Tue Aug 28 10:18:45 CST 2018
pZxid = 0x0
cversion = -1
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 12
numChildren = 1

# 获取节点的值
[zk: 127.0.0.1:2181(CONNECTED) 4] get /zookeeper               
Hello World.
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x6
mtime = Tue Aug 28 10:18:45 CST 2018
pZxid = 0x0
cversion = -1
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 12
numChildren = 1

使用可视化客户端ZooInspector访问Zookeeper服务

ZooInspector下载地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip

ZooInspector使用:下载后 -> 解压 -> 进入build目录 -> 执行命令:java -jar zookeeper-dev-ZooInspector.jar

注:ZooInspector是用java写的,所以你本地需要有java环境

双节点Zookeeper服务集群

第二步,搭建两个节点的Zookeeper服务集群 (不推荐,因为双节点Zookeeper服务集群同样存在单点故障,亦即只要有一个节点挂了,另一个节点也无法再提供服务,相当于整个集群就崩了。至于为什么会这样,请看下面“三节点Zookeeper服务集群”的说明)

首先,根据上文所述,在一台新的主机上也搭建好Zookeeper环境

如此,现在我们便拥有了两个Zookeeper节点,假定IP地址分别为:192.168.1.1 和 192.168.1.2

下面,我们来修改一下各个节点的Zookeeper配置,以便使两个节点连接成为一个集群

# 在两个节点的配置文件中都追加如下“节点配置”内容
vim conf/zoo.cfg ->
---------------------------------
server.1=192.168.1.1:2888:3888
server.2=192.168.1.2:2888:3888
---------------------------------

# 修改节点192.168.1.1的myid
# myid的文件内容和上述“节点配置”内容中的"server.1=..."中的1相对应,如果“节点配置”为"server.zk1=...",则myid的内容就是"zk1"
echo "1" > data/myid

# 修改节点192.168.1.2的myid
# myid的文件内容和上述“节点配置”内容中的"server.2=..."中的2相对应,如果“节点配置”为"server.zk2=...",则myid的内容就是"zk2"
echo "2" > data/myid

# 在两个节点上分别都启动Zookeeper服务
# 注:两个节点上的Zookeeper服务同时启动,或先后启动都是OK的
./bin/zkServer.sh start-foreground

下面提供一个使用xshell同时操作多台主机的便捷方法:打开多个xshell会话 -> 工具 -> 勾选“发送键输入到所有会话(K)” 

三节点Zookeeper服务集群

第三步,搭建三个节点的Zookeeper服务集群 (最精典,最小的Zookeeper服务集群)

因为Zookeeper集群有如下特性“半数以上节点存活,即可对外提供服务;但若只有一半或以下节点存活,整个集群就崩了”,所以一般的做法是保证Zookeeper集群节点数为奇数,故最小的Zookeeper服务集群其节点数为3个。

和搭建双节点Zookeeper服务集群一样的道理,只不过是再添加一个Zookeeper节点而已。同样的道理,你可以搭建任意2n+1个节点的Zookeeper集群。

多节点数据实时同步

zookeeper自带高可用,除了集群中一半以下节点挂掉依然能够正常提供服务外,在任一节点修改数据,zookeeper服务都将同步此修改至集群中的所有节点,保证集群中的所有节点的数据永远都是一样的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值