美文网首页
zookeeper集群部署方式(leader+follower+

zookeeper集群部署方式(leader+follower+

作者: DoubleBin | 来源:发表于2019-12-09 00:12 被阅读0次

一、简介

        zookeeper是一种分布式过程协同技术。zookeeper服务器集群存在三种节点类型:leader(群首)、follower(追随者)、观察者(observer)。其中,leader和follower构成zookeeper集群的“法定人数”(参与leader的选举、响应leader提议),而observer为用于提高读取吞吐量的特殊服务器(不参与leader选举、不需要确认提议消息、不需要发送ack消息给leader服务器以及持久化事务到硬盘)。

        本文介绍zookeeper的集群部署方式,采用3台“法定”主机(1个leader、2个follower)+1台非“法定”主机(1个observer)来实现。

二、环境准备

2.1 机器准备

host ip os myid 备注
zk.master 192.168.90.171 Ubuntu 18.04.2 LTS 10
zk.slave1 192.168.90.172 Ubuntu 18.04.2 LTS 1
zk.slave2 192.168.90.173 Ubuntu 18.04.2 LTS 2
zk.observer 192.168.90.174 Ubuntu 18.04.2 LTS 9 观察者机器

其中,前三台为“法定”人选用于leader和follower,最后一台用于observer。表格中myid为zookeeper的节点标记,需要在zookeeper的data目录下的myid文件中配置。

4台机器均需要安装好jdk,本文安装的是jdk1.8,安装方法不再赘述。

2.2 关闭防火墙

本文采用ubuntu18 server版作为集群机器,Ubuntu 18.04.2 LTS附带UFW默认为禁用状态,相关操作命令:

# 查看状态
root@zk.master:~# ufw status verbose
# 激活
root@zk.master:~# ufw enable
# 关闭
root@zk.master:~# ufw disable

将2.1中4台机器的防火墙都进行关闭。

2.2 修改主机名

Ubuntu 18.04.2 LTS中不能通过/etc/hostname直接修改主机名(重启后会恢复到安装时的设置),需要先修改/etc/cloud/cloud.cfg文件:

sudo vim /etc/cloud/cloud.cfg

找到preserve_hostname将该属性值由false修改为true:

# The top level settings are used as module                                
# and system configuration.                                                
                                                                           
# A set of users which may be applied and/or used by various modules       
# when a 'default' entry is found it will reference the 'default_user'     
# from the distro configuration specified below                            
users:                                                                     
   - default                                                               
                                                                           
# If this is set, 'root' will not be able to ssh in and they               
# will get a message to login instead as the default $user                 
disable_root: true                                                         
                                                                           
# This will cause the set+update hostname module to not operate (if true)  
preserve_hostname: true                                                    
                        

修改/etc/hostname文件,设置主机名:

sudo vim /etc/hostname 

编辑文件内容为主机名后,进行重启:

sudo reboot

可以用hostnamectl set-hostname ${hostname}命令临时设置主机名

将2.1中的4台机器的主机名都进行修改。

2.3 在每台机器上配置主机名解析

编辑/etc/hosts:

sudo vim /etc/hosts

加入如下内容:

192.168.90.171    zk.master                                                
192.168.90.172    zk.slave1                                                
192.168.90.173    zk.slave2                                                
192.168.90.174    zk.observer 

2.4 上传zookeeper安装包到各个机器

2.4.1 下载zookeeper

本文下载从官网下载zookeeper,版本为3.5.5 ,地址: https://apache.org/dist/zookeeper/zookeeper-3.5.5/

2.4.2 上传到各台机器

将下载的apache-zookeeper-3.5.5-bi
n.tar.gz包上传到各台机器的/opt目录,并执行解压:

tar -zxvf apache-zookeeper-3.5.5-bi
n.tar.gz

2.5 创建hadoop用户组和用户

ps: 每台机器均执行

2.5.1 创建用户组
sudo groupadd hadoop
2.5.2 创建用户
#创建hadoop用户
sudo useradd -m hadoop -g hadoop -s /bin/bash
#设置hadoop用户密码
sudo passwd hadoop 
#把root加入hadoop分组
sudo usermod -a -G hadoop root
2.5.3 更改zk目录所属用户及分组
chown -R hadoop:hadoop /opt/apache-zookeeper-3.5.5-bin/

2.6 创建zookeeper的data和logs目录

# 切换到hadoop用户运行
su hadoop
# 切换到zookeeper目录
cd /opt/apache-zookeeper-3.5.5-bin
# 创建data目录和logs目录
mkdir data
mkdir logs

三、zookeeper配置

3.1 配置zoo.cfg

ps:每台机器都执行

cd /opt/apache-zookeeper-3.5.5-bin/conf
cp zoo_sample.cfg zoo.cfg
vi /opt/zookeeper/zoo.cfg

内容如下:

 # tickTime表示服务器之间或客户端与服务器之间心跳的时间间隔,单位为毫秒
 tickTime=2000
 # follower与leader的初始连接心跳数
 initLimit=10
 # follower与leader请求和应答的最大心跳数
 syncLimit=5
 # 快照数据保存目录
 dataDir=/opt/apache-zookeeper-3.5.5-bin/data
 # 日志保存目录
 dataLogDir=/opt/apache-zookeeper-3.5.5-bin/logs
 # 客户端连接端口
 clientPort=2181
 # 客户端最大连接数,默认为60个
 maxClientCnxns=60
 # 默认为false,设置成true,zk将监听所有可用ip地址的连接
 quorumListenOnAllIPs=false
 # 服务器节点配置,格式为:
 # server.${myid}=${host}:${leader和follower通信端口}:${选举端口}(observer节点最后加上:observer )
 server.10=zk.master:2888:3888
 server.1=zk.slave1:2888:3888
 server.2=zk.slave2:2888:3888
 server.9=zk.observer:2888:3888:observer 

上述配置在每台机器都进行设置,可在zk.master机器配置完成后执行scp命令复制到其它机器,以复制到zk.slave1机器为例:

scp -R /opt/apache-zookeeper-3.5.5-bin/conf/zoo.cfg  zk.slave1:/opt/apache-zookeeper-3.5.5-bin/conf/

3.2 observer机器配置

3.1中的配置是集群每台机器都进行配置,针对observer角色配置,在zk.observer机器的zoo.cfg上单独添加:

peerType=observer 

以此配置观察者角色。(实测在zookeeper3.5.5版本中不配置这行,观察者角色也能启动成功,读者可以验证下)

3.3 配置myid

分别配置各个机器的myid:10、1、2、9,以zk.master机器为例:

cd /opt/apache-zookeeper-3.5.5-bin/data
echo 10 > myid

其它类推。

四、zookeeper命令

4.1 配置环境变量

编辑/etc/profile文件:

sudo vim /etc/profile

在文件最后加入如下配置:

export ZOOKEEPER_HOME=/opt/apache-zookeeper-3.5.5-bin  
export PATH=$ZOOKEEPER_HOME/bin:$PATH   

这样可以在终端直接执行zookeeper命令.

4.2 zookeeper启动

在所有节点配置完上述配置后,继续在所有节点以hadoop用户启动zookeeper:

zkServer.sh start 

可通过zkServer.sh status命令查看zookeeper状态, 例如:

hadoop@hadoop-4:~$ zkServer.sh status                                      
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader

上面结果表示该节点启动成功且节点类型为leader。

通过jps命令可以查看zookeeper的java进程为QuorumPeerMain:

hadoop@hadoop-4:~$ jps
42807 Jps
42682 QuorumPeerMain

4.2 zkServer.sh其它命令

执行zkServer.sh -h命令可以看到zkServer.sh命令可选项:

hadoop@hadoop-4:~$ zkServer.sh -h                                          
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg
Usage: /opt/apache-zookeeper-3.5.5-bin/bin/zkServer.sh [--config <conf-dir>
] {start|start-foreground|stop|restart|status|print-cmd}

4.3 zookeeper客户端命令

在zookeeper客户端机器上,通过执行zkCli.sh -server ${host}:${port}命令连接到服务端。例如:

zkCli.sh -server zk.slave1:2181

执行完后进入zookeeper的cli终端,最后显示:

[zk: zk.slave1:2181(CONNECTED) 0] 

执行ls /可显示根目录。

相关文章

  • zookeeper集群部署方式(leader+follower+

    一、简介 zookeeper是一种分布式过程协同技术。zookeeper服务器集群存在三种节点类型:leader(...

  • 基于 Docker 安装 Zookeeper

    概述 Zookeeper 部署有三种方式,单机模式、集群模式、伪集群模式,以下采用 Docker 的方式部署 单机...

  • k8s部署zookeeper集群

    一、部署方式 k8s 以statefulset方式部署zookeeper集群 二、statefulset简介 St...

  • zookeeper安装

    zookeeper有单机、伪集群、集群三种部署方式,可根据自己对可靠性的需求选择合适的部署方式。下边对这三种部署方...

  • Zookeeper安装

    zookeeper有单机、伪集群、集群三种部署方式,可根据自己对可靠性的需求选择合适的部署方式。下边对这三种部署方...

  • (2)搭建zookeeper单机部署和集群部署

    zookeeper有单机、伪集群、集群三种部署方式,可根据自己对可靠性的需求选择合适的部署方式。下边对这三种部署方...

  • Kafka集群

    Kafka集群是把状态保存在Zookeeper中的,首先要搭建Zookeeper集群。Zookeeper集群部署请...

  • 1-搭建Zookeeper

    zookeeper有单机、伪集群、集群三种部署方式,大家可以根据自己对需求的理解选择部署方式。接下来我就来讲解如何...

  • docker-compose部署zookeeper&kafka集

    docker-compose部署zookeeper&kafka集群 环境说明 Zookeeper集群 IP节点目录...

  • zookeeper3.4.5安装

    zookeeper有单机、伪集群、集群三种部署方式,用户可以根据实际需求选择合适的方式 . 以下就zookeepe...

网友评论

      本文标题:zookeeper集群部署方式(leader+follower+

      本文链接:https://www.haomeiwen.com/subject/hgamgctx.html