最近研究大数据,大数据很多组件都需要zookeeper进行管理,理解zookeeper运行原理,安装配置,参数设置对后续大数据深入打下一个好基础。Zookeeper用java开发,所以安装的时候需要先JDK。
按照zookeeper leader选举策略,达到法定投票数的一半以上才会被选举为leader,所以zookeeper集群服务节点最好是奇数个。本实例我们部署3个zookeeper服务节点,成为一个集群。
以下操作均用root用户操作。
a)修改hostname
vim /etc/sysconfig/network
reboot
b)配置hosts
vim /etc/hosts
添加ip和主机名映射
192.168.86.137 s1.itclj.zk
192.168.86.138 s2.itclj.zk
192.168.86.139 s3.itclj.zk
注意: 需要在所有的节点上执行,因为涉及到的端口太多了,临时关闭防火墙是为了安装起来更方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。
关闭防火墙:
service iptables stop (临时关闭)
chkconfig iptables off (重启后生效)
关闭SELINUX:
setenforce 0 (临时生效)
修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)
一般情况下,我们都要将linux自带的OPENJDK卸载掉,然后安装SUN的JDK。
由于我的CentOS安装的是mini版本的,没有自带jdk所以可以直接安装。
从Oracle官网下载JDK安装包:
http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.tar.gz?AuthParam=1517808422_bdd9ddc0a30c84fe1961a9a2f6f1eb63
我下载的是JDK8的最新版本:jdk-8u161-linux-x64.tar.gz
下面是JDK的配置步骤。
在/usr目录下建立目录/java,
cd /usr
mkdir java
把JDK安装包上传到/usr/java目录,解压JDK安装包,
tar -zxvf jdk-8u161-linux-x64.tar.gz
配置环境变量
vim /etc/profile
/etc/profile中添加下面配置项
JAVA_HOME=/usr/java/jdk1.8.0_161
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
刷新环境变量使配置立即生效
source /etc/profile
检查JDK是否配置成功
java -version
创建目录
mkdir /home/zookeeper/data
mkdir /home/zookeeper/datalog
mkdir /home/zookeeper/app
mkdir /home/zookeeper/logs
上传zookeeper程序包到app目录然后解压。
tar -zxvf zookeeper-3.4.11.tar.gz
程序包解压出来后有个zoo_sample.cfg,这个文件就是样例配置,把该配置复制一份为zoo.cfg
cp zoo_sample.cfg zoo.cfg
修改zoo.cfg为下面配置
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/zookeeper/data
dataLogDir=/home/zookeeper/datalog
clientPort=2181
server.1=s1.itclj.zk:2888:3888
server.2=s2.itclj.zk:2888:3888
server.3=s3.itclj.zk:2888:3888
修改log4j.properties配置,把日志输出路径配置到自己指定的目录下。
zookeeper.log.dir=/home/zookeeper/logs
zookeeper.tracelog.dir=/home/zookeeper/logs
myid唯一标识一个zookeeper实例。
在/home/zookeeper/data目录创建myid文件并设置值。
该值必须保证每个zookeeper服务器唯一。
vim /home/zookeeper/data/myid
s1.itclj.zk
s2.itclj.zk
s3.itclj.zk
zkServer.sh start
zkServer.sh status