首页 > 技术文章 > zookeeper 集群安装

zengfa 2018-06-13 15:32 原文

一、ZooKeeper相关概念简介:
ZooKeeper是一个开源的、分布式应用程序协调服务,是GoogleChubby一个开源的实现,是HadoopHbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper服务器是用Java创建的,它在JVM上运行。你需要使用JDK 6或更高版本
 
二、环境:
IP地址 节点名称 操作系统 JDK版本 ZooKeeper版本
192.168.103.137 hadoop01 CentOS 6.5 x86_64 1.7.0_79 zookeeper-3.4.12
192.168.103.138 hadoop02
192.168.103.140 hadoop03
 
三、安装前准备:
 
1、  配置hostname
 
[root@hadoop01 ~]# vi /etc/sysconfig/network
 
 
分别修改三台主机的HOSTNAME为hadoop01、hadoop02、hadoop03
NETWORKING=yes
    HOSTNAME=hadoop01

 

2、  配置hosts解析,三台都要处理
vi /etc/hosts
 
在后面添加:
192.168.103.137 hadoop01
    192.168.103.138 hadoop02
    192.168.103.140 hadoop03
 
节点之间可以互相ping通,说明通信正常
查看操作系统版本:cat /etc/issue
查看系统位数:getconf LONG_BIT
 
四、 安装配置JDK
1、上传jdk并解压
[root@hadoop01 ~]# cd /usr/local/src/
    [root@hadoop01 src]# ls
    jdk-7u79-linux-x64.tar.gz
    [root@hadoop01 src]# tar -zxvf jdk-7u79-linux-x64.tar.gz -C /usr/local/
 
2、配置环境变量
vi /etc/profile
 
按shift+g(G)跳到文件结尾,添加:
export JAVA_HOME=/usr/local/jdk
    export PATH=${JAVA_HOME}/bin:$PATH
 
使环境变量生效:
source /etc/profile
 
检查是否安装成功,输入Java -version
 
五、安装配置ZooKeeper
1、上传zookeeper并解压
[root@hadoop01 ~]# ls
    anaconda-ks.cfg install.log install.log.syslog
    [root@hadoop01 ~]# ls
    anaconda-ks.cfg install.log install.log.syslog zookeeper-3.4.12.tar.gz
    [root@hadoop01 ~]# mv zookeeper-3.4.12.tar.gz /usr/local/src/
    [root@hadoop01 ~]# cd /usr/local/src/
    [root@hadoop01 src]# ls
    jdk-7u79-linux-x64.tar.gz zookeeper-3.4.12.tar.gz
    [root@hadoop02 src]# tar -zxvf zookeeper-3.4.12.tar.gz -C /usr/local/
[root@hadoop01 src]# cd /usr/local/
    [root@hadoop01 local]# ls
    bin etc games include jdk lib lib64 libexec sbin share src zookeeper-3.4.12
    [root@hadoop01 local]# mv zookeeper-3.4.12/ zookeeper
   [root@hadoop01 local]# ls
    bin etc games include jdk lib lib64 libexec sbin share src zookeeper
   [root@hadoop01 local]#
 
2、  创建日志数据目录
[root@hadoop01 ~]# cd /usr/local/zookeeper/
    [root@hadoop01 zookeeper]# mkdir data
    [root@hadoop01 zookeeper]# mkdir logs
 
3、  修改配置文件
[root@hadoop02 ~]# cd /usr/local/zookeeper/
    [root@hadoop01 zookeeper]# cd conf/
    [root@hadoop01 conf]# ls
    configuration.xsl log4j.properties zoo_sample.cfg
    [root@hadoop01 conf]# mv zoo_sample.cfg zoo.cfg
    [root@hadoop01 conf]# ls
    configuration.xsl log4j.properties zoo.cfg
    [root@hadoop01 conf]# vi zoo.cfg
修改dataDir,添加dataLogDir,添加节点
备注:server.A=B:C:D
A:一个数字,表示这是第几台服务器
B:此服务器的IP地址或/etc/hosts文件中映射的主机名
C2888,表示此服务器与集群中的Leader服务器交换信息的端口
D3888,表示如果集群中的Leader服务器宕机了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口
 
4、  创建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编号
 
5、  配置zookeeper到环境变量中:
vi /etc/profile
 
按shift+g(G)跳到文件结尾,添加:
export ZOOKEEPER_HOME=/usr/local/zookeeper
    export PATH=${ZOOKEEPER_HOME}/bin:$PATH
 
使环境变量生效:
source /etc/profile
 
六、启动ZooKeeper
启动前要关闭防火墙:
[root@hadoop01 ~]# service iptables stop
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:清除防火墙规则:[确定]
iptables:正在卸载模块:[确定]
[root@hadoop01 ~]# chkconfig iptables off

 

 
启动:zkServer.sh start
状态:zkServer.sh status
启动完3台服务器后zookeeper状态为:
主机名 myid 状态
hadoop01 1 follower
hadoop02 2 leader
hadoop03 3 follower
顺序启动时,一般是第二台为leader,因为选举机制是按最大myid选的
停止:zkServer.sh stop
查看zookeeper进程:jps
 
六、开机启动ZooKeeper(可选)
vi /etc/rc.d/init.d/zookeeper
 
添加以下脚本:
#!/bin/bash
# chkconfig:35 81 82
# description:zookeeper server script

if [ -z $1 ]
    then
        echo "缺少位置参数"
        echo "请使用$0 {start|start-foreground|stop|restart|status|upgrade|print-cmd}"
        exit 1
fi

export JAVA_HOME=/usr/local/jdk
export ZOO_LOG_DIR=/usr/local/zookeeper/logs
ZOOKEEPER_HOME=/usr/local/zookeeper

/usr/local/zookeeper/bin/zkServer.sh $1
 
添加到开机启动项里:
chkconfig --add zookeeper
chkconfig zookeeper on
chkconfig --list
 
重启测试是否开机启动:reboot

推荐阅读