Zookeeper——分布式集群搭建

准备服务器

- 192.168.214.150   centos6-1
- 192.168.214.151   centos6-2
- 192.168.214.152   centos6-3

Java环境

查看java版本

[root@centos6-1 ~]# java -version
java version "1.7.0_79"
OpenJDK Runtime Environment (rhel-2.5.5.4.el6-x86_64 u79-b14)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)
[root@centos6-1 ~]# 

使用Oracle JDK1.8,卸载OpenJDK

[root@centos6-1 ~]# yum remove java

使用lrzsz上传压缩包jdk-8u65-linux-x64.tar.gz到虚拟机(三种方式实现Linux的文件上传下载:https://blog.csdn.net/weixin_37490221/article/details/80844825)

[root@centos6-1 ~]# cd /export/servers/
[root@centos6-1 servers]# rz
rz waiting to receive.
Starting zmodem transfer.  Press Ctrl+C to cancel.
Transferring jdk-8u65-linux-x64.tar.gz...
  100%  177012 KB    14751 KB/sec    00:00:12       0 Errors  

[root@centos6-1 servers]#

解压安装

[root@centos6-1 servers]# ls
jdk-8u65-linux-x64.tar.gz
[root@centos6-1 servers]# tar -zvxf jdk-8u65-linux-x64.tar.gz
[root@centos6-1 servers]# ls
jdk1.8.0_65  jdk-8u65-linux-x64.tar.gz
[root@centos6-1 servers]# rm -rf jdk-8u65-linux-x64.tar.gz 
[root@centos6-1 servers]# 

配置环境变量

[root@centos6-1 servers]# vi /etc/profile

在文件末尾添加以下内容:

JAVA_HOME=/export/servers/jdk1.8.0_65
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

重新加载环境变量

[root@centos6-1 servers]# source /etc/profile
[root@centos6-1 servers]# java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
[root@centos6-1 servers]# 

检查服务器环境

1.统一时间

#centos6-1
[root@centos6-1 servers]# date
Wed Jun 27 20:03:19 CST 2018
#centos6-2
[root@centos6-2 ~]# date
Wed Jun 27 19:10:09 CST 2018
#centos6-3
[root@centos6-3 ~]# date
Fri Jun 29 00:11:32 CST 2018

发现时间不一致,统一使用北京时间(此处操作需要连接外网),在三台主机下分别执行

[root@centos6-1 servers]# ntpdate cn.pool.ntp.org
29 Jun 00:11:13 ntpdate[30493]: step time server 182.92.12.11 offset 101197.616054 sec
[root@centos6-1 servers]# date
Fri Jun 29 00:11:41 CST 2018
[root@centos6-1 servers]# 

2.关闭防火墙

直接关闭防火墙并设置开机不启动

[root@centos6-1 servers]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
[root@centos6-1 servers]# chkconfig iptables off
[root@centos6-1 servers]#

3.设置ip主机映射

[root@centos6-1 servers]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.214.150 centos6-1
192.168.214.151 centos6-2
192.168.214.152 centos6-3
[root@centos6-1 servers]# 

已经配置,注意这里三台机器都得配置

Zookeeper下载安装

此处省略下载上传过程

扫描二维码关注公众号,回复: 2644126 查看本文章
1.解压安装
[root@centos6-1 ~]# cd /export/servers/
[root@centos6-1 servers]# ls
jdk1.8.0_65  zookeeper-3.4.5.tar.gz
[root@centos6-1 servers]# tar -zvxf zookeeper-3.4.5.tar.gz
[root@centos6-1 servers]# ls
jdk1.8.0_65  zookeeper-3.4.5.tar.gz  zookeeper-3.4.5
[root@centos6-1 servers]# rm -rf zookeeper-3.4.5.tar.gz
[root@centos6-1 servers]# ls
jdk1.8.0_65  zookeeper-3.4.5
2.配置环境变量

获取Zookeeper所在目录路径

[root@centos6-1 servers]# cd zookeeper-3.4.5/
[root@centos6-1 zookeeper-3.4.5]# pwd
/export/servers/zookeeper-3.4.5
[root@centos6-1 zookeeper-3.4.5]#vi /etc/profile

将以下内容追加到profile文件末尾

export ZOOKEEPER_HOME=/export/servers/zookeeper-3.4.5
export PATH=$PATH:$ZOOKEEPER_HOME/bin

更新环境变量

[root@centos6-1 zookeeper-3.4.5]#source /ete/profile
3.修改Zookeeper配置文件
[root@centos6-1 zookeeper-3.4.5]# mkdir -p /export/data/zkdata
[root@centos6-1 zookeeper-3.4.5]# cd conf/
[root@centos6-1 conf]# cp zoo_sample.cfg zoo.cfg
[root@centos6-1 conf]# vi zoo.cfg

在zoo.cfg文件中添加一下内容

//这个在源文件中已经配置,修改即可
dataDir=/export/data/zkdata  //指定ZooKeeper数据存储目录
//直接在文件中追加
server.1=centos6-1:2888:3888  //server.服务器编号=主机名:心跳端口:选举端口)
server.2=centos6-2:2888:3888
server.3=centos6-3:2888:3888

创建myid文件

[root@centos6-1 conf]# cd /export/data/zkdata
[root@centos6-1 zkdata]# echo 1 > myid
[root@centos6-1 zkdata]# cat myid
1
[root@centos6-1 zkdata]#

此处的myid文件的内容取决于当前服务器的编号,这是在上面zoo.cfg文件中配置的

同步至其他集群服务器

1.同步安装的JDK(先配置ssh免密登录)
[root@centos6-1 zkdata]# scp -r /export/servers/jdk1.8.0_65/ root@centos6-2:/export/servers/
[root@centos6-1 zkdata]# scp -r /export/servers/jdk1.8.0_65/ root@centos6-3:/export/servers/
2.同步安装的ZooKeeper
[root@centos6-1 zkdata]# scp -r /export/servers/zookeeper-3.4.5/ root@centos6-2:/export/servers/
[root@centos6-1 zkdata]# scp -r /export/servers/zookeeper-3.4.5/ root@centos6-3:/export/servers/
3.同步环境变量
[root@centos6-1 zkdata]# scp -r /etc/profile root@centos6-2:/etc/
[root@centos6-1 zkdata]# scp -r /etc/profile root@centos6-3:/etc/
4.创建centos6-2和centos6-3的myid文件(首先对应文件夹已经创建)
[root@centos6-2 zkdata]# echo 2 > myid
[root@centos6-3 zkdata]# echo 3 > myid
5.注意防火墙关闭,时间同步和主机ip映射

逐一启动ZooKeeper

//启动centos6-1
[root@centos6-1 zkdata]# zkServer.sh start
JMX enabled by default
Using config: /export/servers/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@centos6-1 zkdata]# 
//启动centos6-2
[root@centos6-2 ~]# zkServer.sh start
JMX enabled by default
Using config: /export/servers/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@centos6-2 ~]#
//启动centos6-3
[root@centos6-3 ~]# zkServer.sh start
JMX enabled by default
Using config: /export/servers/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@centos6-3 ~]# 

查看ZooKeeper状态

//centos6-1是follower角色
[root@centos6-1 zkdata]# zkServer.sh status
JMX enabled by default
Using config: /export/servers/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower
[root@centos6-1 zkdata]# 
//centos6-2是leader角色
[root@centos6-2 ~]# zkServer.sh status
JMX enabled by default
Using config: /export/servers/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: leader
[root@centos6-2 ~]# 
//centos6-3是follower角色
[root@centos6-3 ~]# zkServer.sh status
JMX enabled by default
Using config: /export/servers/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower
[root@centos6-3 ~]# 

如果启动不成功,可以观察zookeeper.out日志,查看错误信息进行排查

总结

目前为止一个完整的ZooKeeper分布式集群已经搭建成功了,当中的配置意义并没有进行详细解释,如果你搭建成功了,你可以再去了解每个配置的意义。下面提供基本解释:

参数 解释
tickTime 这个时间是作为zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是说每个tickTime时间就会发送一个心跳。
initLimit 这个配置项是用来配置zookeeper接受客户端(这里所说的客户端不是用户连接zookeeper服务器的客户端,而是zookeeper服务器集群中连接到leader的follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
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所用的端口。

猜你喜欢

转载自blog.csdn.net/weixin_37490221/article/details/80850972