zoukankan      html  css  js  c++  java
  • ZooKeeper集群部署指南

    一、前言

    1、ZooKeeper简介

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

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

    2、ZooKeeper集群角色说明

    角色 说明
    领导者(Leader) 为客户提供读和写的服务,负责投票的发起和决议,更新系统状态。
    跟随者(Follower) 为客户提供读服务,如果是写服务则转发给Leader。在选举过程中参与投票。
    观察者(Observer) 为客户端提供读服务,如果是写则转发给Leader。不参与选举过程中的投票,也不参与“过半写成功”策略。在不影响性能的情况下提升集群的读性能。此角色与ZooKeeper3.3系列新增读角色。

    二、准备工作

    1、集群节点规划

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

    本次我们规划3个节点,操作系统选用CentOS7.6

    节点名 IP 说明
    zk01 172.31.9.177 ZooKeeper节点
    zk02 172.31.8.176 ZooKeeper节点
    zk03 172.31.0.70 ZooKeeper节点

    2、软件版本说明

    说明
    Linux Server CentOS 7.6
    JDK 1.8.0_252
    ZooKeeper 3.4.14

    3 、部署JDK8

    所有节点均需安装JDK8

    部署步骤参考上篇CentOS 7.6安装JDK1.8.0

    三、部署ZooKeeper

    1、下载ZooKeeper并解压

    官方下载地址:https://downloads.apache.org/zookeeper/zookeeper-3.4.14/

    sudo mkdir /opt/zookeeper
    cd /opt/zookeeper
    wget https://downloads.apache.org/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
    sudo gunzip zookeeper-3.4.14.tar.gz
    sudo tar -xvf zookeeper-3.4.14.tar

    2、创建ZooKeeper相关目录

    sudo mkdir zkdata
    sudo mkdir zklogs
    

    3、配置ZooKeeper

    • 配置节点标识

    zk01:

    sudo vim /opt/zookeeper/zkdata/myid
    1
    

    zk02:

    sudo vim /opt/zookeeper/zkdata/myid
    2
    

    zk03:

    sudo vim /opt/zookeeper/zkdata/myid
    3
    • 新建配置文件
    sudo cd /opt/zookeeper/zookeeper-3.4.14/conf
    sudo cp zoo_sample.cfg zoo.cfg
    sudo vim zoo.cfg
    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/opt/zookeeper/zkdata
    dataLogDir=/opt/zookeeper/zklogs
    clientPort=2181
    server.1=172.31.9.177:2888:3888
    server.2=172.31.8.176:2888:3888
    server.3=172.31.0.70:2888:3888
    

    4、启动ZooKeeper

    cd /opt/zookeeper/zookeeper-3.4.14
    sudo bin/zkServer.sh start
    
    出现以下字样表示启动成功:
    ZooKeeper JMX enabled by default
    Using config: /usr/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
    Starting zookeeper … STARTED
    

    5、查看节点状态

    sudo bin/zkServer.sh status
    
    #状态信息
    ZooKeeper JMX enabled by default
    Using config: /usr/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
    Mode: follower
    
    #如果为领导者节点则Mode:leader
    

    6、客户端连接测试

    #指定Server连接
    sudo bin/zkCli.sh -server 172.31.0.70:2181
    #正常连接后会进入ZooKeeper命令行,显示如下:
    [zk: 172.31.0.31:2181(CONNECTED) 0]
    
    输入命令测试:
    #查看ZooKeeper根
    [zk: 172.31.0.31:2181(CONNECTED) 0] ls /
    [zookeeper]

    四、ZooKeeper常用配置项说明

    配置项名称说明
    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=172.31.9.177:2888:3888
  • 相关阅读:
    损失函数
    numpy中的broadcast
    混合模型
    贝叶斯学习
    python3中输出不换行
    C++11 实现 argsort
    Python中的闭包
    C语言 fread()与fwrite()函数说明与示例
    DFT与傅里叶变换的理解
    MISRA C:2012 Dir-1.1(只记录常犯的错误和常用的规则)Bit-fields inlineC99,NOT support in C90 #pragma
  • 原文地址:https://www.cnblogs.com/winnerREN/p/13406248.html
Copyright © 2011-2022 走看看