前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ZooKeeper集群部署指南

ZooKeeper集群部署指南

作者头像
KenTalk
发布2018-09-11 11:39:59
5.5K0
发布2018-09-11 11:39:59
举报
文章被收录于专栏:Ken的杂谈

一、前言

1、ZooKeeper简介

ZooKeeper是一个开源的分布式应用程序协调服务,是Google的Chubby一个开源的实现。ZooKeeper为分布式应用提供一致性服务,提供的功能包括:分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)、分布式锁(Distributed Lock)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。

ZooKeeper本身可以以单机模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。

2、ZooKeeper集群角色说明

ZooKeeper主要有领导者(Leader)、跟随者(Follower)和观察者(Observer)三种角色。

角色

说明

领导者(Leader)

为客户端提供读和写的服务,负责投票的发起和决议,更新系统状态。

跟随者(Follower)

为客户端提供读服务,如果是写服务则转发给Leader。在选举过程中参与投票。

观察者(Observer)

为客户端提供读服务器,如果是写服务则转发给Leader。不参与选举过程中的投票,也不参与“过半写成功”策略。在不影响写性能的情况下提升集群的读性能。此角色于zookeeper3.3系列新增的角色。

二、准备工作

1、集群节点规划

ZooKeeper在提供分布式锁等服务的时候需要过半数的节点可用。另外高可用的诉求来说节点的个数必须>1,所以ZooKeeper集群需要是>1的奇数节点。例如3、5、7等等。

本次我们规划三个节点,操作系统选用CnetOS 7

节点名

IP

说明

zk01

192.168.88.11

ZooKeeper节点

zk02

192.168.88.12

ZooKeeper节点

zk03

192.168.88.13

ZooKeeper节点

2、软件版本说明

说明

Linux Server

CentOS 7

JDK

1.8.0_161

ZooKeeper

3.4.11

3、部署JDK8

所有节点均需要安装JDK8

参考CentOS下部署Java7/Java8: https://cloud.tencent.com/developer/article/1333872

三、部署ZooKeeper

本次一共要部署三个ZooKeeper节点,所有文中没有指定机器的操作都表示每个节点都要执行该操作

1、下载ZooKeeper&基础准备

  • 下载ZooKeeper

官方镜像选择:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/

代码语言:javascript
复制
cd /home/download
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz
  • 创建ZooKeeper相关目录
代码语言:javascript
复制
#创建应用目录
mkdir /usr/zookeeper

#创建数据目录
mkdir /zookeeper
mkdir /zookeeper/data
mkdir /zookeeper/logs
  • 解压到指定目录
代码语言:javascript
复制
tar -zvxf zookeeper-3.4.11.tar.gz -C /usr/zookeeper
  • 配置环境变量
代码语言:javascript
复制
#修改环境变量文件
vi /etc/profile

#增加以下内容
export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.11
export PATH=$ZOOKEEPER_HOME/bin:$PATH

#使环境变量生效
source /etc/profile

#查看配置结果
echo $ZOOKEEPER_HOME

既然已配置环境变量,为了方便访问ZooKeeper目录

后续通过$ZOOKEEPER_HOME代替/usr/zookeeper/zookeeper-3.4.11

2、配置ZooKeeper

  • ZooKeeper基础配置
代码语言:javascript
复制
#进入ZooKeeper配置目录
cd $ZOOKEEPER_HOME/conf

#新建配置文件
vi zoo.cfg

#写入以下内容并保存

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/zookeeper/data
dataLogDir=/zookeeper/logs
clientPort=2181
server.1=192.168.88.11:2888:3888
server.2=192.168.88.12:2888:3888
server.3=192.168.88.13:2888:3888
  • 配置节点标识

zk01:

代码语言:javascript
复制
echo "1" > /zookeeper/data/myid

zk02:

代码语言:javascript
复制
echo "2" > /zookeeper/data/myid

zk03:

代码语言:javascript
复制
echo "3" > /zookeeper/data/myid
  • 防火墙配置
代码语言:javascript
复制
#开放端口
firewall-cmd --add-port=2181/tcp --permanent
firewall-cmd --add-port=2888/tcp --permanent
firewall-cmd --add-port=3888/tcp --permanent

#重新加载防火墙配置
firewall-cmd --reload

3、启动ZooKeeper

代码语言:javascript
复制
#进入ZooKeeper bin目录
cd $ZOOKEEPER_HOME/bin

#启动
sh zkServer.sh start

出现以下字样表示启动成功:

ZooKeeper JMX enabled by default Using config: /usr/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg Starting zookeeper … STARTED

四、集群查看&连接测试

1、查看节点状态

代码语言:javascript
复制
sh $ZOOKEEPER_HOME/bin/zkServer.sh status

#状态信息
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg
Mode: follower

#如果为领导者节点则Mode:leader

2、客户端连接测试

这里随机选其中一个节点作为客户端连接其他节点即可

代码语言:javascript
复制
#指定Server进行连接
sh $ZOOKEEPER_HOME/bin/zkCli.sh -server 192.168.88.13:2181

#正常连接后会进入ZooKeeper命令行,显示如下:
[zk: 192.168.88.13:2181(CONNECTED) 0]

输入命令测试:

代码语言:javascript
复制
#查看ZooKeeper根
[zk: 192.168.88.13:2181(CONNECTED) 0] ls /
[zookeeper]

五、备注

1、ZooKeeper常用配置项说明

配置项

名称

ken.io 的说明

tickTime

CS通信心跳间隔

服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每间隔 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。

initLimit

LF初始通信时限

集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数

syncLimit

LF同步通信时限

集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数

dataDir

数据文件目录

Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里

dataLogDir

日志文件目录

Zookeeper保存日志文件的目录

clientPort

客户端连接端口

客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求

server.N

服务器名称与地址

从N开始依次为:服务编号、服务地址、LF通信端口、选举端口;例如:server.1=192.168.88.11:2888:3888

2、附录

https://www.jianshu.com/p/abbc1411ed9d

https://zookeeper.apache.org/doc/current/zookeeperStarted.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/02/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
    • 1、ZooKeeper简介
      • 2、ZooKeeper集群角色说明
      • 二、准备工作
        • 1、集群节点规划
          • 2、软件版本说明
            • 3、部署JDK8
            • 三、部署ZooKeeper
              • 1、下载ZooKeeper&基础准备
                • 2、配置ZooKeeper
                  • 3、启动ZooKeeper
                  • 四、集群查看&连接测试
                    • 1、查看节点状态
                      • 2、客户端连接测试
                      • 五、备注
                        • 1、ZooKeeper常用配置项说明
                          • 2、附录
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档