搭建部分参考文章:http://www.cnblogs.com/luotianshuai/p/5206662.html
这篇博客分为四个部分:
>>>zookeeper简介
>>>虚拟机上zookeeper集群搭建
>>>Error contacting service. It is probably not running的问题解决
>>>简短的后言
一,zookeeper简介:
1>.以下是我见过比较生动的解释:
ZooKeeper---译名为“动物园管理员”。动物园里当然有好多的动物,游客可以根据动物园提供的向导图到不同的场馆观赏各种类型的动物,而不是像走在原始丛林里,心惊胆颤的被动 物所观赏。为了让各种不同的动物呆在它们应该呆的地方,而不是相互串门,或是相互厮杀,就需要动物园管理员按照动物的各种习性加以分类和管理,这样我们才能更加放心安全的观赏动物。
回到企业级应用系统中,随着信息化水平的不断提高,企业级系统变得越来越庞大臃肿,性能急剧下降,客户抱怨频频。拆分系统是目前我们可选择的解决系统可伸缩性和性能问题的唯一行之有效的方法。但是拆分系统同时也带来了系统的复杂性——各子系统不是孤立存在的,它们彼此之间需要协作和交互,这就是我们常说的分布式系统0。各个子系统就好比动物园里的动物,为了使各个子系统能正常为用户提供统一的服务,必须需要一种机制来进行协调——这就是ZooKeeper(动物园管理员)。
[原文出处丢失,请原创在评论区留言,尽快让我添加上!!!!!]
2>ZooKeeper的基本运转流程:(来自百度百科)
二:zookeeper集群搭建:
我是在三台虚拟机上搭建的,每一台虚拟机的配置为:
CentOS Linux release 7.3.1611 (Core)
内存2G,硬盘20G,64bit
1>安装必要文件:
安装java:
yum list java*
#列出所有可以安装或更新的java包
su
#进入管理员模式
#之后输入自己的管理员(root)密码,如果没有设置,可能是root,或是本机创建的第一个用户的密码
yum -y install java-1.8.0-openjdk*
#安装java
exit
#退出管理员模式,以防止错误的命令造成不可挽回的问题
2>构建zookeeper:
cd
#进入默认的路径
cd Deskop/
#进入桌面
mkdir zookPro
#在桌面创建文件夹zookPro,作为项目的根目录
cd zookPro/
#进入项目根目录中
mkdir zookeeper
#创建文件夹 zookeeper 作为存放 zookeeper 本体的文件夹
mkdir data
#创建data文件夹,作为存放快照的文件夹
mkdir log
#创建log文件夹,作为存放日志的文件夹
3>下载zookeeper:
cd zookeeper/
#进入zookeeper文件夹
wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
#从互联网上下载zookeeper文件
tar -zxvf zookeeper-3.4.6.tar.gz
#解压文件
4>修改配置文件
cd zookper-3.4.6/conf/
#进入conf目录
cp zoo_sample.cfg zoo.cfg
#官方给了一个配置的模板 zoo_sample.cfg ,但是我们在实际使用时需要对它进行修改并重命名,这里直接复制模板,并改名为zoo.cfg
然后需要将虚拟机的管理页面设置三台虚拟机的网络适配器,将他们变为桥接模式:
之后在每一个虚拟机的centos系统的命令窗口输入:
ifconfig
#得到网络相关信息
如图,三台虚拟机得到三个不同的ip:然后就可以对zoo.cfg进行编辑了:
vim zoo.cfg
#对 zoo.cfg 进行编辑
在进入界面后是输入键盘上的 a ,就可以进行编辑了:
可能不像用鼠标那么方便的进行操作,所以要耐心的进行编辑.
其中需要修改 dataDir ,添加 dataLogDir , server.1,server.2,server.3
最后的效果是:
图片不太清晰,下面给出具体的细节:
其中这些需要修改的数据也是因电脑而异的:
dataDir = /home/用户名/Desktop/zookPro/data
dataLogDir = /home/用户名/Desktop/zookPro/log
server.1 = 第一台虚拟机的ip地址:2888:3888
server.2 = 第二台虚拟机的ip地址:2888:3888
server.3 = 第三台虚拟机的ip地址:2888:3888
修改完成后在键盘上按下左上角 Esc ,然后输入 :(冒号),可以看到光标到了最下方,然后输入 wq
然后就退出了编辑模式.
5>然后再创建另一个文件:
cd ../../..
#退回到项目根目录
cd data
#进入data文件夹
vi myid
#创建 myid 文件(注意不要像Windows一样加一个后缀或是其他什么的)
同样,按下键盘的 a ,然后
在第一台虚拟机中输入 1
在第二台虚拟机中输入 2
在第三台虚拟机中输入 3
(ps : 其实与刚才server.1 中的 1是一个道理,如果当时是 server.Abc ,那这里需要输入Abc,但要注意ip地址不能绑定错误)
然后就搭建完成了,可以进行测试了.
cd ../
#进入项目根目录
cd zookeeper/zookeeper-3.4.6/bin/
#进入bin目录,准备启动
./zkServer.sh start
#启动
6>进行验证:
./zkServer.sh status
#检查服务器状态
最后的Mode 可能是follower,也可能是leader
7>但是,如果出现以下问题,那么请看下一个部分.如果没有进行配置,一般会出现下面的问题.
三.Error contacting service. It is probably not running的问题解决
1>首先对每一台虚拟机都输入
su
#进入管理员状态
systemctl stop firewalld.service
#关闭防火墙
./zkServer.sh status
#检查服务器状态
2>因为之前每一个虚拟机在 zoo.cfg 中有如下配置:
可以看到,这里开放了3个端口2181,2888,3888,所以需要让防火墙打开这三个端口,每一个虚拟机都执行如下操作:
systemctl start firewalld.service
#首先打开防火墙
firewall-cmd --zone=public --add-port=2181/tcp --permanent
#打开2181端口
firewall-cmd --zone=public --add-port=2888/tcp --permanent
#打开2888端口
firewall-cmd --zone=public --add-port=3888/tcp --permanent
#打开3888端口
firewall-cmd --reload
#重启防火墙
注意要始终在 root管理员权限下进行操作,即红框中的标识符为 '#',如果是普通用户,标识符为 '$',是无法进行操作的,会提示权限不够.而升级为管理员权限的语句就是之前的
su
#获取管理员权限
后言:
之后就可以拥抱曙光了!其实小编我也是小白,距离我第一次接触linux才两天,现在就已经不用再查在线文档了,我也只是东学一点,西学一点,然后自己揉一揉,总结一下,搞出来的,希望大家与我一起努力呀,嘿哈!