Zookeeper集群环境依赖jdk1.6以上版本,Zookeeper集群节点至少三个,因为内部机制有宕机的节点剩余节点必须过半才能正常运行。Zookeeper每个节点的都是平等的,通过内部选举算法选举一个leader其它均为follower。
集群环境:
centos6.5 master 192.168.145.129
centos6.5 slave1 192.168.145.130
centos6.5 slave2 192.168.145.136
配置步骤:
1.配置三台主机的hostname:(以192.168.145.129为例 其它的修改对应的hostname即可,重启系统后生效)
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master #修改成对应主机的hostname
NETWORKING_IPV6=yes
IPV6_AUTOCONF=no
2.配置三台主机的hosts文件内容如下:(集群节点hosts是一致的)
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.145.129 master
192.168.145.130 slave1
192.168.145.136 slave2
3.设置环境变量
export HADOOP_HOME=/usr/local/hadoop-2.7.2
export JAVA_HOME=/home/work/jdk1.7.0
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
4.配置Zookeeper配置文件conf/zoo.cfg
dataDir=/usr/local/zookeeper-3.4.6/data
# set logs
dataLogDir=/usr/local/zookeeper-3.4.6/logs
# set server
server.1=master:4887:5887
server.2=slave1:4887:5887
server.3=slave2:4887:5887
5.在$ZOOKEEPER_HOME/data目录下创建myid文件
[root@master data]# pwd
/usr/local/zookeeper-3.4.6/data
[root@master data]# ll
total 12
-rw-r--r--. 1 root root 2 Apr 17 00:57 myid
drwxr-xr-x. 2 root root 4096 Apr 18 11:39 version-2
-rw-r--r--. 1 root root 4 Apr 17 19:46 zookeeper_server.pid
[root@master data]#
6.将文件复制到其它节点
scp /usr/local/zookeeper-3.4.6 root@slave1:/usr/local
scp /usr/local/zookeeper-3.4.6 root@slave2:/usr/local
7.修改$ZOOKEEPER_HOME/data目录下的myid文件
master节点:myid文件内容是1
slave1节点:myid文件内容是2
slave2节点:myid文件内容是3
8.启动Zookeeper
bin/zkService.sh start 启动zookeeper
[root@master zookeeper-3.4.6]# bin/zkServer.sh start
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
相同方法分别启动slave1,slave2节点上的zookeeper
bin/zkService.sh status 查看状态
[root@master zookeeper-3.4.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower