一、ZooKeeper相关概念简介:
ZooKeeper是一个开源的、分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
二、演示环境:
IP地址 |
节点名称 |
操作系统 |
JDK版本 |
ZooKeeper版本 |
192.168.1.144 |
server1 |
CentOS 6.9 x86_64 |
jdk-8u152-linux-x64.rpm |
zookeeper-3.4.11.tar.gz |
192.168.1.145 |
server2 |
|||
192.168.1.146 |
server3 |
JDK下载地址http://www.oracle.com/technetwork/java/javase/downloads/index.html
Zookeeper下载地址http://mirrors.hust.edu.cn/apache/zookeeper/
三、安装前准备:
1、 服务器时间校对
2、 配置epel源
3、 配置hosts解析:
# vim /etc/hosts
192.168.1.144 server1
192.168.1.145 server2
192.168.1.146 server3
备注:节点之间可以互相ping通,说明通信正常
四、 安装配置JDK:
1、 安装JDK:
# rpm -qa | grep jdk --> # rpm -e java-1.7.0-openjdk # rpm -e java-1.6.0-openjdk
# rpm -ivh jdk-8u152-linux-x64.rpm
2、 配置JDK:
# vim /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/java/jdk1.8.0_152
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
# . /etc/profile.d/jdk.sh
# java -version
五、安装配置ZooKeeper:
1、 安装ZooKeeper:
# tar -xf zookeeper-3.4.11.tar.gz -C /usr/local
# cd /usr/local
# mv zookeeper-3.4.11 zookeeper
# cd zookeeper
2、 创建日志目录:# mkdir -pv logs
3、 创建数据目录:# mkdir -pv data
4、 配置ZooKeeper环境变量:
# vim /etc/profile.d/zookeeper.sh --> export PATH=/usr/local/zookeeper/bin:$PATH
# . /etc/profile.d/zookeeper.sh
六、配置3节点ZooKeeper集群:
集群节点数量要为奇数,且至少有3个节点,因为ZooKeeper集群是以宕机个数过半才会让整个集群宕机的。搭建ZooKeeper集群时,一定要先停止所有已经启动的节点。
1、 修改配置文件:
# cd /usr/local/zookeeper/conf
# cp zoo_sample.cfg zoo.cfg
# vim zoo.cfg,修改或新增如下代码:
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/logs
clientPort=2181
server.1=server1:2888:3888
server.2=server2:2888:3888
server.3=server3:2888:3888
备注:server.A=B:C:D
A:一个数字,表示这是第几台服务器
B:此服务器的IP地址或/etc/hosts文件中映射的主机名
C:2888,表示此服务器与集群中的Leader服务器交换信息的端口
D:3888,表示如果集群中的Leader服务器宕机了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口
2、 创建myid文件:
在server1上执行:# echo 1 > /usr/local/zookeeper/data/myid
在server2上执行:# echo 2 > /usr/local/zookeeper/data/myid
在server3上执行:# echo 3 > /usr/local/zookeeper/data/myid
备注:myid文件中只有一行内容,且内容为该节点对应的server.id中的id编号
3、 启动ZooKeeper集群:# zkServer.sh start
4、 查看ZooKeeper进程:# jps //显示当前所有Java进程的PID
备注:QuorumPeerMain进程代表当前节点ZooKeeper已经启动
5、 查看ZooKeeper集群状态:# zkServer.sh status
? 在server1上执行:
# zkServer.sh status
# yum -y install telnet
# telnet 192.168.1.144 2181
? 在server2上执行:
# zkServer.sh status
# yum -y install telnet
# telnet 192.168.1.145 2181
? 在server3上执行:
# zkServer.sh status
# yum -y install telnet
# telnet 192.168.1.146 2181
备注:正常情况下应该是1个leader节点,2个follower节点
6、 启动客户端连接ZooKeeper集群:
# zkCli.sh -server server1:2181
# zkCli.sh -server server2:2181
# zkCli.sh -server server3:2181
7、 查看ZooKeeper服务输出信息:# find / -name zookeeper.out # tail /root/zookeeper.out