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

 

posted @ 2021-05-20 18:47  kldx5092  阅读(167)  评论(0编辑  收藏  举报