centos7 Zookeeper集群部署

23 篇文章 0 订阅

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
初级时可以理解为:动态配置中心

节点备注
Node1server.1=192.168.0.47:2888:3888
Node2server.1=192.168.0.32:2888:3888
Node3server.1=192.168.0.33:2888:3888

说明 server.A=B:C:D
A:服务器的编号;
B:ZK服务器的IP地址;
C:Leader选举的端口;
D:Zookeeper服务器之间的通信端口;

一、基础环境配置(主机名、防火墙、免密钥)

1、Hosts及防火墙设置

node1、node2、node3节点进行如下配置:

cat >/etc/hosts<<EOF
127.0.0.1  localhost localhost.localdomain
192.168.0.47 node1     
192.168.0.32 node2
192.168.0.33 node3
EOF
sed -i '/SELINUX/s/enforcing/disabled/g'  /etc/sysconfig/selinux
setenforce  0
systemctl   stop     firewalld.service
systemctl   disable   firewalld.service
yum install ntpdate rsync lrzsz -y
ntpdate  pool.ntp.org
hostname `cat /etc/hosts|grep $(ifconfig|grep broadcast|awk '{print $2}')|awk '{print $2}'`;su
2、 配置节点JAVA环境 所有节点上

#解压JDK软件包;
链接:https://pan.baidu.com/s/1Z_zsRn48V5OF6Y4D0vMczw
提取码:x4ha

tar -xf jdk-8u191-linux-x64.tar.gz
#创建JDK部署目录;
mkdir -p  /usr/java/
\mv jdk1.8.0_191 /usr/java/
#设置环境变量;
cat>>/etc/profile<<EOF
export JAVA_HOME=/usr/java/jdk1.8.0_191/
export HADOOP_HOME=/data/hadoop/
export JAVA_LIBRARY_PATH=/data/hadoop/lib/native/
export PATH=\$PATH:\$HADOOP_HOME/bin/:\$JAVA_HOME/bin
EOF
#使其环境变量生效;
source /etc/profile
java -version

以上,所有节点都需要配置

3、 配置节点免秘钥登录 node1上,也可以在所有节点上都配置免密钥
ssh-keygen -t rsa -N '' -f /root/.ssh/id_rsa -q
ssh-copy-id -i /root/.ssh/id_rsa.pub root@node1
ssh-copy-id -i /root/.ssh/id_rsa.pub root@node2
ssh-copy-id -i /root/.ssh/id_rsa.pub root@node3

二、部署集群

1 、基于二进制Tar包部署Zookeeper集群,在3台服务器服务器上执行如下安装步骤:
从官网下载Zookeeper软件包;
wget -c https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/apache-zookeeper-3.6.3-bin.tar.gz
#Tar解压Zookeeper软件包;
tar -xf apache-zookeeper-3.6.3-bin.tar.gz
#创建Zookeeper部署目录;
mkdir -p /usr/local/zookeeper/
#将解压程序移动至ZK部署目录;
mv apache-zookeeper-3.6.3-bin/* /usr/local/zookeeper/
#查看ZK是否部署成功;
ls -l /usr/local/zookeeper/
#CP拷贝默认模板配置文件;
cd /usr/local/zookeeper/conf/
\cp zoo_sample.cfg zoo.cfg
2、修改3台服务器Zookeeper配置文件:zoo.cfg内容如下:
cat>/usr/local/zookeeper/conf/zoo.cfg<<EOF
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
maxClientCnxns=60
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
server.1=192.168.0.47:2888:3888
server.2=192.168.0.32:2888:3888
server.3=192.168.0.33:2888:3888
EOF
3、可以先配置Node1节点,然后将如上Zookeeper数据目录,通过rsync同步至Node2和Node3节点上即可。
for i in `seq 2 3`;do rsync -av /usr/local/zookeeper root@node$i:/usr/local/ ;done
4、Zoo.cfg配置文件参数剖析;
tickTime:基本事件单元,这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳;最小 的session过期时间为2倍tickTime
dataDir:存储内存中数据库快照的位置,除非另有说明,否则指向数据库更新的事务日志。注意:应该谨慎的选择日志存放的位置,使用专用的日志存储设备能够大大提高系统的性能,如果将日志存储在比较繁忙的存储设备上,那么将会很大程度上影响系统性能。
client:监听客户端连接的端口。
initLimit:允许follower连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。
syncLimit:表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。
server.A=B:C:D
A:服务器的编号;
B:ZK服务器的IP地址;
C:Leader选举的端口;
D:Zookeeper服务器之间的通信端口;
5、创建ServerID标识;

Zookeeper集群模式下需要配置myid文件,该需要放在dataDir根目录下。文件填写一个数字,数字就是A的值。

#192.168.0.47创建myid,方法如下:
mkdir -p /tmp/zookeeper/
echo "1" > /tmp/zookeeper/myid
#192.168.0.32创建myid,方法如下:
mkdir -p /tmp/zookeeper/
echo "2" > /tmp/zookeeper/myid
#192.168.0.33创建myid,方法如下:
mkdir -p /tmp/zookeeper/
echo "3" > /tmp/zookeeper/myid
6、根据如上ZK配置完成,启动三台机器的ZK服务即可,启动服务的命令如下:
#启动ZK软件服务;
/usr/local/zookeeper/bin/zkServer.sh restart
#查看ZK服务进程和端口;
ps -ef|grep -ai zookeeper
netstat -tnlp|grep -aiwE 2181
7、根据如上ZK配置完成,查看集群状态,指令操作如下:
查看ZK服务的状态;
/usr/local/zookeeper/bin/zkServer.sh status
#启动ZK客户端命令行;
/usr/local/zookeeper/bin/zkCli.sh

创建测试信息;

/usr/local/zookeeper/bin/zkCli.sh   也就是启动ZK客户端命令
help
create /jfedu
ls /
set /jfedu www.jd.com
get /jfedu
8、根据如上ZK集群实战操作,最终ZK集群部署成功,查看其状态信息,可以看到Mode对应 一个leader,两个follower,如图所示:
[root@node1 ~]# for i in node1 node2 node3; do \
   ssh root@$i 'hostname; \
   source /etc/profile; \
   /usr/local/zookeeper/bin/zkServer.sh status;echo';done
  
node1
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

node2
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader

node3
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

注:
手动启动各节点zookeeper

for i in 1 2 3;do \
	echo; \
	ssh root@node$i 'hostname; \
   source /etc/profile; \
   /usr/local/zookeeper/bin/zkServer.sh restart' ;done

查看各节点状态

for i in node1 node2 node3; do \
   ssh root@$i 'hostname; \
   source /etc/profile; \
   /usr/local/zookeeper/bin/zkServer.sh status;echo';done

----------------------end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值