ZooKeeper部署

5 篇文章 0 订阅
5 篇文章 0 订阅

简介

ZooKeeper 是一种用于分布式应用程序的高性能协调服务。提供了诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知和分布式锁等分布式基础服务。由于 ZooKeeper 便捷的使用方式、卓越的性能和良好的稳定性,被广泛地应用于诸如 Hadoop、HBase、Kafka 和 Dubbo 等大型分布式系统中。详细信息参考 官方文档

部署

ZooKeeper 有 2 部署方式:

  • 单机部署(Single Server and Developer Setup)
  • 集群部署(Clustered (Multi-Server) Setup)

生产环境中一般使用集群部署。

系统需求

硬件

对硬件配置的最低需求如下:

CPU内存硬盘
2核+2 GB+80G+
操作系统

ZooKeeper 包含以下组件:

客户端(Client):用于应用连接到 ZooKeeper 的 Java 程序。

服务器(Server):运行在 ZooKeeper 集群节点上的 Java 服务器。

原生客户端(Native Client):用于应用连接到 ZooKeeper 的 C 程序。

其他模块(Contrib):多个可选附加组件。

各组件对操作系统的支持如下:

Operating SystemClientServerNative ClientContrib
GNU/LinuxDevelopment and ProductionDevelopment and ProductionDevelopment and ProductionDevelopment and Production
SolarisDevelopment and ProductionDevelopment and ProductionNot SupportedNot Supported
FreeBSDDevelopment and ProductionDevelopment and ProductionNot SupportedNot Supported
WindowsDevelopment and ProductionDevelopment and ProductionNot SupportedNot Supported
Mac OS XDevelopment OnlyDevelopment OnlyNot SupportedNot Supported
软件

ZooKeeper 需要 JDK 1.8 及以上环境。

集群部署

ZooKeeper 集群至少需要 3 台主机,且三台主机不能接入同一交换机,如果是虚拟机,也不能位于同一宿主机上。

环境

使用 3 台主机来部署集群,主机信息如下:

主机名IP操作系统CPU内存
zknode1192.168.44.150RHEL 7.92核8 GB
zknode2192.168.44.151RHEL 7.92核8 GB
zknode3192.168.44.152RHEL 7.92核8 GB
[root@zknode1 ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.9 (Maipo)
[root@zknode1 ~]# grep 'processor' /proc/cpuinfo | uniq | wc -l
2
[root@zknode1 ~]# cat /proc/meminfo | grep MemTotal
MemTotal:       7914804 kB

如未做特殊说明,以下操作均需要在集群所有主机上进行。

禁用 SELinux

修改文件 /etc/selinux/config,将 SELINUX=enforcing 修改为 SELINUX=disabled

[root@zknode1 ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

修改完成后重启主机。

[root@zknode1 ~]# init 6

重启后确认 SELinux 状态为 disabled

[root@zknode1 ~]# sestatus 
SELinux status:                 disabled
关闭防火墙

关闭防火墙,禁止开机启动。

[root@zknode1 ~]# systemctl stop firewalld.service
[root@zknode1 ~]# systemctl disable firewalld.service
[root@zknode1 ~]# systemctl status firewalld.service 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)
配置本地域名解析

将集群中所有机器的主机名和 IP 地址写入到 /etc/hosts 文件。

[root@zknode1 ~]# echo "192.168.44.150   zknode1" >> /etc/hosts
[root@zknode1 ~]# echo "192.168.44.151   zknode2" >> /etc/hosts
[root@zknode1 ~]# echo "192.168.44.152   zknode3" >> /etc/hosts
[root@zknode1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.44.150   zknode1
192.168.44.151   zknode2
192.168.44.152   zknode3
配置时间同步

需要保持集群所有主机的时间同步。RHEL 6 使用 ntpd 配置时间同步,RHEL 7 使用 chronyd 配置时间同步。

[root@zknode1 ~]# vi /etc/chrony.conf 
server time.stone.com iburst
[root@zknode1 ~]# systemctl restart chronyd.service
[root@zknode1 ~]# chronyc makestep
200 OK
[root@zknode1 ~]# chronyc sourcestats
210 Number of sources = 1
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
TIME.STONE.COM              6   3   325     +9.811     25.043   +498us   871us
安装 JDK

官方网站

下载最新版本的 JDK,也可以下载 其他版本

的 JDK。

下载的安装包为:jdk-8u201-linux-x64.tar.gz

在集群所有主机安装 JDK 并配置环境变量:

[root@zknode1 ~]# tar -xvzf jdk-8u201-linux-x64.tar.gz -C /usr/local/
[root@zknode1 ~]# vi .bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

export JAVA_HOME=/usr/local/jdk1.8.0_201
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

[root@zknode1 ~]# source .bash_profile
[root@zknode1 ~]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
安装 ZooKeeper

官方网站

下载最新稳定版,下载的安装包为:apache-zookeeper-3.7.1-bin.tar.gz

在集群所有主机解压安装 ZooKeeper 并配置环境变量:

[root@zknode1 ~]# tar -xvzf apache-zookeeper-3.7.1-bin.tar.gz -C /usr/local/
[root@zknode1 ~]# vi .bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

export JAVA_HOME=/usr/local/jdk1.8.0_201
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

export ZK_HOME=/usr/local/apache-zookeeper-3.7.1-bin
export PATH=$PATH:${ZK_HOME}/bin

[root@zknode1 ~]# source .bash_profile
配置 ZooKeeper

在集群所有主机的 conf 目录下创建 ZooKeeper 配置文件:

[root@zknode1 ~]# cp /usr/local/apache-zookeeper-3.7.1-bin/conf/zoo_sample.cfg /usr/local/apache-zookeeper-3.7.1-bin/conf/zoo.cfg
[root@zknode1 ~]# vi /usr/local/apache-zookeeper-3.7.1-bin/conf/zoo.cfg
tickTime=2000
dataDir=/var/lib/zookeeper/
autopurge.purgeInterval=1
clientPort=2181
initLimit=5
syncLimit=2
server.1=zknode1:2888:3888
server.2=zknode2:2888:3888
server.3=zknode3:2888:3888

然后分别在各个主机的 dataDir 目录创建 myid 文件,内容为配置文件中 server 的编号。

节点1:

[root@zknode1 ~]# mkdir /var/lib/zookeeper/
[root@zknode1 ~]# echo "1" > /var/lib/zookeeper/myid

节点2:

[root@zknode2 ~]# mkdir /var/lib/zookeeper/
[root@zknode2 ~]# echo "2" > /var/lib/zookeeper/myid

节点3:

[root@zknode3 ~]# mkdir /var/lib/zookeeper/
[root@zknode3 ~]# echo "3" > /var/lib/zookeeper/myid
启动 ZooKeeper

在集群所有主机启动 ZooKeeper :

[root@zknode1 ~]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
客户端连接
[root@zknode1 ~]# zkCli.sh -server 127.0.0.1:2181
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值