zookeeper安装以及配置和注意事项

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:

1,安装 

    

1
2
3
4
wget 
tar  zxvf zookeeper-3.4.9. tar .gz 
cd  zookeeper-3.4.9 /conf
cp  zoo_sample.cfg zoo.cfg

    修改zoo.cfg配置文件

    如下

1
2
3
4
5
6
7
8
9
10
11
12
tickTime=2000
initLimit=10
syncLimit=5
dataDir= /opt/zookeeper/zookeeper-3 .4.9 /data
dataLogDir= /opt/zookeeper/zookeeper-3 .4.9 /logs
clientPort=2181
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
server.1=zk1:2888:3888:observer
server.2=zk2:2888:3888 
server.3=zk3:2888:3888
server.4=zk4:2888:3888

    编辑环境变量vim /etc/profile

 

1
2
3
export  ZOOKEEPER_HOME= /opt/zookeeper/zookeeper-3 .4.9/
export  PATH=$ZOOKEEPER_HOME /bin :$PATH
export  PATH

    添加myid 文件

    在dataDir目录下,添加myid,文件内容要与配置文件中server.1的数字一样,仅仅是数字

 安装java8

1
yum  install  java1.8

    启动zookeeper,并查看状态

1
2
zkServer.sh start
zkServer.sh status

2,集群配置注意事项

    一般来讲,3到5个zookeeper投票者(leader,follower),必须是单数,因为数量过半才能保证正常运行,公式N=2F+1  其中F是可以容错的数量

    配置observer(观察者)(跟follower没什么区别,只是不参与投票),为了减少选举过程中和资源,一般客户端都是连接observer,

    配置如下:

    要指定相关的机器是observer,并且在集群配置里注明   

1
2
peerType=observer
server.1=zk1:2888:3888:observer

3,内存

zk在读写数据的时候,不要用swap交换分区,因为zookeeper都是把数据放在内存中,如果发生和磁盘交换的话,性能会大打折扣,修改启动脚本,配置jvm,配置原则物理内存的80%

    vim zkServer.sh

    

case $1 in

start)

    echo  -n "Starting zookeeper ... "

    if [ -f "$ZOOPIDFILE" ]; then

      if kill -0 `cat "$ZOOPIDFILE"` > /dev/null 2>&1; then

         echo $command already running as process `cat "$ZOOPIDFILE"`.

         exit 0

      fi

    fi

    nohup "$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \

    -cp "$CLASSPATH" $JVMFLAGS -Xmx512m -Xms512m $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &

4,磁盘

zk 对磁盘要求比较高,因为会做磁盘镜像备份snapshot到磁盘,第一要用高速磁盘,第二要定期处理,虽然配置里有自动清理,但是会遇到zk使用高峰,建议自己写crontab来定期清理

1
2
autopurge.snapRetainCount=3 #保留最新的3个镜像数据
autopurge.purgeInterval=1 #每隔1小时清理一次

5,最后说下投票机制

    当有节点宕机了,所有服务都将进入选举模式,先断掉连接,然后开始选举,过程是server1挂了,server2 server3进入选举,每个server都会先投自己,选票结构(id,zxid),那么server2(2,0),server3(3,0),然后再把自己的选票发给所有的server,当每个server收到别人发来的选票会进行对比,对比顺序是先从zxid 开始(zxid是代表了数据的新旧,比如3>2,那么3就是最新的),如果zxid相同,在对比id,这是server2收到来自server3的选票(3,0),zxid相同,但是id比自己大,这是server2会更新自己的选票server2(3,0),再发给所有的server,进入下一轮选举,这是server3(3,0),没变化,所以不用更新,server2(3,0),那么这时server3变成leader,如果参与投票的机器比较多,那么就按照这个机制进行多轮投票


运维经验,这里有个问题,如果在zk宕机选举过程中,clint不断的尝试重新,会导致zk进入死循环,因为选举的第一步就是先断掉所有连接,所以,客户端要用调用的方式,而不是无限的重新连接,或者客户端只连接observer(观察者),因为observer不参与投票,但是leader和follower在正常的投票,一旦新的leader被选出来,那么就不会有无线重新连接的情况出现










本文转自wks9751CTO博客,原文链接:http://blog.51cto.com/wks97/1923341 ,如需转载请自行联系原作者






相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
2月前
|
Docker 容器
在docker中安装zookeeper,并且阿里云服务器配置
在docker中安装zookeeper,并且阿里云服务器配置
201 1
|
2月前
|
Java Linux Spring
Zookeeper实现分布式服务配置中心
Zookeeper实现分布式服务配置中心
48 0
|
2月前
|
存储 安全 Nacos
使用KMS为MSE-Nacos敏感配置加密的最佳实践
本文主要介绍通过KMS密钥管理服务产生的密钥对敏感的AK等数据进行加密之后可以有效解决泄漏带来的安全风险问题,其次通过KMS凭据托管的能力直接将MSE的主AK进行有效管理,保障全链路无AK的业务体验,真正做到安全、可控。
92262 3
|
2月前
|
运维 监控 安全
MSE Nacos 配置变更审计平台使用指南
MSE Nacos 配置变更审计平台使用指南
|
3月前
|
缓存 监控 Nacos
MSE微服务引擎配置问题之配置报错如何解决
MSE(MicroService Engine)微服务引擎是阿里云提供的一种微服务治理平台,它通过提供服务注册、发现、配置管理等功能来支撑微服务架构的稳定运行;本合集旨在梳理MSE微服务引擎的核心特性、部署流程,以及实践中可能遇到的问题和相应的解决方案,以助力用户优化微服务架构的实施和管理。
|
3月前
|
存储 Java Linux
linux安装Zookeeper的详细步骤
linux安装Zookeeper的详细步骤
129 5
|
3月前
|
消息中间件 Java Kafka
使用Java编写代码安装Kafka及启动Zookeeper和Kafka
如何使用Java编写代码安装Kafka及启动Zookeeper和Kafka?其中包括安装前准备、修改配置文件、创建日志目录和数据目录等步骤,请提供详细实现过程。
43 0
|
3月前
|
存储 安全 Nacos
MSE Nacos,解决敏感配置的安全隐患
本文向大家介绍,MSE Nacos 是如何解决敏感配置的安全隐患,并提供使用 MSE Nacos 加解密敏感配置的最佳实践。
|
3月前
|
Nacos
MSE nacos读取不到nacos配置
MSE nacos读取不到nacos配置
27 0
|
4月前
|
数据库连接
zookeeper应用场景一:实现配置中心动态更新配置
zookeeper应用场景一:实现配置中心动态更新配置
38 0