目录
zookeeper集群
概念
kafka 3.4.1 在命令中已经不需要zookeeper
zookeeper是一个开源的,分布式的,为分布式架构提供协调服务的APACHE的项目。
zookeeper的工作机制:观察者模式设计的分布式服务器管理架构。负责存储和管理元数据,记录集群的变化,保存集群的变化的信息。
zookeeper的特点:
1.在集群中分为领导者和追随者组成的集群
2.只要有半数以上的节点正常工作,整个zookeeper就可以正常工作。zookeeper在部署时一般选择奇数台
3.全局数据一致,每个zookeeper不论是领导者还是追随者,在访问他们的数据时都是一致的。
4.数据更新的原子性,一次更新数据,那么都成功,那么都失败
5.数据更新的实时性
6.领导者和追随者投票产生
选举机制:A、B、C
1)服务器A启动,发起一次选举,A会投自己一票,此时A有一票,但不够半数,选举无法完成,A进行looking
2)服务器B启动,再发起一次选举,服务器B也投自己一票,服务A和服务B会做个myid比较,比较谁的myid大,如果A比B小,A会把票改投给B,此时B有2票,B自动当选为leader
3)C启动,自动成为追随者,A也会成为追随者
数据流向图
zookeeper集群实验
负责管理和收集zookeeper数据
架构
192.168.233.61
192.168.233.62
192.168.233.63
实现步骤
1.安装ntpdate(所有设备都要安装)
yum -y install ntpdate -y
然后查看时间是否一致
2.安装java(所有设备都要安装)
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
3.安装zookeeper(所有设备都要安装)
把apache-zookeeper-3.5.7-bin.tar拖入到三台虚拟机中
tar -xf apache-zookeeper-3.5.7-bin.tar.gz
mv apache-zookeeper-3.5.7-bin /opt/zookeeper
cd zookeeper/
cd conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
server.1 数字id,也就是服务器对应的myid
3188:zookeeper集群内部通信的端口
3288:重新选举端口,万一leader挂了,用这个端口进行内部通信,选举新的leader
依旧是三台机同步操作
mkdir /opt/zookeeper/data
mkdir /opt/zookeeper/logs
然后分别在61 echo 1 > /opt/zookeeper/data/myid
在62 echo 2 > /opt/zookeeper/data/myid
在63 echo 3 > /opt/zookeeper/data/myid
然后三台机同步操作写一个脚本
vim /etc/init.d/zookeeper
#!/bin/bash
#chkconfig:2345 20 90
#description:Zookeeper Service Control Script
ZK_HOME='/opt/zookeeper'
case $1 in
start)
echo "---------- zookeeper 启动 ------------"
$ZK_HOME/bin/zkServer.sh start
;;
stop)
echo "---------- zookeeper 停止 ------------"
$ZK_HOME/bin/zkServer.sh stop
;;
restart)
echo