Fu
Simple is Beautiful!

搭建zookeeper集群

zookeeper 是一个为分布式应用提供高效、高可用的分布式协调服务, 提供了诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知和分布式锁等分布式基础服务。

本博客讲解 debian9.4 系统下 zookeeper 集群的搭建,集群机器 ip 如下:

安装包

分别在集群机器上安装 java 环境包和 zookeeperd 包:

apt install openjdk-8-jre-headless
apt install zookeeperd

创建工作目录

mkdir -p /var/lib/zookeeper
mkdir -p /var/log/zookeeper

配置 zookeeper myid

zookeeper 利用 myid 来唯一标识 zookeeper 节点,从而利用它来辨别集群中的每一个节点, 因此集群中的每一个 zookeeper 节点的 myid 不能重复出现, 我们将 myid 写在 /var/lib/zookeeper/myid 文件中:

在此将三台机器的 ip 尾数作为 zookeeper 节点的 myid,比如 10.0.0.3 节点的 myid3, 因此在 10.0.0.3 机器上的 /var/lib/zookeeper/myid 文件内容为:

3

配置 zookeeper zoo.cfg

每一个节点机器上都需要配置 /etc/zookeeper/conf/zoo.cfg 文件,配置如下:

dataDir=/var/lib/zookeeper
dataLogDir=/var/log/zookeeper
tickTime=2000
clientPort=2181
initLimit=5
syncLimit=2
autopurge.purgeInterval=48
autopurge.snapRetainCount=10

server.2=10.0.0.2:2888:3888
server.3=10.0.0.3:2888:3888
server.4=10.0.0.4:2888:3888

配置 systemd service

zookeeper 的 service 已经被安装在 /lib/systemd/system/zookeeper.service 中, 内容如下:

[Unit]
Description=Coordination service for distributed applications
After=network.target
ConditionPathExists=/var/lib/zookeeper/myid

[Service]
Type=simple
User=zookeeper
SyslogIdentifier=zookeeper
EnvironmentFile=/etc/zookeeper/conf/environment
EnvironmentFile=-/etc/default/zookeeper
ExecStart=/usr/bin/java -cp ${CLASSPATH} $JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxre
SuccessExitStatus=143
# ZooKeeper is "fail-fast", see https://zookeeper.apache.org/doc/r3.4.8/zookeeperAdmin.html#sc_supervision
Restart=always

[Install]
WantedBy=multi-user.target

在每一台机器上运行开启 zookeeper:

systemctl start zookeeper

可以将 zookeeper 设为开机自启动:

systemctl enable zookeeper

检测 zookeeper

随便 ssh 进入一台机器,运行以下命令查看 zookeeper 集群健康情况:

echo mntr | nc 127.0.0.1 2181

类似四字命令也有:

具体详情请看:zookeeper Admin 文档

测试 zookeeper 命令

开启 zookeeper cli 客户端:

cd /usr/share/zookeeper
./bin/zkCli.sh -server 127.0.0.1

进入 cli 环境后就可以测试各种 zookeeper 命令了:

[zk: 127.0.0.1(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
	stat path [watch]
	set path data [version]
	ls path [watch]
	delquota [-n|-b] path
	ls2 path [watch]
	setAcl path acl
	setquota -n|-b val path
	history 
	redo cmdno
	printwatches on|off
	delete path [version]
	sync path
	listquota path
	rmr path
	get path [watch]
	create [-s] [-e] path data acl
	addauth scheme auth
	quit 
	getAcl path
	close 
	connect host:port
zookeeper2分布式3
2018-04-16 11:06:18