【更新】搭建 Zookeeper-3.4.11 集群
先准备好三台linux(虚拟机)。
1. 先把Java环境配好。我CentOS-7-x86_64-DVD-1708 + jdk1.8.0_161
1.1 先把jdk上传到系统里面(我利用的Filezilla),我在系统的根目录建了一个文件夹soft,用来存放需要的安装包,比如jdk、Zookeeper
1.2 先卸载系统自带的JDK(切换到root)
[root@localhost /]# rpm -qa|grep java [root@localhost /]# rpm -e java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64 --nodeps [root@localhost /]# rpm -e java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64 --nodeps
1.3 新建一个Java目录,然后定位到我们安装包的目录,再进行解压
mkdir /usr/local/java cd /soft/ tar -zxvf jdk-8u161-linux-x64.tar.gz -C /usr/local/java/
进入目标目录:可以看到刚解压的文件
1.4 配置环境变量
vim /etc/profile
在文件里面加入如下配置
# java export JAVA_HOME=/usr/local/java/jdk1.8.0_161 export JRE_HOME=/usr/local/java/jdk1.8.0_161/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
1.5 最后刷新配置,查看Java是否安装成功
2. 三台机器,配置Zookeeper
2.1 定位到安装包文件夹,然后执行解压(所有操作三台机器一样)
[root@localhost soft]# tar -zxvf zookeeper-3.4.11.tar.gz -C /usr/local/
可以看到Zookeeper已经存在于/usr/local/目录下了
2.2 配置一下环境变量(此步骤的目的是:每次启动服务就不需要定位到Zookeeper的bin目录了)
vim /etc/profile
# zookeeper export ZK_HOME=/usr/local/zookeeper-3.4.11 export PATH=$ZK_HOME/bin:$PATH
2.3 配置Zookeeper的配置文件
进入zookeeper的conf目录,修改配置文件名
[root@localhost zookeeper-3.4.11]# cd conf [root@localhost conf]# mv zoo_sample.cfg zoo.cfg [root@localhost conf]# vim zoo.cfg
2.4 具体配置
dataDir=/usr/local/zookeeper-3.4.11/data server.0=192.168.192.128:2888:3888 server.1=192.168.192.129:2888:3888 server.2=192.168.192.130:2888:3888
首先 修改 dataDir,顾名思义就是【数据目录】了,修改成我们自定义的即可。
然后看下面的三个server:
(1)为什么是三个,因为Zookeeper喜欢奇数不喜欢偶数。
(2)三行server解释
官方解释
The entries of the form server.X list the servers that make up the ZooKeeper service. When the server starts up, it knows which server it is by looking for the file myid in the data directory. That file has the contains the server number, in ASCII.
Finally, note the two port numbers after each server name: " 2888" and "3888". Peers use the former port to connect to other peers. Such a connection is necessary so that peers can communicate, for example, to agree upon the order of updates. More specifically, a ZooKeeper server uses this port to connect followers to the leader. When a new leader arises, a follower opens a TCP connection to the leader using this port. Because the default leader election also uses TCP, we currently require another port for leader election. This is the second port in the server entry.
蹩脚翻译
表单server.X的条目列出构成ZooKeeper服务的服务器。当服务器启动时,它通过查找数据目录中的文件myid来知道它是哪个服务器 。该文件包含服务器编号,以ASCII格式显示。
最后,请注意每个服务器名称后面的两个端口号:“2888”和“3888”。对等体使用前端口连接到其他对等体。这样的连接是必要的,使得对等体可以进行通信,例如,以商定更新的顺序。更具体地说,一个ZooKeeper服务器使用这个端口来连接追随者到领导者。当新的领导者出现时,追随者使用此端口打开与领导者的TCP连接。因为默认领导选举也使用TCP,所以我们目前需要另外一个端口进行领导选举。这是服务器条目中的第二个端口。
大概意思
server.X=A:B:C
X-代表服务器编号
A-代表ip
B和C-代表端口,这个端口用来系统之间通信
2.5 根据dataDir进行X的配置【这里三台服务器不一样!!!】
找到Zookeeper目录,新建data文件夹,并且在data文件夹下面创建一个文件,叫myid,并且在文件里写入server.X对应的X
[root@localhost zookeeper-3.4.11]# mkdir data
然后
cd data vim myid #之后会产生一个新文件,直接在里面写 X 即可 #比如我配置的三个server,myid里面写的X就是server.X=ip:2888:3888 中ip所对应的X
server.0=192.168.192.128:2888:3888【192.168.192.128服务器上面的myid填写0】
server.1=192.168.192.129:2888:3888【192.168.192.129服务器上面的myid填写1】
server.2=192.168.192.130:2888:3888【192.168.192.130服务器上面的myid填写2】
2.6 最后启动服务器
先刷新一下环境变量
source /etc/profile
然后开启防火墙
[root@localhost zookeeper-3.4.11]# firewall-cmd --zone=public --add-port=2888/tcp --permanent success [root@localhost zookeeper-3.4.11]# firewall-cmd --zone=public --add-port=3888/tcp --permanent success [root@localhost zookeeper-3.4.11]# systemctl restart firewalld
然后
zkServer.sh start
输出: [root@localhost zookeeper-3.4.11]# zkServer.sh start ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper-3.4.11/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
是否启动成功,执行以下命令
zkServer.sh status
128
[root@localhost zookeeper-3.4.11]# zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper-3.4.11/bin/../conf/zoo.cfg Mode: follower
129
[root@localhost zookeeper-3.4.11]# zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper-3.4.11/bin/../conf/zoo.cfg Mode: leader
130
[root@localhost zookeeper-3.4.11]# zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper-3.4.11/bin/../conf/zoo.cfg Mode: follower
其实也可以查看启动过程
zkServer.sh start-foreground
PS:想要用客户端连接,需要把2181端口打开(防火墙)