zookeeper在生产环境中的配置(zookeeper3.6)
一,zookeeper中日志的配置
1,快照文件snapshot的目录:
dataDir=/data/zookeeper/data
存储快照文件snapshot的目录。默认情况下,事务日志也会存储在这里
所以我们建议指定dataLogDir
2,事务日志的目录
dataLogDir=/data/zookeeper/datalogs
事务日志输出目录,不建议和快照文件写在一个目录下
3,日志清理
ZooKeeper 默认不会自动清理 tx log,总有一天你会遇到磁盘空间耗尽。
可以开启自动清理机制
autopurge.snapRetainCount=300
autopurge.purgeInterval=72
#autopurge.purgeInterval=1
自动清理事务日志和快照文件的功能
这个参数是清理频率,单位是小时
默认值是0,表示不开启自动清理功能
#autopurge.snapRetainCount=3
自动清理事务日志和快照文件:保留的文件数量,默认值是保留3个
4,日志的手动清理命令
如果zookeeper集群访问量较高,清理会影响性能,可以手动清理
手动清理文件的例子:
#-n 3 表示保留3个文件
[root@zk1 bin]# /usr/local/soft/apache-zookeeper-3.6.0-bin/bin/zkCleanup.sh -n 3
也可以放到crond中按时间计划执行
说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,zookeeper中客户端相关配置
1,客户端连接 Zookeeper 服务器的端口
clientPort=2181
端口端和zookeeper连接时,zookeeper使用的端口,防火墙要放开此端口供客户端访问
2,客户端的并发连接数限制
maxClientCnxns=300
官方说明:
maxClientCnxns : (No Java system property) Limits the number of concurrent connections (at the socket level) that a single client,
identified by IP address,
may make to a single member of the ZooKeeper ensemble.
This is used to prevent certain classes of DoS attacks,
including file descriptor exhaustion.
The default is 60. Setting this to 0 entirely removes the limit on concurrent connections
对一个客户端的连接数限制,默认值是60
将它设置为0表示取消对并发连接的限制
这个值过低会在日志中出现:too many connections from host - max is 60
可以视实际连接的情况进行调整
3,关闭启动内置的管理器
admin.enableServer=false
避免启动内置的管理器,也避免占用8080端口
三,zookeeper集群的配置
1,tickTime
tickTime=2000
Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
tickTime以毫秒为单位
默认值:2000
保持默认值即可,无需修改
2,initLimit:LF初始通信时限
initLimit=10
集群中的follower服务器(F)与leader服务器(L)之间 初始连接 时能容忍的最多心跳数(tickTime的数量)
表示允许 follower连接 并同步到 leader 的初始化连接时间,它以 tickTime 的倍数来表示。
当超过设置倍数的 tickTime 时间,则连接失败
在设定的initLimit时间长度内,如果半数以上的跟随者不能完成同步,领导者便会放弃领导地位,进行另一次的领导选举。
如果zk集群环境数量很大则同步数据的时间会变长,这种情况下可以适当调大该参数。
默认为10
3,syncLimit:LF同步通信时限
syncLimit=5
集群中的follower服务器(F)与leader服务器(L)之间 请求和应答 之间能容忍的最多心跳数(tickTime的数量)
表示 leader 与 follower 之间发送消息,请求 和 应答 时间长度。
如果 follower 在设置的时间内不能与leader 进行通信,那么此 follower 将被集群丢弃
默认值是5
4,cluster成员列表
#cluster
server.1=172.18.1.1:2888:3888
server.2=172.18.1.2:2888:3888
server.3=172.18.1.3:2888:3888
server.A = B:C:D
A:zookeeper服务器的序号,即第几号服务器.
注意这个序号要与zookeeper的myid保持一致
B:服务器的 IP 地址
C:服务器跟随者follower与集群中的 Leader 服务器交换信息的端口
D:如果集群中的 Leader 服务器宕机,需要一个端口通信重新进行选举,选出一个新的 Leader。
这个端口就是用来做leader选举的端口
四,为zookeeper的运行配置JVM参数
vi zkEnv.sh
修改:SERVER_JVMFLAGS一行为:
export SERVER_JVMFLAGS="-Xmx2048m -Xms2048m"
说明:这两个参数的作用,
Xmx :程序运行期间最大可占用的内存大小,
如果程序运行需要占用更多的内存,超出了这个设置值,就会抛出 OutOfMemory异常
Xms : 程序启动时占用内存大小
此值可以设置与-Xmx相同,
以避免每次垃圾回收完成后JVM重新分配内存
应设置为多少?
Xmx 默认是物理内存的1/4,
最大建议不超过物理内存的3/4
所以如果没有其他应用同时运行的话,
可以设置为物理内存的1/2再观察调整
五,用jmx监控集群:
1,在zookeeper的conf目录下新建java.env
[root@zk1 conf]# vi java.env
内容:
JMXHOSTNAME="172.18.1.1"
JMXPORT=8899
说明:JMXHOSTNAME的值是当前服务器的ip
2,修改zkServer.sh
在
echo "ZooKeeper remote JMX log4j set to $JMXLOG4J" >&2
下面的
ZOOMAIN="-Dcom.sun.management.jmxremote
jmxrmote后面添加:
-Djava.rmi.server.hostname=$JMXHOSTNAME
3,添加完成后,重启服务:
[root@zk1 conf]# systemctl stop zookeeper
[root@zk1 conf]# systemctl start zookeeper
4,启动jconsole,
在远程进程处输入:
172.18.1.1:8899
(说明:这里输入的是远程进程的ip地址和端口)
然后点连接
进入后:
mbean->org.apache.ZooKeeperService
可以看到下面的服务:
例子如图:

