Zookeeper

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

ZooKeeper是一个高性能,可扩展的服务,只要集群中超过一半的节点正常,那么整个集群就可以正常对外提供服务。Zookeeper有数据一致性的保证:顺序一致性,客户端的更新会按照它们发送的次序排序;原子性,更新要么成功,要么失败,不会出现部分成功的(更新操作)结果。单独系统镜像,不管客户端连哪个服务器,它看来都是同一个。可靠性,一旦更新生效,它就会一直保存到下一次客户端更新。

安装

下载:

# 这个已经不是稳定了
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.6.tar.gz

# 
http://archive.apache.org/dist/zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz
http://archive.apache.org/dist/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz


解压与软链接:

tar -zxvf zookeeper-3.4.6.tar.gz -C /opt

#可以不要
ln -s /opt/zookeeper-3.4.6 /opt/zookeeper

chown -R zookeeper:zookeeper /opt/zookeeper*

复制配置文件

cp conf/zoo_sample.cfg conf/zoo.cfg

配置

zoo.cfg

tickTime=2000

#数据目录. 可以是任意目录
dataDir=/home/zookeeper/data

#log目录, 可以是任意目录
dataLogDir=/home/zookeeper/dataLog

#client连接的端口
clientPort=2181

#配置集群
server.1=192.168.1.213:2888:3888
server.2=192.168.1.214:2888:3888
server.3=192.168.1.215:2888:3888

server.A=B:C:D:其中A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

dataDir 目录中创建一个名为 myid 文件,在文件中写入节点ID,与zoo.cfg中的集群配置相对应

在集群模式中各server的dataDir目录下的myid文件中的数字必须不同

单机版直接解压缩启动就可以了,不用改什么配置

命令

启动

bin/zkServer.sh start  

查看状态

bin/zkServer.sh status

停止

bin/zkServer.sh stop

启动client连接server

bin/zkCli.sh -server localhost:2181  

查看状态

echo stat | nc 192.168.1.213 2181
echo stat | nc 192.168.1.214 2181
echo stat | nc 192.168.1.215 2181
echo stat | nc 192.168.1.216 2181
echo stat | nc 192.168.1.217 2181

服务化

【基于 CentOS 7】

在/usr/lib/systemd/system/ 目录中创建zookeeper.service文件。
文件内容如下:

日志目录和安装目录自己按照实际情况改

[Unit]
Description=Zookeeper Service
After=network.target 

[Service]
Environment=ZOO_LOG_DIR=/data/zookeeper/zookeeper-3.4.8/
Type=forking
User=dap
ExecStart=/data/zookeeper/zookeeper-3.4.8/bin/zkServer.sh start
ExecStop=/data/zookeeper/zookeeper-3.4.8/bin/zkServer.sh stop
ExecReload=/data/zookeeper/zookeeper-3.4.8/bin/zkServer.sh restart
SuccessExitStatus=SIGKILL

[Install]
WantedBy=multi-user.target

再执行如下命令:

# 重新加载
systemctl daemon-reload

#启动服务
systemctl start zookeeper

#查看服务启动情况
systemctl status zookeeper

#设置为开机启动
systemctl enable zookeeper

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容