简介
Apache ZooKeeper目标是高度可靠的分布式协调系统,解决了分布式环境下的协同配置(统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。)
特性
安装
1.jdk1.8部署(略)
2.zookeeper.apache.og下载最新稳定版
3.解压到/usr/local,并软连接到zk
tar xzf zookeeper-3.4.10.tar.gz
mv zookeeper-3.4.10 /usr/local/
ln -s zookeeper-3.4.10 zk
cd /usr/local/zk/conf/ && rm -f zkCli.cmd zkEnv.cmd zkServer.cmd
3.创建配置文件
cat >/usr/local/zk/conf/zoo.cfg <
1 initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s.
2 syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms
4.增加环境变量,启动服务
cat >>/etc/profile <zkServer.sh start
5.使用zkCli.sh连接zk
基本操作
$>help
$>ls /
$>get /zookeeper
$>create /name dinghe
$>set /name abc
$>delete /name
$>rmr /a
备注:目录下有数据,delete目录删除会失败,rmr成功
单机伪集群搭建(测试环境用)
基本环境
主机名 | IP地址 | 监听端口 | leader交互端口 | 选举端口 | myid |
---|---|---|---|---|---|
zk01 | 192.168.0.230 | 2181 | 6001 | 6101 | 1 |
zk01 | 192.168.0.230 | 2182 | 6002 | 6102 | 2 |
zk01 | 192.168.0.230 | 2183 | 6003 | 6103 | 3 |
文件目录和配置
主机名 | 配置目录 | 数据目录 | myid目录 |
---|---|---|---|
zk01 | /usr/local/zk/conf/zk01.cfg | /data/zk01/ | /data/zk01/myid |
zk01 | /usr/local/zk/conf/zk02.cfg | /data/zk02/ | /data/zk02/myid |
zk01 | /usr/local/zk/conf/zk03.cfg | /data/zk03/ | /data/zk03/myid |
服务安装
jdk1.8安装(略)
cd /opt
http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
tar xzf zookeeper-3.4.10.tar.gz
mv zookeeper-3.4.10 /usr/local/ && cd /usr/local/
ln -s zookeeper-3.4.10 zk
初始化配置
useradd zookeeper
mkdir /data/zk0{1..3}/logs -p
chown -R zookeeper.zookeeper /data/zk0{1..3}
chown -R zookeeper.zookeeper /usr/local/zookeeper-*
cd /usr/local/zk/bin/ && rm -f zkCli.cmd zkEnv.cmd zkServer.cmd
增加环境变量
echo ' ' >> /etc/profile
echo '#Add zookeeper env. 20170822 ' >> /etc/profile
echo 'export ZOOKEEPER_HOME=/usr/local/zk' >> /etc/profile
echo 'export PATH=$PATH:$ZOOKEEPER_HOME/bin' >> /etc/profile
. /etc/profile
su - zookeeper
初始化myid
echo 1 >> /data/zk01/myid
echo 2 >> /data/zk02/myid
echo 3 >> /data/zk03/myid
编辑配置文件
#zk01.cfg
itickTime=2000
dataDir=/data/zk01/
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.0.112:6001:6101
server.2=192.168.0.112:6002:6102
server.3=192.168.0.112:6003:6103
#zk02.cfg
itickTime=2000
dataDir=/data/zk02/
dataLogDir=/data/zk02/logs
clientPort=2182
initLimit=5
syncLimit=2
server.1=192.168.0.112:6001:6101
server.2=192.168.0.112:6002:6102
server.3=192.168.0.112:6003:6103
#zk03.cfg
itickTime=2000
dataDir=/data/zk03/
clientPort=2183
initLimit=5
syncLimit=2
server.1=192.168.0.112:6001:6101
server.2=192.168.0.112:6002:6102
server.3=192.168.0.112:6003:6103
连接集群并测试
zkCli.sh -server 192.168.0.112:2181,192.168.0.112:2182,192.168.0.112:2183
分布式集群搭建(生产环境用)
基本环境
主机名 | IP地址 | myid |
---|---|---|
zk01 | 192.168.0.230 | 1 |
zk02 | 192.168.0.231 | 2 |
zk03 | 192.168.0.232 | 3 |
端口配置
Port | 作用 |
---|---|
2181 | 服务监听 |
2888 | zk与Leader通讯,Master监听该端口 |
3888 | zk选举Leader用 |
角色关系
client
client是集群中的一个节点,以固定间隔时间向server发消息,表示自己存活,Server向client回传ack确认消息
如果client没有收到ack消息,自动冲顶效到另外一台server
server zk集群中一个节点,想client提供所有服务
想client发送ack消息,表明server还健在
Ensemble
zk集群,成员最小数是3
Follower
服务器节点,执行leader的指令
服务安装
cd /opt
http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
tar xzf zookeeper-3.4.10.tar.gz
mv zookeeper-3.4.10 /usr/local/ && cd /usr/local/
ln -s zookeeper-3.4.10 zk
初始化配置
所有zk服务器创建数据目录和用户
useradd zookeeper
mkdir /data/zk/logs -p
chown -R zookeeper.zookeeper /data/zk
chown -R zookeeper.zookeeper /usr/local/zookeeper-*
cd /usr/local/zk/bin/ && rm -f zkCli.cmd zkEnv.cmd zkServer.cmd
增加环境变量
echo ' ' >> /etc/profile
echo '#Add zookeeper env. 20170821 ' >> /etc/profile
echo 'export ZOOKEEPER_HOME=/usr/local/zk' >> /etc/profile
echo 'export PATH=$PATH:$ZOOKEEPER_HOME/bin' >> /etc/profile
. /etc/profile
su - zookeeper
配置文件
zk01/zk02/zk03
itickTime=2000
dataDir=/data/zk/
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.0.230:2888:3888
server.2=192.168.0.231:2888:3888
server.3=192.168.0.232:2888:3888
初始化myid
#192.168.0.230
echo 1 >> /data/zk/myid
#192.168.0.231
echo 2 >> /data/zk/myid
#192.168.0.232
echo 3 >> /data/zk/myid
启动集群,查看角色状态
zkServer.sh start
zkServer.sh stop
zkServer.sh status
执行 zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zk/bin/../conf/zoo.cfg
Mode: leader
连接集群并测试
zkCli.sh -server 192.168.0.112:2181,192.168.0.112:2182,192.168.0.112:2183
停止leader,查看其他zk节点,观察leader切换情况