mac安装zookeeper伪集群
2015-10-22 11:53
316 查看
目录
一、 配置
二、 启动zookeeper伪集群的所有服务器
三、 接入客户端
四、编写启动脚本
在一台机器上部署3个server,在指定文件夹下建立一个文件夹zookeeperLab,在zookeeperLab文件夹里建立三个文件夹server1, server2, server3,然后每个文件夹里面解压一个zookeeper下载包,并且还建立几个文件夹,总体结构如下:
data,dataLog, logs,zookeeper-3.4.6
1. 进入data目录,创建一个名为myid的文件,里面写入一个数字,比如该目录为server1,那么就写一个1,server2对应的myid文件就写入2,server3对应的myid文件就写入3。
2. 进入zookeeper-3.4.6/conf目录,将zoo_sample.cfg文件copy改为zoo.cfg,打开zoo.cfg,内容如下:
注意:
clientPort这个端口如果你是在1台机器上部署多个server,那么每台机器都要不同的clientPort,比如server1是2181,server2是2182,server3是2183,dataDir和dataLogDir也需要区分下。
最后几行需要注意就是server.X这个数字就是对应data/myid中的数字。你在3个server的myid文件中分别写入了1,2,3,那么每个server中的zoo.cfg都配置server.1,server.2,server3就OK了。因为在同一台机器上,后面连着的2个端口3个server都不要一样,否则端口冲突,其中第一个端口用来集群成员的信息交换,第二个端口是在leader挂掉时专门用来进行选举leader所用。
server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
启动完成后,查看服务器状态
一、 配置
二、 启动zookeeper伪集群的所有服务器
三、 接入客户端
四、编写启动脚本
一、 配置
zookeeper下载地址:http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/在一台机器上部署3个server,在指定文件夹下建立一个文件夹zookeeperLab,在zookeeperLab文件夹里建立三个文件夹server1, server2, server3,然后每个文件夹里面解压一个zookeeper下载包,并且还建立几个文件夹,总体结构如下:
data,dataLog, logs,zookeeper-3.4.6
1. 进入data目录,创建一个名为myid的文件,里面写入一个数字,比如该目录为server1,那么就写一个1,server2对应的myid文件就写入2,server3对应的myid文件就写入3。
2. 进入zookeeper-3.4.6/conf目录,将zoo_sample.cfg文件copy改为zoo.cfg,打开zoo.cfg,内容如下:
conf cat zoo.cfg # The number of milliseconds of each tick #控制心跳和超时,默认情况下最小的会话超时时间为两倍的 tickTime。 tickTime=2000 # The number of ticks that the initial # synchronization phase can take #initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒 initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement #syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒 syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/Users/duwei/software/zookeeperLab/server1/data dataLogDir=/Users/duwei/software/zookeeperLab/server1/dataLog # the port at which the clients will connect #客户端连接端口 clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1 server.1=127.0.0.1:2888:3888 server.2=127.0.0.1:2889:3889 server.3=127.0.0.1:2890:3890
注意:
clientPort这个端口如果你是在1台机器上部署多个server,那么每台机器都要不同的clientPort,比如server1是2181,server2是2182,server3是2183,dataDir和dataLogDir也需要区分下。
最后几行需要注意就是server.X这个数字就是对应data/myid中的数字。你在3个server的myid文件中分别写入了1,2,3,那么每个server中的zoo.cfg都配置server.1,server.2,server3就OK了。因为在同一台机器上,后面连着的2个端口3个server都不要一样,否则端口冲突,其中第一个端口用来集群成员的信息交换,第二个端口是在leader挂掉时专门用来进行选举leader所用。
server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
二、 启动zookeeper伪集群的所有服务器
分别进入三个服务器的zookeeper-3.4.6/bin目录下,启动服务sh zkServer.sh start
启动完成后,查看服务器状态
sh zkServer.sh status
三、 接入客户端
进入任意一个服务器的zookeeper/bin目录下,启动一个客户端,接入服务。./zkCli.sh –server localhost:2181
四、编写启动脚本
vi zkCluster.sh #!/bin/sh zkpath=/Users/duwei/software/zookeeperLab returnValue=0 cd $zkpath pid=`ps -ef |grep -v "grep"|grep "zookeeperLab/server" |awk '{print $2}'` start(){ sh ./server1/zookeeper-3.4.6/bin/zkServer.sh start sh ./server2/zookeeper-3.4.6/bin/zkServer.sh start sh ./server3/zookeeper-3.4.6/bin/zkServer.sh start } stop(){ kill -9 ${pid} } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; hup) hup ;; *) printf 'Usage: %s {start|stop|restart}\n' exit 1 ;; esac exit "$returnValue"
相关文章推荐
- iOS提交应用至APP Store流程
- 使用级数理论解释龟兔赛跑问题
- Java位运算的使用场景
- pdf格式转换成html的转换方法
- ORACLE SEQUENCE
- python的easy_install安装指南
- iOS property属性
- Unity3D系列2:Input.GetButtonDown没有正确响应
- 圆形图片
- c语言学习之基础知识点介绍(一):输出语句和变量简单介绍
- Go 基础
- Spring使用SpEL表达式装配Bean
- 五大黄金法则祝你快速升职
- 详解tomcat线程池原理及参数释义
- MongoDB服务端JavaScript脚本
- MongoDB服务端JavaScript脚本
- Uva 11361 Investigating Div-Sum Property(数位DP)
- Java二维数组
- TCP的拥塞控制
- iOS获取手机型号