Zookeeper安装和集群搭建

zookeeper安装

以zookeeper-3.5.8版本为例。

首先,zookeeper安装需要JDK环境,在安装zookeeper之前准备好jdk环境。

官网所有版本下载地址:http://archive.apache.org/dist/zookeeper

下载zookeeper:(将zookeeper压缩下载到 /usr/local/tmp 路径下)

cd /usr/local/tmp
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz

解压并复制解压文件夹到 /usr/local/zookeeper-cluster 路径下,并修改名为zookeeper01,为搭建集群做准备:

tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz
mv apache-zookeeper-3.5.8-bin /usr/local/zookeeper-cluster/zookeeper01

zookeeper01路径下,创建data:

cd /usr/local/zookeeper-cluster/zookeeper01
mkdir data

进入zookeeper01的配置文件路径,将zoo_sample.cfg示例配置文件复制一份为zoo.cfg,zoo.cfg是zookeeper的默认配置文件:

cd /usr/local/zookeeper-cluster/zookeeper01/conf
cp zoo_sample.cfg zoo.cfg

修改zoo.cfg配置文件:

# 指定zookeeper的快照存放路径
dataDir=/usr/local/zookeeper-cluster/zookeeper01/data

到此,单个zookeeper接安装完了,可以进入bin目录中做启动测试(打印日志启动,可以看有没有异常):

cd ../bin
./zkServer.sh start-foreground

使用端口监听判断是否启动成功:

netstat -lntp|grep 2181

出现结果:

tcp6       0      0 :::2181                 :::*                    LISTEN      3939/java

开放防火墙端口:

firewall-cmd --zone-public --add-port=2181/tcp --permanent
firewall-cmd --reload

zookeeper安装成功了。

zookeeper集群搭建

在上面安装的zookeeper的基础上,搭建zookeeper集群。

在data中添加文件myid,文件内容为1:

cd /usr/local/zookeeper-cluster/zookeeper01/data
echo 1 > myid

修改zoo.cfg配置文件:

cd ../conf
vim zoo.cfg

 在配置文件结尾添加集群配置,

格式:server.id = hosts:port1:port2

其中:id:zookeeper的id,也就是dataDir所指路径下的myid的内容

           hosts:zookeeper的ip

           port1:follower和leader交换信息端口

           port2:选举leader投票的端口

server.1=192.168.205.128:2881:3881
server.2=192.168.205.128:2882:3882
server.3=192.168.205.128:2883:3883

将zookeeper01复制两份:

cp -rf zookeeper01 zookeeper02
cp -rf zookeeper01 zookeeper03

修改zookeeper02和zookeeper03,共三处:

1、修改myid文件内容分别为2和3;

2、修改zoo.cfg配置文件中的clientPort为2182和2183;

3、修改dataDir值分别为:

dataDir=/usr/local/zookeeper-cluster/zookeeper02/data
dataDir=/usr/local/zookeeper-cluster/zookeeper03/data

到此,集群搭建配置结束,创建集群启动和关闭脚本文件,将脚本文件放在zookeeper-cluster中,便于操作集群:

cd /usr/local/zookeeper-cluster
vim zookeeper_startAll.sh
vim zookeeper_stopAll.sh

 启动脚本内容为:

cd zookeeper01/bin
./zkServer.sh start
cd ../../zookeeper02/bin
./zkServer.sh start
cd ../../zookeeper03/bin
./zkServer.sh start
cd ../../

关闭脚本内容为:

cd zookeeper01/bin
./zkServer.sh stop
cd ../../zookeeper02/bin
./zkServer.sh stop
cd ../../zookeeper03/bin
./zkServer.sh stop
cd ../../

保存退出后,给脚本授权,u:当前用户可以执行:

chmod u+x zookeeper_startAll.sh
chmod u+x zookeeper_stopAll.sh

 启动,测试结果,分别到zookeeper01/bin,zookeeper03/bin,zookeeper03/bin下,查询当前zookeeper状态:

./zkServer.sh status

出现下列结果,集群启动成功:follower表示从节点,leader表示主节点,主从节点的分配随机。

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-cluster/zookeeper01/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-cluster/zookeeper02/bin/../conf/zoo.cfg
Client port found: 2182. Client address: localhost.
Mode: leader

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-cluster/zookeeper03/bin/../conf/zoo.cfg
Client port found: 2183. Client address: localhost.
Mode: follower

zookeeper配置文件解析

# The number of milliseconds of each tick
# 配置zookeeper中最小的时间单位长度,运行时的时间间隔为tickTime的倍数,单位:ms 
tickTime=2000

# The number of ticks that the initial 
# synchronization phase can take
# Follower在启动过程中,会从Leader同步所有最新数据,Leader允许Follower在一定时间
# 内完成这个工作,initLimit设置的就是这个时间,时间值=initLimit*tickTime
initLimit=10

# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
# Leader向Follower发送心跳包检测Follower是否运行正常,如果在发出心跳包后的一定时间内没有收到
# Follower的响应,就认为Follower下线了,syncLimit用来设置这个时间,时间值=syncLimit*tickTime
syncLimit=5

# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
#指定zookeeper存储快照文件的路径,一定要设置
dataDir=/tmp/zookeeper

# 指定zookeeper的日志存储路径
dataLogDir=

# the port at which the clients will connect
# 客户端访问服务器端口号
clientPort=2181

# the maximum number of client connections.
# increase this if you need to handle more clients
# 单个客户端与单台服务器之间的连接数的限制,是ip级别的,
# 默认是60,如果设置为0,那么表明不作任何限制。
maxClientCnxns=60

# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
# 指定需要保留的快照文件数目
autopurge.snapRetainCount=3

# Purge task interval in hours
# Set to "0" to disable auto purge feature
# zookeeper自动清理快照和日志的时间间隔,单位小时,如果设置为0,表示不开启自动清理功能
autopurge.purgeInterval=1

## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值