六,查看zookeeper版本
[root@zk1 ~]# echo stat|nc 127.0.0.1 2181
Zookeeper version: 3.6.0--b4c89dc7f6083829e18fae6e446907ae0b1f22d7, built on 02/25/2020 14:38 GMT
zookeeper在生产环境中的配置(zookeeper3.6)的更多相关文章
- mysql8在生产环境中的配置
一,配置文件的位置 [root@yjweb ~]# ll /etc/my.cnf -rw-r--r-- 1 root root 935 Mar 11 16:52 /etc/my.cnf 说明:通常我们 ...
- ASP.Net Core 中使用Zookeeper搭建分布式环境中的配置中心系列一:使用Zookeeper.Net组件演示基本的操作
前言:马上要过年了,祝大家新年快乐!在过年回家前分享一篇关于Zookeeper的文章,我们都知道现在微服务盛行,大数据.分布式系统中经常会使用到Zookeeper,它是微服务.分布式系统中必不可少的分 ...
- 【原】Storm Local模式和生产环境中Topology运行配置
Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Storm配置 Guaranteeing Message Processing(消息处理 ...
- 生产环境中tomcat的配置
生产环境中要以daemon方式运行tomcat 通常在开发环境中,我们使用$CATALINA_HOME/bin/startup.sh来启动tomcat, 使用$CATALINA_HOME/bin/sh ...
- 一个完整配置例nginx.conf(生产环境中使用)
一个完整的nginx配置案例,生产环境 一个完整配置例(生产环境中使用) user nobody nobody; worker_processes 4; worker_rlimit_nofile 51 ...
- Kubernetes 在生产环境中常用架构
Kubernetes 在生产环境中常用架构 首先,我们来梳理下Kubernetes生产架构,其设计适用于绝大多数环境.如下图所示 在该架构中,我们可以将其分为四层,如下: Client层:即Kuber ...
- 理解Docker(6):若干企业生产环境中的容器网络方案
本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...
- 生产环境中CentOS7部署NET Core应用程序
NET Core应用程序部署至生产环境中(CentOS7) 阅读目录 环境说明 准备你的ASP.NET Core应用程序 安装CentOS7 安装.NET Core SDK for CentOS7. ...
- 生产环境中使用Docker Swarm的一些建议
译者按: 实践中会发现,生产环境中使用单个Docker节点是远远不够的,搭建Docker集群势在必行.然而,面对Kubernetes, Mesos以及Swarm等众多容器集群系统,我们该如何选择呢?它 ...
随机推荐
- JVM垃圾回收安全点Safe Point
GC安全点(Safepoint) 程序执行时并非在所有地方都能停顿下来开始GC,只有在特定的位置才能停顿下来开始GC,这些位置称为“安全点(Safepoint) ” Safe Point的选择很重要, ...
- Linux实战(17):Linux配置用户登陆时发送邮件到指定邮箱
参考其他文章,正好有这个需求,记一笔做个记录,以防丢失. 参考链接 #!/bin/bash yum install -y mailx cat >> /etc/mail.rc<< ...
- openstack (共享组件) 时间同步服务
云计算openstack共享组件——时间同步服务ntp(2) 一.标准时间讲解 地球分为东西十二个区域,共计 24 个时区 格林威治作为全球标准时间即 (GMT 时间 ),东时区以格林威治时区进行 ...
- RXJAVA之概述
RXjava是一个异步和基于事件的程序库.RXjava的核心理念是编程风格的的变化,从传统的命令式程序改变到函数响应式编程. RXjava的基本概念: Observable:发射源,即对象产生的地方. ...
- 5.CyclicBarrier-栅栏
- Java Web学习(四)http协议
文章更新时间:2020/07/24 一.概念 定义 HTTP:超文本传输协议,是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程. HTTP协议:用于定义客户端与 ...
- svn的使用学习
一:安装 1.svn安装包,语言包下载 地址:https://pan.baidu.com/s/1PFM7ya_hNJM-v979KgCpgA 提取码:mpxq 2.运行下载的TortoiseSVN程序 ...
- 获取NX装配结构信息
最近在做一个项目,需要获取NX装配结构信息,这里把代码分享给大家,希望对各位有帮助,注意以下几点: 1)代码获取了PART的属性.表达式等,因此一些细节可能需要您根据实际情况修改. 2)读写XML用的 ...
- 函数的arguments对象的使用和介绍
arguments对象用于函数,当不知道传递了多少个实参,就可以使用arguments对象进行存储传递过来的实参(这时不需要写形参). arguments是一个内置对象,也是一个伪数组,我们可以按照数 ...
- 一款Java开源的Springboot即时通讯 IM,附源码
# 开篇 电商平台最不能缺的就是即时通讯,例如通知类下发,客服聊天等.今天,就来给大家分享一个开源的即时通讯系统.如对文章不感兴趣可直接跳至文章末尾,有获取源码链接的方法. 但文章内容是需要你简单的过 ...