Zookeeper搭建Cluster
一,规划三台zk服务器构成集群
ip:192.168.142.128 对应myid: 1
ip:192.168.142.129 对应myid: 2
ip:192.168.142.130 对应myid: 3
二,在每台服务器上安装zookeeper之安装java
说明:jdk的安装包请从java官方站下载
1,解压并安装
[root@localhost ~]# cd /usr/zookeeper/ [root@localhost zookeeper]# tar -zxvf jdk-1.8.0_linux-x64_bin.tar.gz [root@localhost zookeeper]# mkdir /usr/local/soft [root@localhost zookeeper]# mv jdk-1.8.0 /usr/local/soft/
2,配置环境变量:
[root@localhost zookeeper]# vi /etc/profile
在末尾处添加环境变量:
export JAVA_HOME=/usr/java/jdk1.8.0_291 export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JRE_HOME/lib export PATH=$PATH:$JAVA_HOME/bin
使环境变量生效:
[root@localhost zookeeper]# source /etc/profile
3,查看版本,检验安装是否生效
三,在每台服务器上安装zookeeper之安装zookeeper
1. 下载zookeeper
[root@localhost zookeeper]# wget https://downloads.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
2. 解压,安装
[root@localhost zookeeper]# tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz
3. 创建数据和日志目录
[root@localhost zookeeper]# mkdir -p /data [root@localhost zookeeper]# mkdir -p /datalogs [root@localhost zookeeper]# mkdir -p /logs
说明:
data:数据目录
datalogs:事务日志
logs:zk应用的日志
4. 生成配置文件:
[root@localhost zookeeper]# cd /usr/zookeeper/apache-zookeeper-3.6.3-bin/conf/ [root@localhost conf]# cp zoo_sample.cfg zoo.cfg
5. 设置配置文件:
[root@localhost zookeeper]# vi zoo.cfg
内容:
dataDir=/usr/zookeeper/data/zookeeper/data dataLogDir=/usr/zookeeper/data/zookeeper/datalogs admin.enableServer=false
说明:admin.enableServer=false 用来关闭zk内置的web管理器
dataDir 定义了zk的数据目录
dataLogDir 定义了zk的事务日志
6,配置环境变量
[root@localhost zookeeper]# vi /etc/profile
在末尾增加以下内容:
export ZK_HOME=/usr/zookeeper/apache-zookeeper-3.6.3-bin export PATH=$ZK_HOME/bin:$PATH
使环境变量生效:
[root@localhost zookeeper]# source /etc/profile
7,测试启动和停止zookeeper
[root@localhost zookeeper]# zkServer.sh start [root@localhost zookeeper]# zkServer.sh stop
四,在每台服务器上安装zookeeper之使zookeeper支持systemd
1,修改zkEnv.sh这个脚本
[root@localhost zookeeper]# vi /usr/zookeeper/apache-zookeeper-3.6.3-bin/bin/zkEnv.sh
添加如下一行
JAVA_HOME=/usr/java/jdk1.8.0_291
到ZOOBINDIR=一行的上方
说明:为了解决从systemctl启动时找不到java而报错
2,找到ZOO_LOG_DIR一行,修改为:
ZOO_LOG_DIR="/usr/zookeeper/logs"
用来记录zk运行时的日志
3,增加service文件,用来供systemd启动使用:
[root@localhost zookeeper]# vi /etc/systemd/system/zookeeper.service
内容:
[Unit] Description=zookeeper.service After=network.target ConditionPathExists=/usr/zookeeper/apache-zookeeper-3.6.3-bin/conf/zoo.cfg [Service] Type=forking User=root Group=root ExecStart=/usr/zookeeper/apache-zookeeper-3.6.3-bin/bin/zkServer.sh start ExecStop=/usr/zookeeper/apache-zookeeper-3.6.3-bin/bin/zkServer.sh stop [Install] WantedBy=multi-user.target
3,测试启动/停止zk:
[root@localhost zookeeper]# systemctl daemon-reload [root@localhost zookeeper]# systemctl start zookeeper [root@localhost zookeeper]# systemctl stop zookeeper
五,在三台zookeeper服务器上做集群配置
1,配置文件中增加集群配置
[root@localhost ~]# vi /usr/zookeeper/apache-zookeeper-3.6.3-bin/conf/zoo.cfg
添加如下配置内容
#cluster server.1=192.168.142.128:2888:3888 server.2=192.168.142.129:2888:3888 server.3=192.168.142.130:2888:3888
说明:server.n n是一个数字,表示zookeeper服务器的序号
2888是在集群中follower连接到leader时使用的端口,
也就是:leader上开放此端口,follower连接到leader此端口访问数据
3888:集群内进行leader选举时使用的端口
说明:三台机器上都添加此集群配置, 配置内容相同
2,给每个机器指定id
在每台机器上zoo.cfg里dataDir指定的目录下,生成一个id值文件:myid
说明:myid内的值,要和本机ip对应的zoo.cfg中序号一致
192.168.142.128上
[root@localhost ~]# vi /usr/zookeeper/data/myid 1
192.168.142.129上
[root@localhost ~]# vi /usr/zookeeper/data/myid 2
192.168.142.130上
[root@localhost ~]# vi /usr/zookeeper/data/myid 3
七,逐台启动服务器,检查各zookeeper的状态
1,启动zk服务
在三台机器上分别执行:
systemctl start zookeeper
2,分别在三台机器上检查状态:
[root@localhost bin]# ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/zookeeper/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: leader
它的工作模式是: leader
[root@localhost bin]# ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/zookeeper/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: follower
它的工作模式是: follower
[root@localhost bin]# ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/zookeeper/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: follower
它的工作模式是: follower
4,单机方式运行的zookeeper服务的mode是什么?
[root@localhost /]# zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/zookeeper/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: standalone
可以看到,其Mode是standalone