ZooKeeper之分布式环境搭建--仲裁模式与伪分布式环境搭建

相关知识

为了完成本关任务,你需要掌握:1.ZooKeeper单节点安装方法,2.命令行基本操作。

ZooKeeper之仲裁模式

standlone模式运行ZooKeeper,便于评估,开发,测试和学习。但是在实际生产中,使用ZooKeeper均以仲裁模式(quorum mode)运行,quorum mode具有一组ZooKeeper服务器,这一组服务器同时服务客户端的请求。具体可划分为两类:分布式模式(即多个服务器在不同计算机上)、伪分布式模式(即多个服务器在同一计算机上)。客户端与服务器之间的关系如下图所示:

法定人数

quorum mode模式下,ZooKeeper复制集群中所有服务器的数据树。但是,如果让一个客户端等待每个服务器完成数据保存后再继续,那么可能导致的延迟问题将无法接受。所以,必须指定保证ZooKeeper正常提供服务的最小服务器数量。类似于公共管理领域中的法定人数(进行一项投票所需立法者的最小数量)。

一般情况下,在ZooKeeper分布式模式中,服务器数量为奇数个。例如,5个服务器中,至少有3个服务器提供服务(即法定人数),允许2个服务器崩溃,即多数原则;如果5个服务器节点,法定人数为2,在提供服务的2个服务器上进行了节点创建的操作,而在与另外3个服务器通信时发生长时间延迟,导致另外3个服务器无法发现该节点的创建,那么该节点创建操作就是非持久的。但是,如果只有4个服务器,那么需要保证3个服务器提供服务才能保证ZooKeeper的正常运行,那么,ZooKeeper容忍服务器崩溃的能力就会减弱。

Leader选举

Leader作为整个ZooKeeper集群的主节点,负责响应所有对ZooKeeper状态变更的请求和进行选举投票的发起和决议,保证服务器数据一致性。它会将每个状态更新请求进行排序和编号,以便保证整个集群内部消息处理的FIFO

服务器具有4种状态,分别是LOOKINGFOLLOWINGLEADINGOBSERVING

  • LOOKING:寻找Leader状态。当服务器处于该状态时,当前集群中没有Leader,因此需要进入Leader选举状态。

  • FOLLOWING:跟随者状态。表明当前服务器角色是Follower

  • LEADING:领导者状态。表明当前服务器角色是Leader

  • OBSERVING:观察者状态。表明当前服务器角色是ObserverObserver不参与投票和选举过程。

ZooKeeper的leader选举过程分为两种,服务器初始化启动和服务器运行期间无法和leader保持连接。选举过程如下图所示:

服务器初始化启动leader选举分为以下几步:

  • 每个Server发出一个投票。投票信息包含myid(服务器编号)和ZXID(Zookeeper状态发生改变的序号),然后发给集群中其他机器。

  • 接受来自各个服务器的投票。

  • 处理投票。 优先检查ZXIDZXID大的服务器被选举为Leader。如果ZXID相同,myid较大的服务器被选举为Leader

  • 统计投票。每次投票后,服务器都会统计投票信息,判断是否已经有过半服务器接受到相同的投票信息。

  • 改变服务器状态。当确定了leader后,服务器更新当前状态,如果是Follower,则更新为FOLLOWING,如果是leader,则更新为LEADING

服务器运行期间无法和leader保持连接的leader选举分为以下几步:

  • 变更状态。非Observer首先将服务器状态变更为LOOKING,然后进入Leader选举过程。

  • 其余步骤与服务器初始化启动leader选举过程相同,这里不再赘述。

ZooKeeper伪分布式安装

在了解ZooKeeper的仲裁模式(quorum)后,下面讲解如何安装ZooKeeper的伪分布式(3个服务器节点,法定人数2)。

  • 安装ZooKeeper第1个节点,与standalone安装方法相同(且开发环境中已经安装,安装目录/opt/zookeeper-3.4.12),这里不再赘述

cd /opt/zookeeper-3.4.12
vi /opt/zookeeper-3.4.12/conf/zoo.cfg
  • zoo.cfg配置文件修改如下配置:

dataDir=/opt/zookeeper-3.4.12/tmp/data

server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
  • 其中,每一行分别是ip,通信端口,选举leader端口。

修改后配置文件如下图所示:

指定myid。在配置项dataDir指定目录下,新建myid文件,并写入数字1(即第1个服务器节点),使用以下命令:

mkdir -p /opt/zookeeper-3.4.12/tmp/data/
echo 1 > /opt/zookeeper-3.4.12/tmp/data/myid
cat /opt/zookeeper-3.4.12/tmp/data/myid

将ZooKeeper的安装目录复制2个副本(即第2个和第3个服务器节点,命名可根据实际情况更改),使用如下命令(可根据实际安装目录修改):

cp -r /opt/zookeeper-3.4.12 /opt/zookeeper-3.4.12-01
cp -r /opt/zookeeper-3.4.12 /opt/zookeeper-3.4.12-02
cp -r /opt/zookeeper-3.4.12 /opt/zookeeper-3.4.12-03

 第一个节点修改zoo.cfg

vi /opt/zookeeper-3.4.12-01/conf/zoo.cfg 

dataDir=/opt/zookeeper-3.4.12-01/tmp/data

第二个节点修改zoo.cfg

vi /opt/zookeeper-3.4.12-02/conf/zoo.cfg 

clientPort=2182
dataDir=/opt/zookeeper-3.4.12-02/tmp/data

