ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization).命名服务(Naming Service).集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper自己能够以Standalone模式安装运行,不过它的长处在于经过分布式ZooKeeper集群(一个Leader,多个Follower),基于必定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。(我是网上抄写的,方便你们学习,请勿吐槽!!)node
Dubbo 建议使用 Zookeeper 做为服务的注册中心。 apache
Zookeeper 集群中只要有过半的节点是正常的状况下,那么整个集群对外就是可用的。centos
正是基于这个 特性,要将 zookeeper集群的节点数量要为奇数(2n+1:如 三、五、7 个节点)服务器
声明:以上都是官网的原话,此教程主要是供你们学习,请各位不要吐槽架构
根据您本身的业务来决定服务器配置,我这边定义了三台服务器,以下:框架
服务器1:xxx.xxx.xxx.xx1 端口:218一、288一、3881 tcp
服务器2:xxx.xxx.xxx.xx2 端口:218二、288二、3882 分布式
服务器3:xxx.xxx.xxx.xx3 端口:218三、288三、3883性能
一、 修改操做系统的/etc/hosts 文件,添加 IP 与主机名映射:学习
[root@cloud ~]# vi /etc/hosts
# zookeeper servers
xxx.xxx.xxx.xx1 jeesz-zk-01
xxx.xxx.xxx.xx2 jeesz-zk-02
xxx.xxx.xxx.xx3 jeesz-zk-03
二、 下载或上传 zookeeper-3.4.6.tar.gz 到/home/jeesz/zookeeper 目录:
[root@cloud ~]# cd/home/jeesz/zookeeper
$ wgethttp://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
三、 因为我已经下载并上传了文件,故这边直接记录详细的安装过程,解压 zookeeper 安装包,并按节点号对 zookeeper 目录重命名:
[root@cloud zookeeper]# tar -zxvfzookeeper-3.4.6.tar.gz
在xxx.xxx.xxx.xx1服务器:
[root@cloud zookeeper]# mvzookeeper-3.4.6 node-01
在xxx.xxx.xxx.xx2服务器:
[root@cloud zookeeper]# mvzookeeper-3.4.6 node-02
在xxx.xxx.xxx.xx3服务器:
[root@cloud zookeeper]# mvzookeeper-3.4.6 node-03
四、 分别在 zookeeper 节点目录下建立如下目录:
[root@cloud ~]# /home/jeesz/zookeeper/node-0X (X 表明节点号 一、二、3)
[root@cloud node-0X]# mkdirdata
[root@cloud node-0X] # mkdirlogs
五、 将 zookeeper/node-0X/conf 目录下的 zoo_sample.cfg 文件拷贝一份,命名为 zoo.cfg:
[root@cloud conf] cp zoo_sample.cfgzoo.cfg
六、 修改 zoo.cfg 配置文件:
[root@cloud conf] # vi zoo.cfg
zookeeper/node-01 的配置(/home/jeesz/zookeeper/node-01/conf/zoo.cfg)以下:
dataDir=/home/jeesz/zookeeper/node-01/data
dataLogDir=/home/jeesz/zookeeper/node-01/logs
clientPort=2181
server.1=jeesz-zk-01:2881:3881
server.2=jeesz-zk-02:2882:3882
server.3=jeesz-zk-03:2883:3883
zookeeper/node-02 的配置(/home/jeesz/zookeeper/node-02/conf/zoo.cfg)以下:
dataDir=/home/jeesz/zookeeper/node-02/data
dataLogDir=/home/jeesz/zookeeper/node-02/logs
clientPort=2182
server.1=jeesz-zk-01:2881:3881
server.2= jeesz -zk-02:2882:3882
server.3= jeesz -zk-03:2883:3883
zookeeper/node-03 的配置(/home/jeesz/zookeeper/node-03/conf/zoo.cfg)以下:
dataDir=/home/jeesz/zookeeper/node-03/data
dataLogDir=/home/jeesz/zookeeper/node-03/logs
clientPort=2183
server.1= jeesz-zk-01:2881:3881
server.2= jeesz-zk-02:2882:3882
server.3= jeesz-zk-03:2883:3883
七、 在dataDir=/home/jeesz/zookeeper/node-0X/data 下建立 myid 文件
编辑 myid 文件,并在对应的IP 的机器上输入对应的编号。如在 node-01 上,myid文件内容就是
1,node-02 上就是 2,node-03 上就是 3:
[root@cloud ~]# vi/home/jeesz/zookeeper/node-01/data/myid
1
[root@cloud ~]# vi/home/jeesz/zookeeper/node-02/data/myid
2
[root@cloud ~]# vi/home/jeesz/zookeeper/node-03/data/myid
3
八、 在防火墙中打开要用到的端口 218X、288X、388X
[root@cloud ~]# vi/etc/sysconfig/iptables
如服务器 01 增长如下 3 行:
## zookeeper
-A INPUT -m state --state NEW -m tcp -p tcp--dport 2181 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp--dport 2881 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp--dport 3881 -j ACCEPT
重启防火墙:
[root@cloud ~]# serviceiptables restart
查看防火墙端口状态:
[root@cloud ~]# serviceiptables status
注意:centos7中使用方法不一样,你们能够上网查询一下
九、 启动并测试 zookeeper(要用 jeesz 用户启动,不要用 root):
(1) 到/home/jeesz/zookeeper/node-0X/bin 目录中执行:
[root@cloud ~]# /home/jeesz/zookeeper/node-01/bin/zkServer.shstart
[root@cloud ~]# /home/jeesz/zookeeper/node-02/bin/zkServer.shstart
[root@cloud ~]# /home/jeesz/zookeeper/node-03/bin/zkServer.shstart
(2) 输入 jps 命令查看进程:
[root@cloud ~]# jps
1456 QuorumPeerMain
其中,QuorumPeerMain 是 zookeeper 进程,说明启动正常
(3) 查看状态:
[root@cloud ~]# /home/jeesz/zookeeper/node-01/bin/zkServer.sh status
(4) 查看 zookeeper 服务输出信息:
因为服务信息输出文件在/home/jeesz/zookeeper/node-0X/bin/zookeeper.out
[root@cloud ~]# tail-500f zookeeper.out
十、中止 zookeeper 进程:
[root@cloud ~]# zkServer.shstop
十一、配置 zookeeper 开机使用 jeesz 用户启动:
编辑 node-0一、node-0二、node-03 中的/etc/rc.local 文件,分别加入:
[root@cloud ~]# vi/etc/rc.local
su - root -c'/home/jeesz/zookeeper/node-01/bin/zkServer.sh start'
su - root -c '/home/jeesz/zookeeper/node-02/bin/zkServer.shstart'
su - root -c'/home/jeesz/zookeeper/node-03/bin/zkServer.sh start'
源码地址获取:mingli
有兴趣的朋友们能够前往球球哦~一块儿分享学习技术:2042849237
搭建分布式架构7--Zookeeper注册中心安装