c4rt1y

zookeeper单机和集群搭建

0x00.介绍

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。【出自百度百科】

0x01. 环境描述

#两台centos7
10.10.10.20	 master
10.10.10.30  node01
10.10.10.30  node02

# 三台服务器的配置全部如下配置
#关闭firewalld
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service
#关闭selinux
[root@localhost ~]# sed -i 's:SELINUX=enforcing:SELINUX=disabled:g' /etc/selinux/config
[root@localhost ~]# setenforce 0


#java 环境安装
[root@localhost ~]# export JAVA_HOME=/root/jdk1.8.0_131
[root@localhost ~]# export PATH=$JAVA_HOME/bin:$PATH

#安装和同步时间
[root@localhost ~]# yum install chrony -y
#之前写的是 echo "server 10.10.10.20 iburst" >  /etc/chrony.conf   不过发现相差9小时,所以就有了下面的方法。
[root@localhost ~]# cat > /etc/chrony.conf<<OFF
server 10.10.10.20 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
OFF
#设置启动项和启动
[root@localhost ~]# systemctl enable chronyd.service
[root@localhost ~]# systemctl start chronyd.service
[root@localhost ~]# chronyc sources
#设置时区	
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai	
[root@localhost ~]# timedatectl status
#重新启动电脑
[root@localhost ~]# reboot

0x02.单机【以master作为单节点】

[root@localhost ~]# cp -r  /root/zookeeper-3.4.10/conf/zoo.cfg.simple /root/zookeeper-3.4.10/conf/zoo.cfg
[root@localhost ~]# grep -Ev '^$|^#' /root/zookeeper-3.4.10/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zookeeper_data
dataLogDir=/root/zookeeper_log
clientPort=2181
server.1=10.10.10.20:2888:3888

[root@localhost ~]# /root/zookeeper-3.4.10/bin/zkServer.sh start

[root@localhost ~]# /root/zookeeper-3.4.10/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: standalone

0x03.集群

# master上操作
[root@master ~]# cp -r  /root/zookeeper-3.4.10/conf/zoo.cfg.simple /root/zookeeper-3.4.10/conf/zoo.cfg
[root@master ~]# grep -Ev '^$|^#' /root/zookeeper-3.4.10/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zookeeper_data
dataLogDir=/root/zookeeper_log
clientPort=2181
server.1=10.10.10.20:2888:3888
server.2=10.10.10.30:2888:3888
server.3=10.10.10.40:2888:3888

[root@master ~]# scp /root/zookeeper-3.4.10/conf/zoo.cfg 10.10.10.30:/root/zookeeper-3.4.10/conf/zoo.cfg
[root@master ~]# scp /root/zookeeper-3.4.10/conf/zoo.cfg 10.10.10.40:/root/zookeeper-3.4.10/conf/zoo.cfg

# node1服务器操作
[root@node1 ~]# echo 1 > /root/zookeeper_data/myid

[root@node1 ~]# /root/zookeeper-3.4.10/bin/zkServer.sh start
[root@node1 ~]# /root/zookeeper-3.4.10/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

# node2服务器操作
[root@node1 ~]# echo 2 > /root/zookeeper_data/myid

[root@node2 ~]# /root/zookeeper-3.4.10/bin/zkServer.sh start
[root@node2 ~]# /root/zookeeper-3.4.10/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

# master服务器操作
[root@node1 ~]# echo 3 > /root/zookeeper_data/myid

[root@master ~]# /root/zookeeper-3.4.10/bin/zkServer.sh start
[root@master ~]# /root/zookeeper-3.4.10/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: master

0x04.信息查看

客户端安装nc, yum install nc -y

zookeeper服务器当前节点配置信息: echo conf|nc localhost 2181
cons:echo cons|nc localhost 2181 输出当前服务器所有客户端连接的详细信息
crst:重置所有客户端连接统计信息
dump:echo dump|nc localhost 2181,输出当前集群的所有会话消息
envi:echo envi|nc localhost 2181,输出服务器运行时的环境信息
ruok:echo ruok|nc localhost 2181,输出当前Zookeeper是否正在运行。是,则返回 'imok'。
stat:echo stat|nc localhost 2181,服务器运行时状态信息
srvr:和stat功能一致,但不会输出客户端连接情况;
srst:重置所有服务器统计信息;
wchs:echo wchs|nc localhost 2181,输出当前服务器管理的Watcher信息
wchp:echo wchp|nc localhost 2181,与wchs类似,但以节点路径为单位对Watcher信息进行归组;
mntr:echo mntr|nc localhost 2181,比stat更为详尽的服务器信息

0x05. 资料来源

https://www.jianshu.com/p/2ebc24427492
http://archive.apache.org/dist/zookeeper/
GoTop