一,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)的更多相关文章

  1. mysql8在生产环境中的配置

    一,配置文件的位置 [root@yjweb ~]# ll /etc/my.cnf -rw-r--r-- 1 root root 935 Mar 11 16:52 /etc/my.cnf 说明:通常我们 ...

  2. ASP.Net Core 中使用Zookeeper搭建分布式环境中的配置中心系列一:使用Zookeeper.Net组件演示基本的操作

    前言:马上要过年了,祝大家新年快乐!在过年回家前分享一篇关于Zookeeper的文章,我们都知道现在微服务盛行,大数据.分布式系统中经常会使用到Zookeeper,它是微服务.分布式系统中必不可少的分 ...

  3. 【原】Storm Local模式和生产环境中Topology运行配置

    Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Storm配置 Guaranteeing Message Processing(消息处理 ...

  4. 生产环境中tomcat的配置

    生产环境中要以daemon方式运行tomcat 通常在开发环境中,我们使用$CATALINA_HOME/bin/startup.sh来启动tomcat, 使用$CATALINA_HOME/bin/sh ...

  5. 一个完整配置例nginx.conf(生产环境中使用)

    一个完整的nginx配置案例,生产环境 一个完整配置例(生产环境中使用) user nobody nobody; worker_processes 4; worker_rlimit_nofile 51 ...

  6. Kubernetes 在生产环境中常用架构

    Kubernetes 在生产环境中常用架构 首先,我们来梳理下Kubernetes生产架构,其设计适用于绝大多数环境.如下图所示 在该架构中,我们可以将其分为四层,如下: Client层:即Kuber ...

  7. 理解Docker(6):若干企业生产环境中的容器网络方案

    本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  8. 生产环境中CentOS7部署NET Core应用程序

    NET Core应用程序部署至生产环境中(CentOS7) 阅读目录 环境说明 准备你的ASP.NET Core应用程序 安装CentOS7 安装.NET Core SDK for CentOS7. ...

  9. 生产环境中使用Docker Swarm的一些建议

    译者按: 实践中会发现,生产环境中使用单个Docker节点是远远不够的,搭建Docker集群势在必行.然而,面对Kubernetes, Mesos以及Swarm等众多容器集群系统,我们该如何选择呢?它 ...

随机推荐

  1. oracle之三手工完全恢复

    手工完全恢复 3.1 完全恢复:通过备份.归档日志.current log ,将database恢复到failure 前的最后一次commit状态. 3.2 完全恢复的步骤 1)restore: OS ...

  2. Oracle命令类别

    Oracle命令类别: 数据操纵语言:DML: select; insert; delete; update; merge. 数据定义语言:DDL: create; alter; drop; trun ...

  3. Linux下find与exec的联手干大事

    在Linux下工作,find命令绝对是一个非常高频的命令.我们可以用find命令来找到符合某些关键词的文件,找到某些日期的文件,也可以设定一些正则表达式,找到一系列满足该条件的文件. 但是,如果只有一 ...

  4. JavaScript 异步编程

    博客地址:https://ainyi.com/96 众所周知,JavaScript 是单线程的,但异步在 js 中很常见,那么简单来介绍一下异步编程 同步编程和异步编程 同步编程,计算机一行一行按顺序 ...

  5. Redis单机安装以及集群搭建

    今天主要来看一下Redis的安装以及集群搭建(我也是第一次搭建). 环境:CentOS 7.1,redis-5.0.7 一.单机安装 1.将Redis安装包放置服务器并解压 2.进入redis安装目录 ...

  6. 微信小程序直播接入

    申请开通小程序直播 1.申请小程序直播有以下几个硬性指标: 1. 满足小程序18个开放类目 2. 主体下小程序近半年没有严重违规 3. 小程序近90天内有过支付行为 4. 主体下公众号累计粉丝数大于1 ...

  7. dpwwn-02靶机渗透

    dpwwn-02靶机渗透 将两台机器都配置为net模式. 进行一下内网扫描: 发现主机10.10.10.10,进行端口扫描. 发现有80,111,443,2049等端口开放,443值得注意. 访问网站 ...

  8. 第三周:java面向对象部分总结(2)

    <!--此处接上周--> 3.相关接口 对对象的排序,可以通过以下两种方法: 1.实现Comparable接口,重写compareTo方法: 2.Comparator<>比较器 ...

  9. 晶振(crystal)与谐振荡器(oscillator)

    参考: 1. https://wenku.baidu.com/view/e609af62f5335a8102d2202f.html 2. 晶体振荡器也分为无源晶振和有源晶振两种类型.无源晶振与有源晶振 ...

  10. mycat ER分片

    有一类业务,例如订单(ORDER)跟订单明细表(ORDER_DETAIL),明细表会依赖于订单,就是该会存在表的主从关系,这类似业务的切分可以抽象出合适的切分规则,比如根据用户ID切分,其它相关的表都 ...