第二个节点添加myid文件

echo 2 > /opt/zookeeper-3.4.12-02/tmp/data/myid
cat /opt/zookeeper-3.4.12-02/tmp/data/myid

第三个节点 修改zoo.cfg

vi /opt/zookeeper-3.4.12-03/conf/zoo.cfg 

clientPort=2183
dataDir=/opt/zookeeper-3.4.12-03/tmp/data

 第三个节点添加myid文件

echo 3 > /opt/zookeeper-3.4.12-03/tmp/data/myid
cat /opt/zookeeper-3.4.12-03/tmp/data/myid

分别三个启动节点

/opt/zookeeper-3.4.12-01/bin/zkServer.sh start
/opt/zookeeper-3.4.12-02/bin/zkServer.sh start
/opt/zookeeper-3.4.12-03/bin/zkServer.sh start

利用jps命令查看当前进程,如下图所示,则伪分布式安装成功

### 回答1: 头歌zookeeper是一个分布式协调服务,用于管理和协调分布式系统中的各个节点。在搭建分布式环境时,可以使用头歌zookeeper来实现节点之间的通信和同步。 搭建头歌zookeeper分布式环境的步骤如下: 1. 下载并安装头歌zookeeper。 2. 配置zookeeper的配置文件,包括zookeeper的端口号、数据存储路径等。 3. 在每个节点上启动zookeeper服务。 4. 在每个节点上配置zookeeper的集群信息,包括集群中其他节点的IP地址和端口号。 5. 测试zookeeper集群的连接和同步功能。 需要注意的是,在搭建分布式环境时,要确保各个节点之间的网络连接稳定,并且zookeeper的配置文件和集群信息要保持一致。 ### 回答2: Zookeeper是一个分布式协调服务,可以为分布式应用程序提供一致性、可靠性和高效性。在分布式系统中,通常需要协调各个节点之间的任务分配、状态同步等,Zookeeper就是实现这个目的的工具之一。 要搭建分布式环境,首先需要在多台机器上安装ZookeeperZookeeper的安装可以采用源码编译安装或者直接使用二进制包安装。在安装时需要注意配置Zookeeper的数据目录、日志目录等信息,还需要创建一个Zookeeper的配置文件,用于指定端口、数据目录等参数。 安装完成后,需要启动每个Zookeeper实例。在启动时,需要指定Zookeeper的配置文件和服务器ID。服务器ID应该在每台机器上是唯一的,并且应该落在1~255之间。启动时可以输入命令“./zkServer.sh start”启动。 搭建完分布式环境后,需要在Zookeeper中创建znodes。znode是Zookeeper中的数据节点,是分布式环境中数据交换、同步的基本单位。可以使用Zookeeper提供的命令行工具或者编写Java程序实现znode的创建、读取、更新、删除等操作。 创建完znode后,就可以在分布式应用程序中使用Zookeeper实现分布式协调了。例如,可以使用Zookeeper实现分布式锁、分布式任务分配等功能。在使用Zookeeper时,需要注意Zookeeper的一致性协议,避免出现数据不一致的情况。 总之,Zookeeper分布式环境搭建需要注意配置文件和服务器ID的设置,在使用中需要注意一致性问题,才能发挥出其实现分布式协调的能力。 ### 回答3: Zookeeper是一个分布式协调服务,为分布式应用提供一致性服务。对于分布式 系统来说,Zookeeper用于解决如何协调和管理各种分布式服务的问题,有效提 高了分布式系统的可靠性和可用性。 搭建Zookeeper分布式环境,需要以下步骤: 1. 下载和安装Zookeeper软件 从官方网站下载Zookeeper软件包,并解压到想要安装的目录。安装完成后,还可 以配置环境变量,使Zookeeper命令可以全局访问。 2. 配置Zookeeper 在安装Zookeeper后,需要对Zookeeper进行配置。在Zookeeper主目录下创建con f目录,并在其中创建zoo.cfg文件。在zoo.cfg文件中设置Zookeeper服务器的 参数,例如服务器的数量、端口号、数据目录位置等。 3. 启动Zookeeper集群 在配置完Zookeeper后,可通过启动Zookeeper集群来实现对分布式应用程序的协 调和管理。启动Zookeeper集群需要在各个节点主机上运行Zookeeper服务,不同节 点的id必须唯一,并且节点间需要配置相应的IP地址和端口号。 4. 验证Zookeeper集群 启动Zookeeper集群后,需要验证其是否正常工作。可以通过使用客户端连接到 Zookeeper服务器,执行相Zookeeper命令来验证Zookeeper集群的工作是否正 常。例如,可以使用"ls /"来列出Zookeeper根节点上的所有子节点,使用"create /temp "hello""创建一个名为temp的节点,并将其值设置为hello。 5. 集成Zookeeper 将程序集成到Zookeeper中需要进行三项基本工作:连接Zookeeper、注册/订阅 节点和断开连接。连接Zookeeper是第一步,每个节点都需要在启动时尝试连接到 一个或多个Zookeeper服务器。注册/订阅节点需要在连接到Zookeeper后进行,以确 保在每个节点上正确维护应用程序运行的状态。断开连接是最后一步,确保在程 序退出之前,闭与Zookeeper的所有连接。 搭建Zookeeper分布式环境需要仔细配置和验证,确保可以正常工作。通过搭建 分布式环境,可以更好地实现对分布式应用程序的协调和管理,提高系统的可靠性 和可用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值