• ZooKeeper集群部署


    参考链接: https://ken.io/note/zookeeper-cluster-deploy-guide

    一.前言

    1.1ZooKeeper简介

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

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

    1.2ZooKeeper集群角色说明

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

    二.准备工作

    2.1集群节点规划

    ZooKeeper在提供分布式锁等服务的时候需要过半数的节点可用。另外高可用的诉求来说节点的个数必须>1,所以ZooKeeper集群需要是>1的奇数节点。例如3、5、7等等。
    本次我们规划三个节点,操作系统选用CentOS 7。

    节点名 IP 说明
    zookeeper01 192.168.172.8 zookeeper节点
    zookeeper02 192.168.172.9 zookeeper节点
    zookeeper03 192.168.172.10 zookeeper节点

    2.2软件版本说明

    说明
    Linux Server Centos 7
    JDK 1.8.0_282
    Zookeeper zookeeper-3.4.14

    2.3部署JDK8

    所有节点均需要安装JDK8。

    yum search jdk
    yum install java-1.8.0-openjdk.x86_64 -y
    java -version
    

    三.部署流程

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

    3.1下载Zookeeper和基础准备

    • 1.下载ZooKeeper
      官方镜像选择:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
    cd /home/download
    浏览器中访问: https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 
    下载需要的zookeeper版本,我这里下载的是zookeeper-3.4.14.tar.gz
    
    • 2.创建ZooKeeper相关目录

    创建应用目录

    mkdir /usr/zookeeper
    

    创建数据目录

    mkdir /zookeeper
    mkdir /zookeeper/data
    mkdir /zookeeper/logs
    

    解压到指定目录

    tar -zvxf zookeeper-3.4.14.tar.gz -C /usr/zookeeper
    
    • 3.配置环境变量

    修改环境变量文件

    vim /etc/profile
    

    增加以下内容

    export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.14
    export PATH=$ZOOKEEPER_HOME/bin:$PATH
    
    • 4.使环境变量生效
    source /etc/profile
    
    • 5.查看配置结果
    echo $ZOOKEEPER_HOME
    

    既然已配置环境变量,为了方便访问ZooKeeper目录
    后续通过$ZOOKEEPER_HOME代替/usr/zookeeper/zookeeper-3.4.14

    • 6.主机之间的解析做好解析,绑定hosts写入/etc/hosts中
    vim /etc/hosts
    192.168.172.8 zookeeper01
    192.168.172.9 zookeeper02
    192.168.172.10 zookeeper03
    

    3.2配置Zookeeper

    • 1.ZooKeeper基础配置
    进入ZooKeeper配置目录
    cd $ZOOKEEPER_HOME/conf
    
    新建配置文件
    vim zoo.cfg
    
    写入以下内容并保存
    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/zookeeper/data
    dataLogDir=/zookeeper/logs
    clientPort=2181
    server.1=192.168.172.8:2888:3888
    server.2=192.168.172.9:2888:3888
    server.3=192.168.172.10:2888:3888
    

    zoo.cfg配置信息:
    zookeeper 的三个端口作用:

    • 2181 : 对 client 端提供服务
    • 2888 : 集群内机器通信使用
    • 3888 : 选举 leader 使用

    zk01

    echo "1" > /zookeeper/data/myid
    

    zk02

    echo "2" > /zookeeper/data/myid
    

    zk03

    echo "3" > /zookeeper/data/myid
    
    • 3.防火墙配置
    开放端口
    firewall-cmd --add-port=2181/tcp --permanent
    firewall-cmd --add-port=2888/tcp --permanent
    firewall-cmd --add-port=3888/tcp --permanent
    
    重新加载防火墙配置
    firewall-cmd --reload
    

    在本地测试环境,如果觉得配置防火墙策略太麻烦的话,可以直接关闭防火墙和设置selinux==disabled

    systemctl stop firewalld
    systemctl disable firewalld
    
    vim /etc/sysconfig/selinux
    SELINUX=disabled
    

    3.3启动ZooKeeper

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

    四.集群查看&测试连接工作

    • 1.查看节点状态
    sh $ZOOKEEPER_HOME/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
    
    • 2.客户端连接测试
      这里随机选其中一个节点作为客户端连接其他节点即可
    指定Server进行连接
    sh $ZOOKEEPER_HOME/bin/zkCli.sh -server 192.168.172.9:2181 
    
    正常连接后会进入ZooKeeper命令行,显示如下:
    [zk: 192.168.172.9:2181(CONNECTED) 0] 
    
    • 3.输入命令测试
    查看ZooKeeper根
    [zk: 192.168.172.9:2181(CONNECTED) 0] ls /
    [zookeeper]
    

    五.备注

    5.1zookeeper常用配置项说明

    5.2附录

    参考链接:
    https://www.jianshu.com/p/abbc1411ed9d

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

  • 相关阅读:
    在Windows平台上安装Node.js及NPM模块管理
    MySQL远程访问授权
    JSON (仅限本地)
    Json 调用 天气API 实例
    JS调用腾讯接口获取天气
    jsonp 调用天气API
    兼容性
    MySql like模糊查询使用详解
    编绎报错,解决方法objc_msgSend too many arguments to function call,expected 0, have3 (转)
    OC中ARC forbids explicit message send of release错误(转)
  • 原文地址:https://www.cnblogs.com/even160941/p/14666971.html
Copyright © 2020-2023  润新知