zookeeper集群部署

前言

1.zookeeper简介

ZooKeeper是一个开源的分布式应用程序协调服务,是Google的Chubby一个开源的实现。ZooKeeper为分布式应用提供一致性服务,提供的功能包括:分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)、分布式锁(Distributed Lock)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。
ZooKeeper本身可以以单机模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。

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

预备工作

1. 集群规划

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

节点名称IP地址
zk-01172.16.0.10
zk-02172.16.0.11
zk-03172.16.0.12
2.所需软件版本信息
名称版本
LinuxCentOS7.6
zookeeper3.5.7
JDK1.8.0_191

开始部署

定义安装路径:/data/soft

1.部署JDK
  1. 安装包上传至/data/soft
    在这里插入图片描述
  2. 解压缩包
tar -xf jdk-8u191-linux-x64.tar.gz
  1. 编辑变量文件/etc/profile
# vim /etc/profile 
#在文件的最后添加以下内容

#JAVA
export JAVA_HOME=/data/soft/jdk1.8.0_191
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH
  1. 加载/etc/profile
source /etc/profile      #加载变量

java -version              #查看JDK版本
2.部署zookeeper

定义安装路径:/data/soft

  1. 关闭防火墙及selinux
systemctl stop firewalld.service

sestatus/getenforce       #查看selinux状态   disabled关闭   enabled开启
#1.临时关闭
setenforce 0

#2.永久关闭
vim /etc/selinux/config
SELINUX=disabled          #修改为disabled
#重启生效
  1. 下载安装包
    (上传你自己的安装包)
    官方镜像选择:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/

  2. 创建ZooKeeper相关目录

#创建应用目录、创建数据目录
mkdir -p /data/soft/zookeeper/{data,logs}
  1. 解压到指定目录
tar -xzvf apache-zookeeper-3.5.7-bin.tar.gz -C /data/soft/zookeeper/
mv /data/soft/zookeeper/{apache-zookeeper-3.5.7-bin,zookeeper-3.5.7}
  1. 配置环境变量
#修改环境变量文件
vim /etc/profile
​
#最后增加以下内容
export ZOOKEEPER_HOME=/data/soft/zookeeper/zookeeper-3.5.7
export PATH=$ZOOKEEPER_HOME/bin:$PATH
​
#使环境变量生效
source /etc/profile
​
#查看配置结果
echo $ZOOKEEPER_HOME

既然已配置环境变量,为了方便访问ZooKeeper目录
后续通过$ZOOKEEPER_HOME代替/data/soft/zookeeper/zookeeper-3.4.11
3.配置ZooKeeper
  • ZooKeeper基础配置
#进入ZooKeeper配置目录
cd $ZOOKEEPER_HOME/conf

#新建配置文件
cp zoo_sample.cfg zoo.cfg
​
#写入以下内容并保存
cat > zoo.cfg << "EOF"
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/soft/zookeeper/data
dataLogDir=/data/soft/zookeeper/logs
clientPort=2181
server.1=yj-pt-p2-fluentd-zookeeper-kafka-01:2888:3888
server.2=yj-pt-p2-fluentd-zookeeper-kafka-02:2888:3888
server.3=yj-pt-p2-fluentd-zookeeper-kafka-03:2888:3888
EOF
  • 配置节点标识
zk01:
echo "1" > /data/soft/zookeeper/data/myid

zk02:
echo "2" > /data/soft/zookeeper/data/myid

zk03:
echo "3" > /data/soft/zookeeper/data/myid
4.启动ZooKeeper
1. 堆栈参数修改
vim /data/soft/zookeeper/zookeeper-3.5.7/conf/java.env

#!/bin/bash
# heap size MUST be modified according to cluster environment
#export JVMFLAGS="-Xms6G -Xmx6G -XX:NewSize=3G -XX:MaxNewSize=3G $JVMFLAGS"
#export JVMFLAGS="-Xms4G -Xmx4G -XX:NewSize=2G -XX:MaxNewSize=2G $JVMFLAGS"
export JVMFLAGS="-Xms3072m -Xmx3072m -XX:NewSize=1536m -XX:MaxNewSize=1536m $JVMFLAGS"

2.启动
$ZOOKEEPER_HOME/bin/zkServer.sh start

3.验证
出现以下字样表示启动成功:
ZooKeeper JMX enabled by default Using config: /data/soft/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg Starting zookeeper … STARTED
5. 集群查看&连接测试
  1. 查看节点状态
sh $ZOOKEEPER_HOME/bin/zkServer.sh status

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

#如果为领导者节点则Mode:leader
  1. 客户端连接测试
这里随机选其中一个节点作为客户端连接其他节点即可
#指定Server进行连接
sh $ZOOKEEPER_HOME/bin/zkCli.sh -server elk-3:2181

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

输入命令测试:
#查看ZooKeeper根
[zk: elk-3:2181(CONNECTED) 1] ls /
[zookeeper]

到此部署完成,谢谢您的观看。如若文章有错误理解,欢迎批评指正,同时非常期待你的评论、点赞和收藏。 😊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值