设为首页 收藏本站
查看: 733|回复: 0

[经验分享] zookeeper集群搭建及优化

[复制链接]

尚未签到

发表于 2019-1-8 08:47:54 | 显示全部楼层 |阅读模式
  zookeeper配置:三台集群。
  zookeeper二进制包安装方法:
tar -xf zookeeper-3.4.6.tar.gz -C /usr/local
cd /usr/local
mv zookeeper-3.4.6 zookeeper
  三台:
153:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper
clientPort=2181
server.1=192.168.1.153:2888:3888
server.2=192.168.1.154:2888:3888
server.3=192.168.1.155:2888:3888
forceSync=yes
fsync.warningthresholdms=50
globalOutstandingLimit=100000
preAllocSize=64M
snapCount=100000
skipACL=yes
myid:这个需要手动创建
mkdir -p /var/zookeeper
cd /var/zookeeper
echo 1 myid
cat myid
1
  154:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper
clientPort=2181
server.1=192.168.1.153:2888:3888
server.2=192.168.1.154:2888:3888
server.3=192.168.1.155:2888:3888
forceSync=yes
fsync.warningthresholdms=50
globalOutstandingLimit=100000
preAllocSize=64M
snapCount=100000
skipACL=yes
myid:这个需要手动创建
mkdir -p /var/zookeeper
cd /var/zookeeper
echo 2 myid
cat myid
2
  155:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper
clientPort=2181
server.1=192.168.1.153:2888:3888
server.2=192.168.1.154:2888:3888
server.3=192.168.1.155:2888:3888
forceSync=yes
fsync.warningthresholdms=50
globalOutstandingLimit=100000
preAllocSize=64M
snapCount=100000
skipACL=yes
myid:这个需要手动创建
mkdir -p /var/zookeeper  创建数据目录
cd /var/zookeeper
echo 3 myid
cat myid
3
  设置zookeeper的java虚拟机使用内存:
vim /usr/local/zookeeper/conf/java.env
export JVMFLAGS="-Xms2048m -Xmx2048m $JVMFLAGS"   此处的内存根据实际的内存做调整。
  zookeeper服务端命令:


  • 启动ZK服务:       zkServer.sh start
  • 查看ZK服务状态:   zkServer.sh status
  • 停止ZK服务:       zkServer.sh stop
  • 重启ZK服务:       zkServer.sh restart
  以上命令快捷使用方式:
echo 'PATH=/usr/local/zookeeper/bin:$PATH' > /etc/profile.d/zookeeper.sh
source /etc/profile.d/zookeeper.sh   
说明:其他服务也可以使用类似方案操作。
  zookeeper客户端命令:


  • 显示根目录下、文件: ls / 使用 ls 命令来查看当前 ZooKeeper 中所包含的内容
  • 显示根目录下、文件: ls2 / 查看当前节点数据并能看到更新次数等数据
  • 创建文件,并设置初始内容: create /zk "test" 创建一个新的 znode节点“ zk ”以及与它关联的字符串
  • 获取文件内容: get /zk 确认 znode 是否包含我们所创建的字符串
  • 修改文件内容: set /zk "zkbak" 对 zk 所关联的字符串进行设置
  • 删除文件: delete /zk 将刚才创建的 znode 删除
  • 退出客户端: quit
  •   帮助命令: help
      ZooKeeper 支持某些特定的四字命令字母与其的交互。它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息。用户在客户端可以通过 telnet 或 nc 向 ZooKeeper 提交相应的命令

  • 可以通过命令:echo stat|nc 127.0.0.1 2181 来查看哪个节点被选择作为follower或者leader
  • 使用echo ruok|nc 127.0.0.1 2181 测试是否启动了该Server,若回复imok表示已经启动。
  • echo dump| nc 127.0.0.1 2181 ,列出未经处理的会话和临时节点。
  • echo kill | nc 127.0.0.1 2181 ,关掉server
  • echo conf | nc 127.0.0.1 2181 ,输出相关服务配置的详细信息。
  • echo cons | nc 127.0.0.1 2181 ,列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。
  • echo envi |nc 127.0.0.1 2181 ,输出关于服务环境的详细信息(区别于 conf 命令)。
  • echo reqs | nc 127.0.0.1 2181 ,列出未经处理的请求。
  • echo wchs | nc 127.0.0.1 2181 ,列出服务器 watch 的详细信息。
  • echo wchc | nc 127.0.0.1 2181 ,通过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表。
  • echo wchp | nc 127.0.0.1 2181 ,通过路径列出服务器 watch 的详细信息。它输出一个与 session 相
  zookeeper服务优化
  1.快照文件和事务日志文件分别挂在不同磁盘。zoo.cfg文件中,dataDir是存放快照数据的,dataLogDir是存放事务日志的。zookeeper更新操作过程:先写事务日志,再写内存,周期性落到磁盘(刷新内存到快照文件)。事务日志的对写请求的性能影响很大,保证dataLogDir所在磁盘性能良好、没有竞争者。


  •   默认jvm没有配置Xmx、Xms等信息,可以在conf目录下创建java.env文件(内存堆空间一定要小于机器内存,避免使用swap)
    export JVMFLAGS="-Xms2048m -Xmx2048m $JVMFLAGS"

  • 按天出zookeeper日志,避免zookeeper.out文件过大。
  zkEnv.sh文件日志输出方式从CONSOLE改为ROLLINGFILE;
  if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then

ZOO_LOG4J_PROP="INFO,CONSOLE"

ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
  fi
  conf/log4j.properties设置为按天生成文件DailyRollingFileAppender
  #zookeeper.root.logger=INFO, CONSOLE
zookeeper.root.logger=INFO, ROLLINGFIL
  log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ROLLINGFILE.Threshold=${zookeeper.log.threshold}
log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/${zookeeper.log.file}
log4j.appender.ROLLINGFILE.DatePattern='.'yyyy-MM-dd

Max log file size of 10MB
  #log4j.appender.ROLLINGFILE.MaxFileSize=10MB


  •   zoo.cfg文件中skipACL=yes,忽略ACL验证,可以减少权限验证的相关操作,提升一点性能。

  •   zoo.cfg文件中forceSync=no,这个对写请求的性能提升很有帮助,是指每次写请求的数据都要从pagecache中固化到磁盘上,才算是写成功返回。当写请求数量到达一定程度的时候,后续写请求会等待前面写请求的forceSync操作,造成一定延时。如果追求低延时的写请求,配置forceSync=no,数据写到pagecache后就返回。但是机器断电的时候,pagecache中的数据有可能丢失。
    默认为forceSync=yes,为yes可以设置fsync.warningthresholdms=50 如果数据固化到磁盘的操作fsync超过50ms的时候,将会在zookeeper.out中输出一条warn日志(forceSync=yes有效)。

  •   globalOutstandingLimit=100000 客户端连接过多,限制客户端请求,避免OOM

  •   zoo.cfg文件中preAllocSize=64M 日志文件预分配大小; snapCount=100,000 多少次写事务,生成一个快照如果快照生成频繁可适当调大该参数。
    一般zk的应用提倡读大于写,性能较好(10:1),存储元数据用来协调分布式数据最终一致。写过于频繁使用缓存更好

  • 日志文件自动清除(如果追求性能,可手动清除)
    autopurge.snapRetainCount=3 # The number of snapshots to retain in dataDir
    autopurge.purgeInterval=24 # Purge task interval in hours Set to "0" to disable auto purge feature




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-660567-1-1.html 上篇帖子: Mesosphere Cluster on CentOS7 (zookeeper+mesos+marathon) 下篇帖子: centos安装zookeeper集群步骤
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表