Linux系统运维之Zookeeper集群配置
Posted promonkey.xyz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统运维之Zookeeper集群配置相关的知识,希望对你有一定的参考价值。
一、简介
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
1. ZooKeeper的基本运转流程
1、选举Leader,选举机制大于1/2。
2、同步数据。
3、选举Leader过程中算法有很多,但要达到的选举标准是一致的。
4、Leader要具有最高的执行ID,类似root权限。
5、集群中大多数的机器得到响应并Follow选出的Leader。
2. Leader工作流程
Leader主要有三个功能:
1.恢复数据;
2.维持与Learner的心跳,接收Learner请求并判断Learner的请求消息类型;
3.Learner的消息类型主要有PING消息、REQUEST消息、ACK消息、REVALIDATE消息,根据不同的消息类型,进行不同的处理。PING消息是指Learner的心跳信息;REQUEST消息是Follower发送的提议信息,包括写请求及同步请求;ACK消息是Follower的对提议的回复,超过半数的Follower通过,则commit该提议;REVALIDATE消息是用来延长SESSION有效时间。
3. Follower工作流程
Follower主要有四个功能:
1. 向Leader发送请求(PING消息、REQUEST消息、ACK消息、REVALIDATE消息) 2.接收Leader消息并进行处理;
3.接收Client的请求,如果为写请求,发送给Leader进行投票;
4.返回Client结果。
Follower的消息循环处理如下几种来自Leader的消息:
1.PING消息:心跳消息 2.PROPOSAL消息:Leader发起的提案,要求Follower投票
3.COMMIT消息:服务器端最新一次提案的信息
4.UPTODATE消息:表明同步完成
5.REVALIDATE消息:根据Leader的REVALIDATE结果,关闭待revalidate的session还是允许其接受消息
6.SYNC消息:返回SYNC结果到客户端,这个消息最初由客户端发起,用来强制得到最新的更新。
二、安装配置
1. 环境信息
IP:192.168.10.10 Hostname:LFTo-Zookeeper01 IP:192.168.10.11 Hostname:LFTo-Zookeeper02 IP:192.168.10.12 Hostname:LFTo-Zookeeper03
2. 安装配置
安装JDK基础环境
[worker@LFTo-Zookeeper01 ~]$ cd /home/worker/soft/ [worker@LFTo-Zookeeper01 soft]$ wget http://10.12.3.24/soft/jdk/jdk1.8.0_65.tar.gz [worker@LFTo-Zookeeper01 soft]$ mkdir -p /home/worker/usr/local/ [worker@LFTo-Zookeeper01 soft]$ tar xf jdk1.8.0_65.tar.gz -C /home/worker/usr/local/ [worker@LFTo-Zookeeper01 soft]$ ln -s /home/worker/usr/local/jdk1.8.0_65 /home/worker/usr/local/jdk [worker@LFTo-Zookeeper01 soft]$ vim ~/.bash_profile #########JDK ENV######### export JAVA_HOME=/home/worker/usr/local/jdk export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH 生效环境变量 [worker@LFTo-Zookeeper01 soft]$ source ~/.bash_profile
安装zookeeper,配置单点
[worker@LFTo-Zookeeper01 soft]$ wget http://10.12.3.24/upload/zhaobin/zookeeper/zookeeper-3.4.6.tar.gz [worker@LFTo-Zookeeper01 soft]$ tar xf zookeeper-3.4.6.tar.gz -C ~/opt/ [worker@LFTo-Zookeeper01 soft]$ cd ~/opt/zookeeper-3.4.6/conf [worker@LFTo-Zookeeper01 conf]$ cp zoo_sample.cfg zoo.cfg #修改配置文件 [worker@LFTo-Zookeeper01 conf]$ vim zoo.cfg dataDir=/home/worker/opt/zookeeper_data/ #创建数据目录 [worker@LFTo-Zookeeper01 conf]$ mkdir -p /home/worker/opt/zookeeper_data/
关闭、启动、重启服务等
[worker@LFTo-Zookeeper01 conf]$ /home/worker/opt/zookeeper-3.4.6/bin/zkServer.sh --help JMX enabled by default Using config: /home/worker/opt/zookeeper-3.4.6/bin/../conf/zoo.cfg Usage: /home/worker/opt/zookeeper-3.4.6/bin/zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}
3. 集群配置
在集群的每台服务器host中添加以下配置
[root@LFTo-Zookeeper01 ~]# vim /etc/hosts 192.168.10.10 LFTo-Zookeeper01 192.168.10.11 LFTo-Zookeeper02 192.168.10.12 LFTo-Zookeeper03
修改配置文件,配置集群
[worker@LFTo-Zookeeper01 conf]$ vim zoo.cfg server.1=LFTo-Zookeeper01:2888:3888 server.2=LFTo-Zookeeper02:2888:3888 server.3=LFTo-Zookeeper03:2888:3888 [worker@LFTo-Zookeeper01 conf]$ echo \'1\' >> /home/worker/opt/zookeeper_data/myid . . . . [worker@LFTo-Zookeeper02 conf]$ echo \'2\' >> /home/worker/opt/zookeeper_data/myid [worker@LFTo-Zookeeper03 conf]$ echo \'3\' >> /home/worker/opt/zookeeper_data/myid
重启zookeeper服务
[worker@LFTo-Zookeeper01 conf]$ ~/opt/zookeeper-3.4.6/bin/zkServer.sh restart
以上是关于Linux系统运维之Zookeeper集群配置的主要内容,如果未能解决你的问题,请参考以下文章