当前位置: 首页>前端>正文

zookeeper curator 节点数据读取不到 zookeeper节点个数

因为这里zookeeper的集群部署都会2n+1台

Dubbo建议使用Zookeeper作为服务的注册中心。

Zookeeper集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的。正是基于这个特性,要将ZK集群的节点数量要为奇数(2n+1:如3、5、7个节点)较为合适。

 

 

zookeeper的介绍:

zookeeper是一个分布式的开源框架,它能很好的管理集群,而且提供协调分布式应用的基本服务。

 

它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。

 

zookeeper本身可以以standalone模式(单节点状态)安装运行,不过它的长处在于通过分布式zookeeper集群(一个leader,多个follower),基于一定的策略来保证zookeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。

 

 

zookeeper 集群角色介绍:

 

zookeeper集群中主要有两个角色:leader和follower。

 

领导者(leader),用于负责进行投票的发起和决议,更新系统状态。

 

学习者(learner),包括跟随者(follower)和观察者(observer)。

 

其中follower用于接受客户端请求并想客户端返回结果,在选主过程中参与投票。

 

而observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度。

 

 

zookeeper解决节点个数的选择:

 

一个zookeeper集群需要运行几个zookeeper节点呢?

 

你可以运行一个zookeeper节点,但那就不是集群了。如果要运行zookeeper集群的话,最好部署3,5,7个zookeeper节点。本次实验我们是以3个节点进行的。

 

zookeeper节点部署的越多,服务的可靠性也就越高。当然建议最好是部署奇数个,偶数个不是不可以。但是zookeeper集群是以宕机个数过半才会让整个集群宕机的,所以奇数个集群更佳。

 

你需要给每个zookeeper 1G左右的内存,如果可能的话,最好有独立的磁盘,因为独立磁盘可以确保zookeeper是高性能的。如果你的集群负载很重,不要把zookeeper和RegionServer运行在同一台机器上面,就像DataNodes和TaskTrackers一样。

 

 

ZooKeeper与Dubbo服务集群架构图

zookeeper curator 节点数据读取不到 zookeeper节点个数,zookeeper curator 节点数据读取不到 zookeeper节点个数_zookeeper,第1张

这里我们首先选择三台机器

10.19.42.53

10.19.190.32

10.19.165.206

1、修改操作系统的/etc/hosts文件,添加IP与主机名映射:

添加下面三个解析:

10.19.42.53 zk-00110.19.190.32 zk-00210.19.165.206 zk-003

2.这里我们下载zookeeper的压缩包(这里我的jdk的环境是1.8)

cd /data/tools

上传压缩包zookeeper-3.4.9.tar.gz

tar -xf zookeeper-3.4.9.tar.gz

这里可以做一个软连接

ln -sv zookeeper-3.4.9 zookeeper

cd zookeeper

mkdir /data/zookeeper/{data,logs} -p

cp conf/zoo_sample.cfg conf/zoo.cfg

vim conf/zoo.cfg

zookeeper curator 节点数据读取不到 zookeeper节点个数,zookeeper curator 节点数据读取不到 zookeeper节点个数_大数据_02,第2张

其他三个节点修改一下相应的地方即可

参数说明:

tickTime=2000

tickTime这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳。

initLimit=10

initLimit这个配置项是用来配置Zookeeper接受客户端(这里所说的客户端不是用户连接Zookeeper服务器的客户端,而是Zookeeper服务器集群中连接到Leader的Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过10个心跳的时间(也就是tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。

syncLimit=5

syncLimit这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。

dataDir=/home/wusc/zookeeper/node-01/data

dataDir顾名思义就是Zookeeper保存数据的目录,默认情况下Zookeeper将写数据的日志文件也保存在这个目录里。

clientPort=2181

clientPort这个端口就是客户端(应用程序)连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求。

server.A=B:C:D中的A是一个数字,表示这个是第几号服务器,B是这个服务器的IP地址,C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口,D是在leader挂掉时专门用来进行选举leader所用的端口。

 

vim /data/zookeeper/zk1/data/myid

1

其他节点的值分别是2,3

添加如下防火墙规则

##### zookeeperiptablse -A INPUT -m state --state NEW -m tcp -p tcp --dport 2081 -j ACCEPTiptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPTiptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT

 

重启防火墙:

 

# service iptables restart

 

增加zookeeper环境变量

编辑文件 /etc/profile,添加如下:

export ZOOKEEPER_HOME=/data/tools/zookeeperexport PATH=$ZOOKEEPER_HOME/bin:$PATH

source /etc/profile

增加zookeeper的启动脚本

cd /etc/rc.d/init.d
touch zookeeper && chmod +x zookeeper
vim zookeeper
#!/bin/bash
case  in
         start) su root  /data/tools/zookeeper/bin/zkServer.sh start;;
         stop) su root  /data/tools/zookeeper/bin/zkServer.sh stop;;
         status) su root  /data/tools/zookeeper/bin/zkServer.sh status;;
         restart) su root  /data/tools/zookeeper/bin/zkServer.shrestart;;
         *)  echo "requirestart|stop|status|restart"  ;;
esac

// 添加到开机启动 chkconfig zookeeper on chkconfig --add zookeeper 
// 启动或停止 service zookeeper start | stop | restart

这里我们可以查看一下我们的zookeeper服务端口,就是我们上面定义的那个
这里我们启动第一台的时候会报错,接着把接下来的两台服务器起来之后才不会报错,我们可以看一下三台服务器的status.我们会看到有一台服务器的状态是leader,其余两台的状态是follower
如果我们这里是单台的zookeeper的话,我们查看到的状态是standalone,这里我们在搭建zookeeper集群的时候一定要停止已经启动的zookeeper,
// 添加到开机启动 chkconfig zookeeper on chkconfig --add zookeeper 
// 启动或停止 service zookeeper start | stop | restart

这里我们可以查看一下我们的zookeeper服务端口,就是我们上面定义的那个
这里我们启动第一台的时候会报错,接着把接下来的两台服务器起来之后才不会报错,我们可以看一下三台服务器的status.我们会看到有一台服务器的状态是leader,其余两台的状态是follower
如果我们这里是单台的zookeeper的话,我们查看到的状态是standalone,这里我们在搭建zookeeper集群的时候一定要停止已经启动的zookeeper,

 

这里有一点要注意的是。我们配置hosts的时候

[wwwad@zk3 ~]$ cat /etc/hosts127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4::1         localhost localhost.localdomain localhost6 localhost6.localdomain6127.0.0.1 zk310.19.118.88 zk110.19.106.84 zk210.19.171.44 zk3

这个我把127.0.0.1的解析到了zk3,而且还是放在10.19.171.44 zk3之前,我怎么起都是报错的。这里我们需要把127.0.0.1的解析去掉,或者放在最后


https://www.xamrdz.com/web/2nb1925833.html

相关文章: