记录Zookeeper
集群搭建的过程!html
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。java
划重点:分布式应用程序协调服务,在分布式系统中,一般须要一个通用的服务注册与发现中心,所以Zookeeper
就是充当这样的角色,国内很是出名的分布式框架Dubbo
也建议使用Zookeeper
做为服务注册与发现中心。vim
准备三台Linux
虚拟机,前往官网下载zookeeper
压缩包,若是不知道官网如何下载,可在公众号「张少林同窗」回复Java工具
获取网盘下载连接centos
OS | 主机名 | ip | zookeeper/端口 |
---|---|---|---|
centos7 | LIHETEST6 | 192.168.2.216 | zookeeper-3.4.11.tar.gz/2181 |
centos7 | LIHETEST7 | 192.168.2.217 | zookeeper-3.4.11.tar.gz/2181 |
centos7 | LIHETEST8 | 192.168.2.218 | zookeeper-3.4.11.tar.gz/2181 |
在三台服务器分别作如下操做,这里以 LIHETEST6
为例:服务器
hostname
vim /etc/hostname
删除原有内容,新增主机名:LIHETEST6
vim /etc/hosts
在文件尾部添加内容,格式为: IP 地址 主机名 (中间用空格分割),保存退出,例如:192.168.2.216 LIHETEST6
systemctl restart network
将Zookeeper
压缩包上传到服务器后,解压网络
//上传压缩包
scp zookeeper-3.4.11.tar.gz root@192.168.2.219:/home/tools
//登陆到服务器目录 解压
tar -zxvf zookeeper-3.4.11.tar.gz
//进入zookeeper主目录
cd zookeeper-3.4.11
复制代码
解压后看看都有哪些内容:框架
咱们只须要把焦点定位到这两个目录:tcp
Zookeeper
启动脚本等执行脚本命令./bin/zkServer.sh start
启动Zookeeper
,结果以下: 分布式
提示找不到 ../conf/zoo.cfg
文件,可是最后却打印STARTED
,因而执行./bin/zkServer.sh status
看看当前Zookeeper
状态,结果以下:工具
上述结果很清晰明了了,Zookeeper
启动失败,缘由是找不到配置文件:./conf/zoo.cfg
,./bin/zkServer.sh start
命令启动时,默认会使用此配置文件启动,而初始化时./conf
目录下并没有此文件,查看./conf
中存在一个样例配置文件./conf/zoo_sample.cfg
,因而执行cp ./conf/zoo_sample.cfg ./conf/zoo.cfg
复制一份./conf/zoo.cfg
文件出来,再次执行命令启动Zookeeper
,结果以下:
能够看出Zookeeper
已经启动了,而且是单机模式启动。
再看看启动日志信息cat zookeeper.out
:
zookeeper
启动,绑定在2181
端口,查看一下进程是否存在:netstat -lntp | grep 2181
,结果以下:
tcp6 0 0 :::2181 :::* LISTEN 27201/java
复制代码
有时候咱们会在本机搭建一个伪集群,用于项目代码测试,那么只须要启动三个不一样配置的Zookeeper
便可,只要端口不一样,便可视为不一样的程序。
在./conf
目录下新增zoo1.cfg
,zoo2.cfg
,zoo3.cfg
配置文件,其中dataDir
目录依次都不一样,clientPort
分别配置为2181
,2182
,2183
。启动Zookeeper
时,显式指定配置文件,如:./bin/zkServer.sh start conf/zoo3.cfg
,依次启动三个Zookeeper
配置文件。。那么最终执行netstat -lntp
看下端口监听状况:
能够看到启动了三个监听不一样端口的Zookeeper
.
在真实生产环境中,咱们通常会搭建一个多机器集群的,目的很明显,为了提升容错能力。
在三台机器中,每台安装一个Zookeeper
服务,这三台机器造成一个小规模的集群。
在每台机器中修改./conf/zoo.cfg
配置文件以下:
initLimit=10 // 初始容忍的心跳数
syncLimit=5 // 等待最大容忍的心跳数
dataDir=/home/wwwroot/easywits/tools/zookeeper-3.4.11/data //数据存储目录
dataLogDir=/home/wwwroot/easywits/tools/zookeeper-3.4.11/logs //数据日志文件目录
clientPort=2181 //zookeeper 监听端口
server.1=192.168.2.216:2888:3888 //主机ip/服务间心跳链接端口/数据端口
server.2=192.168.2.217:2888:3888
server.3=192.168.2.218:2888:3888
复制代码
分别在每台服务器 数据目录 /home/wwwroot/easywits/tools/zookeeper-3.4.11/data
中新增名为 myid
文本文件,内容依次为 0,1,2
,这是集群中每台 Zookeeper
服务的惟一标识,不能重复,以第一台为例:
echo "0" > /home/wwwroot/easywits/tools/zookeeper-3.4.11/data/myid
复制代码
启动 Zookeeper
: ./bin/zkServer.sh start
查看每台服务器中,Zookeeper
状态:./bin/zkServer.sh status
,结果分别以下:
Using config: /home/wwwroot/easywits/tools/zookeeper-3.4.11/bin/../conf/zoo.cfg
Mode: follower
Using config: /home/wwwroot/easywits/tools/zookeeper-3.4.11/bin/../conf/zoo.cfg
Mode: leader
Using config: /home/wwwroot/easywits/tools/zookeeper-3.4.11/bin/../conf/zoo.cfg
Mode: follower
复制代码
能够看到启动模式,第一台与第三台为follower
,而第二台为leader
注意:Zookeeper
集群规模,机器数量只能是奇数个,在三台机器集群的状况下,最多只能挂掉其中一台,若是主节点挂掉,剩下两台服务会从新选举一台做为主节点。
Zookeeper
启动失败,能够在./zookeeper.out
文件查看异常日志myid
中内容为服务的惟一标识,不能重复ping
通,必要时请先关闭防火墙ip
进行配置Zookeeper
集群机器数量只能是奇数个,详见 www.cnblogs.com/LeeScofiled…ps:关于须要用到的工具,可在公众号「张少林同窗」回复Java工具
获取网盘下载连接
记录一波Zookeeper
搭建过程,后续会不按期更新原创文章,欢迎关注公众号 「张少林同窗」!