集群安装
1. 安装JDK。下载地址: http://java.sun.com/javase/downloads/index.jsp
设置JAVA_HOME ,将 $JAVA_HOME/bin 加到 PATH 变量里。
2. 下载Zookeeper 地址: http://hadoop.apache.org/zookeeper/releases.html 解压到相应目录。
3. 创建配置文件。 c onf/zoo.cfg 内容例如:
#tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 毫秒时间就会发送一个心跳。
tickTime=2000
#dataDir:Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
dataDir=/tmp/zookeeper/data
#dataLogDir:日志文件保存的位置
dataLogDir=/tmp/zookeeper/log
#clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort=2181
#initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
#当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。
initLimit=10
#syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒
syncLimit=5
#server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
#如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
server.1=192.168.211.1:2888:3888
server.2=192.168.211.2:2888:3888
server.3=192.168.211.3:2888:3888
#自动清理功能是3.4.0之后提供的功能。较低的版本需要手工运行清理工具。
#自动清理时 保存在 datadir 里的数据快照数。最小值3
autopurge.snapRetainCount =3
#自动清理任务的间隔小时数
autopurge.purgeInterval =1
4. 创建 myid 文件。
myid 文件只包含一个单行文本, 内容为机器的编号。server.A=B:C:D 其中的数字 A 进入到dataDir, echo A > myid 。
5. 测试
全部配置完成后,进入各机器 Zookeeper 的 bin 目录,执行 ./zkServer.sh start
之后执行echo stat | nc localhost 2181 查看当前节点状态。
Observers 配置
为提高 zookeeper 伸缩性而设计。 Observers 不参与投票的服务器 , 可以接受客户端的连接,将写请求转发给领导节点 。
设置 ZooKeeper 使用 Observers 非常简单,只需要在配置文件中有两处改动。
首先是每个 Observer 的配置文件中都要有这么一行:
peerType=observer
这行让服务器作为一个 Observer 来工作。之后,在每个服务器配置文件中,你必须在服务器定义行给每个 Observer 加入 :observer 。比如:
Server. 4=192.168.211.4:2888:3888 :observer
这让每个其他服务器知道 server. 4 是一个 Observer,就不会让它进行投票了。
有关 Obervers 的说明详见 gnawux的译文 http://wangxu.me/blog/p/320
系统监控
使用命令监控
例如:
echo stat | nc ip port
echo conf | nc ip port
或者 telnet ip port 输入 stat 、 conf 等。
常用指令如下:
conf :显示配置参数
cons :列出所有的连接
crst :重置连接 /session 的统计信息
dump : Lists the outstanding sessions and ephemeral nodes. Leader节点有效。
envi :输出环境变量
r uok : 是否runok.
Srst: 重置服务器统计信息。
Srvr:显示服务器信息。平均等待时间,运行的模式等。
Stat:显示服务状态。
wchs : Lists brief information on watches for the server. 显示多少个连接多少个被 watch 的 path 等。
wchc : Lists detailed information on watches for the server, by session 。 小心使用,可能影响性能。
wchp : Lists detailed information on watches for the server, by path 。 小心使用,可能影响性能。
mntr : 输出集群健康监测相关的信息。
使用jmx监控
修改 zkServer.sh, ZOOMAIN 部分的内容修改类似如下:
ZOOMAIN="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=$JMXLOCALONLY -Djava.rmi.server.hostname=10.10.249.197
-Dcom.sun.management.jmxremote.port=1911
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
org.apache.zookeeper.server.quorum.QuorumPeerMain"
启动后,可在远程启动 jconsole 通过 jmx 连接后监控。
问题处理
当文件损坏导致无法启动时,解决方法如下:
1. 启动其它能正常启动的 zookeeper, 并用 echo ruok| nc ip port 判断正常运行。
2. 删除 datadir/version-2 and datalogdir/version-2/ 目录。
3. 启动zookeeper 。
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com