影视网站源码下载,网页传奇哪个最火,智能建造考研方向,庆阳市建设局网站文章目录 ZooKeeper 概述选举机制搭建前准备分布式配置分布式安装解压缩并重命名配置环境配置服务器编号配置文件 操作集群编写脚本运行脚本搭建过程中常见错误 ZooKeeper 概述
Zookeeper 是一个开源的分布式服务协调框架#xff0c;由Apache软件基金会开发和维护。以下是对Z… 文章目录 ZooKeeper 概述选举机制搭建前准备分布式配置分布式安装解压缩并重命名配置环境配置服务器编号配置文件 操作集群编写脚本运行脚本搭建过程中常见错误 ZooKeeper 概述
Zookeeper 是一个开源的分布式服务协调框架由Apache软件基金会开发和维护。以下是对Zookeeper的主要概述 设计目标 提供分布式环境中的数据一致性。为分布式应用程序提供协调服务。简化复杂分布式系统的构建和管理。 功能特性 数据模型Zookeeper使用一个树形结构的数据模型Znode每个节点可以存储数据并具有版本号。一致性保证Zookeeper保证在客户端看到的数据是一致的提供顺序一致性、原子性和单一系统映像等特性。分布式锁通过临时节点和 watches监视器机制Zookeeper可以实现分布式锁确保在分布式环境中对共享资源的互斥访问。集群管理Zookeeper可以用于管理集群中的节点如监控节点状态、动态加入或移除节点。配置管理应用程序可以在Zookeeper中存储和获取配置信息使得配置变更能够快速传播到所有相关节点。命名服务Zookeeper可以作为命名服务为分布式系统中的资源提供唯一的标识符。 工作原理 Zookeeper集群由一组相互协作的服务器组成这些服务器共同维护一个具有相同数据副本的内存数据库。客户端与Zookeeper集群进行交互读取数据、写入数据或者注册 watches以监听数据变化。Zookeeper通过投票机制实现容错和领导选举确保在部分服务器故障时仍能提供服务。 应用场景 在Hadoop和HBase等大数据处理框架中Zookeeper用于管理集群状态和协调任务。作为服务发现工具帮助微服务架构中的服务注册和发现。在分布式消息队列系统中如Kafka用于Broker和Consumer的协调。
总的来说Zookeeper在分布式系统中扮演着关键的角色通过提供可靠的数据管理和协调服务简化了分布式应用程序的开发和运维。
选举机制
1集群中半数以上机器存活集群可用。所以 Zookeeper 一般安装奇数台服务器因为假设有 2N 1 台机器只要 N 1 台存活集群就可用再加一台也还是 N 1 台并不会提高集群可用性能浪费资源。
2服务器具有4种状态分别是LOOKING、FOLLOWING、LEADING、OBSERVING。
LOOKING寻找Leader状态。当服务器处于该状态时当前集群中没有Leader因此需要进入Leader选举状态。FOLLOWING跟随者状态。表明当前服务器角色是Follower。LEADING领导者状态。表明当前服务器角色是Leader。OBSERVING观察者状态。表明当前服务器角色是ObserverObserver不参与投票和选举过程。
3选举过程假设有五台服务器组成的 Zookeeper 集群它们的 id 从 1 - 5。如果这些服务器依序启动**第一次启动**
服务器 1 启动发起选举 服务器先投给自己一票然后判断是否过半显然不够选举无法完成服务器 1 状态保持为 LOOKING 服务器 2 启动发起选举 服务器 2 先投给自己一票然后与最开始启动的服务器 1 进行通信互相交换自己的选举结果 id 值更大的服务器 2 胜出服务器 1 将选票改投给 服务器 2此时服务器 1 有 0 票服务器 2 有 2 票还不够半数选举无法完成服务器状态 1、2 保持为 LOOKING 服务器 3 启动发起选举 服务器 3 先投给自己一票根据上述方法同理服务器 1、2 都会改投服务器 3此时服务器 1 有 0 票服务器 2 有 0 票服务器 3 有 3 票(3/5) 超过半数服务器 3 当选为 Leader。服务器状态 1、2 更改状态为 FOLLOWDING服务器 3 更改状态为 LEADING 服务器 4 启动发起选举 服务器先投给自己一票此时已经存在 Leader 了服务器 1、2、3 不会再改投了。所以投票结果为服务器 3 有 3 票服务器 4 有 1 票。服务器 4 服从多数更改状态为 FOLLOWING 服务器 5 启动发起选举 与服务器 4 同理更改状态为 FOLLOWING。
搭建前准备
下载地址Index of /dist/zookeeper (apache.org)
文档地址Apache ZooKeeper
这里选择 Zookeeper-3.5.7 版本进行搭建自行配置 JDK7 或更高版本
分布式配置
分布式配置与伪分布式配置主要有以下区别其余配置均相同
伪分布式所使用的端口必须不同分布式端口可以相同。伪分布式统一使用一个IP分布式需要根据当前网络IP配置。
以下为分布式与伪分布式配置对比以3个服务器节点为例这里选择分布式配置
配置伪分布式分布式clienPort218121822183218121812181server.1127.0.0.1:2888:3888hadoop102:2888:3888server.2127.0.0.1:2889:3889hadoop103:2888:3888server.3127.0.0.1:2890:3890hadoop104:2888:3888
分布式安装
先在 hadoop102 上操作最后分发文件改个 myid 就行也可以使用 MultiExec 功能一次向所有终端发送命令
解压缩并重命名
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/
mv /opt/apache-zookeeper-3.5.7-bin /opt/zookeeper-3.5.7配置环境
vim /etc/profile.d/zookeeper.sh添加下述内容
export ZOOKEEPER_HOME/opt/zookeeper-3.5.7
export PATH$PATH:$ZOOKEEPER_HOME/bin更新环境变量
source /etc/profile配置服务器编号
hadoop102 的 myid 设置为 1hadoop103 为 2hadoop104 为 3
mkdir -p $ZOOKEEPER_HOME/tmp/data
echo 1 $ZOOKEEPER_HOME/tmp/data/myid配置文件
把 $ZOOKEEPER_HOME/conf 这个目录下的 zoo_sample.cfg 复制为 zoo.cfg
cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg修改配置
vim $ZOOKEEPER_HOME/conf/zoo.cfg修改数据存储路径
dataDir/opt/zookeeper-3.5.7/tmp/data添加下述配置
server.1hadoop102:2888:3888
server.2hadoop103:2888:3888
server.3hadoop104:2888:3888下述配置参数含义
server.AB:C:DA 数字表示这个是第几号服务器即集群模式下配置的 myidB 服务器的 IP 地址C 服务器与集群中的 Leader 服务器交换信息的端口D 当集群中的 Leader 服务器挂了需要重新选举出一个新的 Leader 时在这个端口进行服务器相互通信2181对外提供服务端口2888内部数据同步端口3888Leader 挂了重新选举端口。
集群分发 zookeeper 目录和配置文件
xsync $ZOOKEEPER_HOME
xsync /etc/profile.d/zookeeper.sh最后不要忘记去 hadoop102hadoop104 上将 myid 改为 23 其他集群如果使用 $ZOOKEEPER_HOME 需要先 source /etc/profile 更新一下环境变量
[userhadoop103 ~]$ echo 2 $ZOOKEEPER_HOME/tmp/data/myid
[userhadoop104 ~]$ echo 3 $ZOOKEEPER_HOME/tmp/data/myid操作集群
在每个服务器上启动 Zookeeper
[userhadoop102 zookeeper-3.5.7]$ zkServer.sh start
[userhadoop103 zookeeper-3.5.7]$ zkServer.sh start
[userhadoop104 zookeeper-3.5.7]$ zkServer.sh start使用 jpsall 查看进程QuorumPeerMain 就是 Zookeeper 集群的启动入口类用来加载配置启动 QuorumPeer 线程的
[userhadoop102 ~]$ ./jpsallhadoop102
11507 QuorumPeerMain
12988 Jpshadoop103
14498 Jps
12887 QuorumPeerMainhadoop104
12471 Jps
11086 QuorumPeerMain查看集群状态按照半数选举机制三个服务器中第二个启动的集群就是 Leader
[userhadoop102 zookeeper-3.5.7]$ zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.5.7/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower[userhadoop103 zookeeper-3.5.7]$ zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.5.7/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader[userhadoop104 zookeeper-3.5.7]$ zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.5.7/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower此时可以尝试将 hadoop103 断掉按照投票机制应当是 hadoop104 当选 Leader
编写脚本
vim zk.sh给执行权限
chmod 777 zk.sh添加如下内容
#!/bin/bashif [ $# -lt 1 ]
thenecho No Args Input...exit ;
ficase $1 in
start)echo 启动 zookeeper 集群 echo ------------- hadoop102 -----------------ssh hadoop102 $ZOOKEEPER_HOME/bin/zkServer.sh startecho ------------- hadoop103 -----------------ssh hadoop103 $ZOOKEEPER_HOME/bin/zkServer.sh startecho ------------- hadoop104 -----------------ssh hadoop104 $ZOOKEEPER_HOME/bin/zkServer.sh start
;;
stop)echo 关闭 zookeeper 集群 echo ------------- hadoop102 -----------------ssh hadoop102 $ZOOKEEPER_HOME/bin/zkServer.sh stopecho ------------- hadoop103 -----------------ssh hadoop103 $ZOOKEEPER_HOME/bin/zkServer.sh stopecho ------------- hadoop104 -----------------ssh hadoop104 $ZOOKEEPER_HOME/bin/zkServer.sh stop
;;
status)echo 查看 zookeeper 状态 echo ------------- hadoop102 -----------------ssh hadoop102 $ZOOKEEPER_HOME/bin/zkServer.sh statusecho ------------- hadoop103 -----------------ssh hadoop103 $ZOOKEEPER_HOME/bin/zkServer.sh statusecho ------------- hadoop104 -----------------ssh hadoop104 $ZOOKEEPER_HOME/bin/zkServer.sh status
;;
*)echo Input Args Error...
;;
esac运行脚本
1启动 zookeeper 集群
./zk.sh start 启动 zookeeper 集群
------------- hadoop102 -----------------
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.5.7/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
------------- hadoop103 -----------------
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.5.7/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
------------- hadoop104 -----------------
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.5.7/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED2查看集群各服务器状态
./zk.sh status 查看 zookeeper 状态
------------- hadoop102 -----------------
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.5.7/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
------------- hadoop103 -----------------
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.5.7/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
------------- hadoop104 -----------------
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.5.7/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower3关闭 zookeeper 集群
./zk.sh stop 关闭 zookeeper 集群
------------- hadoop102 -----------------
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.5.7/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
------------- hadoop103 -----------------
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.5.7/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
------------- hadoop104 -----------------
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.5.7/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED搭建过程中常见错误
Zookeeper 集群搭建过程中常见错误-CSDN博客