zookeeper的简单介绍及安装配置

1.zookeeper应用场景

数据发布与订阅(配置中心)
负载均衡
命名服务
分布式通知/协调
集群管理与Master选举
分布式锁
分布式队列

2.zookeeper问题排查大致方向

tickTime 
initLimit 
syncLimit 
磁盘
网络

3.zookeeper状态

standalone
follower
leader
observer    

4.Server自检恢复

Daemontools(http://cr.yp.to/daemontools.html) 
SMF(http://en.wikipedia.org/wiki/Service_Management_Facility)

5.下载安装zookeeper

yum install nc
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
tar -zxvf zookeeper-3.4.10.tar.gz
cp zoo_sample.cfg    zoo.cfg (zoo.cfg添加参数 4lw.commands.whitelist=*) 避免DOS攻击4lw.commands.whitelist=stat, ruok, conf, isro

./zkServer.sh start
./zkServer.sh status
tail -f zookeeper.out

6.zookeeper常用命令行

./zkCli.sh -server 127.0.0.1:2181
ls /lackRoot
create /zk "data" 创建节点
create -e 创建临时节点
create -s 创建顺序节点
rmr 递归删除
history 
sync 强制同步
set /merryyou test-merryyou 1  1是版本号
get /zk  获取节点
set /zk "1234"
delete /zk
quit
help 很简单的文档
stat 
ls2  (ls stat)
stat /zk watch 设置watch事件
get /zk watch 设置watch事件
getAcl /zk
addauth digest username:pwd

echo conf|nc 127.0.0.1 2181
echo cons|nc 127.0.0.1 2181
echo dump|nc 127.0.0.1 2181
echo envi|nc 127.0.0.1 2181
echo stat|nc 127.0.0.1 2181  节点状态
echo ruok|nc 127.0.0.1 2181  imok表示启动成功
echo reqs|nc 127.0.0.1 2181
echo wchs|nc 127.0.0.7 2181
echo wchc|nc 127.0.0.7 2181
echo wchp|nc 127.0.0.7 2181
echo mntr|nc 127.0.0.1 2181
echo kill|nc 127.0.0.1 2181
echo srst|nc 127.0.0.1 2181
echo srvr|nc 127.0.0.1 2181

http://zookeeper.apache.org/doc/r3.4.11/zookeeperAdmin.html#sc_zkCommands        

7.ACL权限控制 [scheme?permissions]

create read write delete admin (crwda) 5种操作权限
world auth digest ip 4种认证方式

setAcl /zk world:anyone:crwa    (world:anyone:[permissions])
setAcl /zk auth:username:pwd:cdrwa  ( auth:userpassword:[permissions])
setAcl /zk ip:192.168.0.68:cdrwa(ip:192.168.77.130:[permissions])
setAcl /zk digest:test:V28q/NynI4JI3Rk54h0r8O5kMug=:cdra  (digest:username:BASE64(SHA1(password)):[permissions])

8.添加超级管理员(supper:admin)

nohup "$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}"  
后面追加"-Dzookeeper.DigestAuthenticationProvider.superDigest=super:xQJmxLMiHGwaqBvst5y6rkB6HQs="

9.配置

tickTime:基本时间单位, 毫秒值
dataDir: 数据目录
dataLogDir: log目录
clientPort: 监听client连接的端口号
minSessionTimeout
maxClientCnxns 
maxSessionTimeout
syncEnabled
electionAlg
cnxTimeout
clientPortAddress 服务器监听客户端连接的地址
initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍tickTime
syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime
server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口. 由于配置的是伪集群模式

server.1=IP:2888:3888
server.2=IP:2888:3888
server.3=IP:2888:3888
/tmp/zookeeper   创建myid对应X

10.动态配置

dynamicConfigFile=/zookeeper/conf/zoo_replicated1.cfg.dynamic
vim zoo_replicated1.cfg.dynamic
server.1=125.23.63.23:2780:2783:participant;2791
server.2=125.23.63.24:2781:2784:participant;2792
server.3=125.23.63.25:2782:2785:participant;2793

11.优化zookeeper

1.dataDir(数据日志)和dataLogDir(事务日志)分离,datalogDir磁盘要好
2.设置JVM配置(文件conf/java.env)   
    export JVMFLAGS="-Xms2048m -Xmx2048m $JVMFLAGS" 
3.避免zookeeper.out日志文件过大,改为按天打印日志
    3.1 zkEnv.sh日志输出从CONSOLE改ROLLINGFILE (
        ZOO_LOG4J_PROP="INFO,CONSOLE")
    3.2 conf/log4j.properties日志按天生成DailyRollingFileAppender(注释日志大小)
        zookeeper.root.logger=INFO, ROLLINGFIL				log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender
        log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/${zookeeper.log.file}
        log4j.appender.ROLLINGFILE.DatePattern='.'yyyy-MM-dd'.log'
4.zoo.cfg
    skipACL=yes   
    forceSync=no  数据有可能丢失

    forceSync=yes
    fsync.warningthresholdms=50
    
    globalOutstandingLimit=1000 限制客户端请求 (可能OOM)
    preAllocSize=64M 日志文件预分配大小
    snapCount=100,000 多少次写事务,生成一个快照如果快照生成频繁可适当调大该参数
    leaderServes=no leader设置不接受客户端连接,让它专注于集群的通信、选举等操作 
5.配置观察者(zoo.cfg)
    观察者机器 peerType=observer
    每台机器 server.x=192.168.123.102:2888:2888:observer
    登录观察者机器,查看status
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值