zookeeper集群搭建
Posted trumbull
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zookeeper集群搭建相关的知识,希望对你有一定的参考价值。
zookeeper集群搭建
centOS操作系统
检测集群时间是否同步
检测防火墙是否关闭
检测主机 ip映射有没有配置
检测服务器间是否配置免密登陆
检测服务器是否安装正确的jdk
---------------------------------------------------------------------------------------------------------------------------------------
检测集群时间是否同步
说明:由于大数据中,集群对时间要求很高,所以集群内主机要经常同步时间(包括时区的同步)。
常用的手动进行时间的同步
date -s "2017-03-03 03:03:03"
或者网络同步:
yum install ntpdate (安装ntpdate网络时间协议更新软件)
ntpdate cn.pool.ntp.org (中国网络时间协议)
也可以进行如下的设置:(时间同步协议)
1、yum install ntp
2、vi /etc/ntp.conf
修改如下部分:
server 58.220.207.226 iburst
server 47.92.108.218 iburst
server 202.112.29.82 iburst
server 202.108.6.95 iburst
其中ip为全球可用的ntp时间服务器,免费提供授时服务。
3、配置之后,保存设置,重启服务
service ntpd stop 时间同步协议
service ntpd start
4、甚至可以设置crontab来定时与互联网服务器进行同步
---------------------------------------------------------------------------------------------------------------------------------------
检测防火墙是否关闭
关闭防火墙,意味着把所有通信端口开放
三台虚拟机同时发送命令:
service iptables stop 关闭防火墙服务(关机恢复)
chkconfig iptables off 永久关闭防火墙(关机有效)
chkconfig iptables --list 查看防火墙状态
---------------------------------------------------------------------------------------------------------------------------------------
检测主机 ip映射有没有配置
修改映射 vi /etc/hosts
查看映射 cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.158.151 node-1
192.168.158.152 node-2
192.168.158.153 node-3
测试:ping node-1等
---------------------------------------------------------------------------------------------------------------------------------------
检测服务器间是否配置免密登陆
每台服务器都要配置三次(包括本机 (本机登陆本机的底层原理:xshell登陆node-1,node-1的ssh进程登陆node-1))
ssh-keygen
ssh-copy-id node-1
免密登陆测试:ssh node-1
退出登陆:exit
---------------------------------------------------------------------------------------------------------------------------------------
安装前需要安装好jdk
卸载服务器自带的openjdk:
rpm -qa|grep java 查询
rpm -e --nodeps xxxxxxxxxxxxxxxxxxx 卸载
jdk安装路径:
mkdir -p /export/servers 软件安装
mkdir -p /export/software 安装包
mkdir -p /export/data 数据存放
jdk从一台机器配置,然后发送给其他机器
环境变量:vi /etc/profile (大G最后一行,小o开启新一行)
export JAVA_HOME=/export/servers/jdk1.8.0_65 (以实际安装路径为准)
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar (非必选)
环境变量开机加载一次,source /etc/profile 命令生效,java -version验证是否成功
发送给其他机器:
scp -r /export/servers/jdk1.8.0_65 [email protected]:/export/servers/
scp -r /etc/profile [email protected]:/etc/
同时发送 source /etc/profile 使环境变量生效
同时发送 java -version 验证是否生效
-----------------------------------------------------------------------------------------------------------------------------
##下载安装包、解压
tar -zxvf zookeeper-3.4.5.tar.gz
mv zookeeper-3.4.5 zookeeper
##修改环境变量(注意:3台zookeeper都需要修改)
vi /etc/profile
export ZOOKEEPER_HOME=/export/servers/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile
##修改Zookeeper配置文件
cd /export/servers/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
修改内容:
dataDir=/export/data/zkdata
添加内容:
server.1=node-1:2888:3888 ## (服务器名编号不重复即可,主机名,心跳端口、选举端口)
server.2=node-2:2888:3888
server.3=node-3:2888:3888
##myid
创建并进入文件夹:
/export/data/zkdata
在data文件夹下新建myid文件,myid的文件内容为:
echo 1 > myid
##分发安装包到其他机器
scp -r /export/servers/zookeeper [email protected]:/export/servers/
scp -r /export/servers/zookeeper [email protected]:/export/servers/
##修改其他机器的配置文件
修改myid文件
到node2上:
cd /export/data/zkdata
echo 2 > myid
到node3上:
cd /export/data/zkdata
echo 3 > myid
##启动(每台机器)
zkServer.sh start
或者编写一个脚本来批量启动所有机器:
for host in "node-1 node-2 node-3"
do
ssh $host "source/etc/profile;/root/apps/zookeeper/bin/zkServer.sh start"
done
##查看集群状态
jps(jdk提供的查看java进程命令)
zkServer.sh status(查看集群状态,主从信息)
如果启动不成功,可以观察zookeeper.out日志,查看错误信息进行排查,排查之后还有问题,请使用万能法:重启linux
-----------------------------
配置文件中参数说明:
tickTime这个时间是作为zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是说每个tickTime时间就会发送一个心跳。
initLimit这个配置项是用来配置zookeeper接受客户端(这里所说的客户端不是用户连接zookeeper服务器的客户端,而是zookeeper服务器集群中连接到leader的follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
当已经超过10个心跳的时间(也就是tickTime)长度后 zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20秒。
syncLimit这个配置项标识leader与follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。
dataDir顾名思义就是zookeeper保存数据的目录,默认情况下zookeeper将写数据的日志文件也保存在这个目录里;
clientPort这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求;
server.A=B:C:D中的A是一个数字,表示这个是第几号服务器,B是这个服务器的IP地址,C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口,D是在leader挂掉时专门用来进行选举leader所用的端口。
调bug参考(感谢)
https://blog.csdn.net/u014686180/article/details/51767863
https://www.cnblogs.com/eggplantpro/p/7120893.html
----------------------------------------------------------------
export JAVA_HOME=/root/apps/jdk1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
以上是关于zookeeper集群搭建的主要内容,如果未能解决你的问题,请参考以下文章