Zookeeper伪集群的搭建

Zookeeper伪集群的搭建

1.选择自己需要的版本号进行下载

wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

注意:Zookeeper是需要依赖jdk的,所以你的主机要安装上jdk

2.解压

[root@localhost tools]# tar -zxvf zookeeper-3.4.9.tar.gz

3. 分别创建三个data(d_1,d_2,d_3)目录和logs(log_1,log_2,log_3)目录用来分别存放三个Zookeeper的数据和日志信息

4.进入zk中的conf目录下 分别 复制配置文件zoo_sample.cfg 为zoo1.cfg,zoo2.cfg,zoo3.cfg来作为三个Zookeeper的的配置文件

[root@localhost conf]# cp zoo_sample.cfg zoo1.cfg
[root@localhost conf]# cp zoo_sample.cfg zoo2.cfg
[root@localhost conf]# cp zoo_sample.cfg zoo3.cfg

5. 分别对zoo1.cfg、2、3文件进行编辑

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/home/tools/zookeeper-3.4.9/data/d_1
dataLogDir=/home/tools/zookeeper-3.4.9/logs/log_1
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=127.0.0.1:2187:2887 
server.2=127.0.0.1:2188:2888
server.3=127.0.0.1:2189:2889

如图:zoo1.cfg

Zoo2.cfg

Zoo3.cfg

这几个参数主要是注意一下:

  • dataDir zk 的放置一下数据的目录如版本号,id 等等,所以每一个节点都区分一下如,/home/tools/zookeeper-3.4.9/data/d_1
  • clientPort 接受客户端请求的端口,每个节点都需要不一样。如:2181
  • server.X 这个数字就是对应 data/myid中的数字。你在3个server的myid文件中分别写入了1,2,3,那么每个server中的zoo.cfg都配server.1,server.2,server.3就OK了。因为在同一台机器上,后面连着的2个端口3个server都不要一样,否则端口冲突,其中第一个端口用来集群成员的信息交换,第二个端口是在leader挂掉时专门用来进行选举leader所用。

6.分别在/home/tools/zookeeper-3.4.9/data/d_1,2,3目录下创建myid文件Myid文件的内容分别对应配置文件中server.1 和server.2 server.3 中的数字1,2,3

echo '1' myid (要进去/home/tools/zookeeper-3.4.9/data/d_1这个目录下)
echo '2' myid
echo '3' myid

7.进入bin目录下输入命令 分别进行启动

[root@localhost bin]# ./zkServer.sh start  ../conf/zoo1.cfg 
[root@localhost bin]# ./zkServer.sh start  ../conf/zoo2.cfg 
[root@localhost bin]# ./zkServer.sh start  ../conf/zoo3.cfg

8.查看Zookeeper的状态

[root@localhost bin]# ./zkServer.sh status  ../conf/zoo3.cfg 
[root@localhost bin]# ./zkServer.sh status  ../conf/zoo2.cfg 
[root@localhost bin]# ./zkServer.sh status  ../conf/zoo1.cfg

或者使用jps查看是否启动了三个。

到此Zookeeper的伪集群搭建就完毕了。

Zoo.cfg 参数                                      

角色:

  • Leader:Leader 作为整个 ZooKeeper 集群的主节点,负责响应所有对 ZooKeeper 状态变更的请求。它会将每个状态更新请求进行排序和编号,以便保证整个集群内部消息处理的 FIFO,写操作都走 leader
  • Follower  :Follower 的逻辑就比较简单了。除了响应本服务器上的读请求外,follower 还要处理leader 的提议,并在 leader 提交该提议时在本地也进行提交。 另外需要注意的是,leader 和 follower 构成 ZooKeeper 集群的法定人数,也就是说,只有他们才参与新 leader的选举、响应 leader 的提议。
  • Observer  :如果 ZooKeeper 集群的读取负载很高,或者客户端多到跨机房,可以设置一些 observer服务器,以提高读取的吞吐量。Observer 和 Follower 比较相似,只有一些小区别:首先observer 不属于法定人数,即不参加选举也不响应提议;其次是 observer 不需要将事务持久化到磁盘,一旦 observer 被重启,需要从 leader 重新同步整个名字空间。

Zookeeper  特性:

  • Zookeeper 是一个由多个 server 组成的集群
  • 一个 leader,多个 follower
  • 每个 server 保存一份数据副本
  • 全局数据一致
  • 分布式读 follower,写由 leader 实施
  • 更新请求转发,由 leader 实施
  • 更新请求顺序进行,来自同一个 client 的更新请求按其发送顺序依次执行
  • 数据更新原子性,一次数据更新要么成功,要么失败
  • 全局唯一数据视图,client 无论连接到哪个 server,数据视图都是一致的实时性,在一定事件范围内,client 能读到最新数据

猜你喜欢

转载自blog.csdn.net/qq_40368860/article/details/85172782