zookeeper单机和集群搭建

zookeeper单机和集群搭建


必备软件
ZooKeeper在Java中运行,1.7或更高版本(JDK 7或更高版本,FreeBSD支持需要openjdk7)。它作为ZooKeeper服务器的集合运行。三个ZooKeeper服务器是整体的最小建议大小,我们还建议它们在不同的机器上运行。在Yahoo!,ZooKeeper通常部署在专用的RHEL盒子上,具有双核处理器,2GB RAM和80GB IDE硬盘。

对于可靠的ZooKeeper服务,最好使用奇数个机器。例如,使用四台机器,ZooKeeper只能处理单台机器的故障; 如果两台机器出现故障,其余两台机器不会占多数。但是,有了五台机器,ZooKeeper可以处理两台机器的故障。


单机模式(Standalone Operation):

1、首先去官网下载zookeeper的包 zookeeper-3.3.5.tar.gz.
2、tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/local/
3、cp zoo_sample.cfg zoo.cfg
zoo.cfg文件内容:

# tickTime:ZooKeeper使用的基本时间单位(以毫秒为单位)。它用于做心跳,最小会话超时将是tickTime的两倍。
tickTime=2000
# dataDir:存储内存数据库快照的位置,除非另有说明,否则为数据库更新的事务日志。
dataDir=/Users/zookeeper/data
# clientPort:侦听客户端连接的端口
clientPort=2881

4、启动ZooKeeper:
bin/zkServer.sh start
5、连接到ZooKeeper
bin/zkCli.sh -server 127.0.0.1:2181


复制模式(Replicated ZooKeeper)

复制模式,至少需要三台服务器,强烈建议您使用奇数个服务器。如果您只有两台服务器,那么您处于这样的情况:如果其中一台服务器出现故障,则没有足够的机器来构成多数仲裁。两台服务器本质上不如单一服务器稳定,因为有两个单点故障。

创建必要的目录及文件

mkdir -p /var/lib/zookeeper/data_1
mkdir -p /var/lib/zookeeper/data_2
mkdir -p /var/lib/zookeeper/data_3

mkdir -p /var/lib/zookeeper/logs_1
mkdir -p /var/lib/zookeeper/logs_2
mkdir -p /var/lib/zookeeper/logs_3

echo "1" > /var/lib/zookeeper/data_1/myid
echo "2" > /var/lib/zookeeper/data_2/myid
echo "3" > /var/lib/zookeeper/data_3/myid

server1 zoo1.cfg

tickTime=2000
dataDir=/var/lib/zookeeper/data_1
dataLogDir=/var/lib/zookeeper/logs_1
clientPort=2181
initLimit=5 # 暂停ZooKeeper用于限制仲裁中ZooKeeper服务器连接到领导者的时间长度
syncLimit=2 # 限制服务器与领导者的过期时间
server.1=zoo1:2888:3888 # server.x中的x和myid中的一致;第一个端口leader和learner之间同步数据;第二个端口用于选举过程中的投票通信
server.2=zoo2:2889:3889
server.3=zoo3:2890:3890

server2 zoo2.cfg

tickTime=2000
dataDir=/var/lib/zookeeper/data_2
dataLogDir=/var/lib/zookeeper/logs_2
clientPort=2182
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888
server.2=zoo2:2889:3889
server.3=zoo3:2890:3890

server3 zoo3.cfg

tickTime=2000
dataDir=/var/lib/zookeeper/data_3
dataLogDir=/var/lib/zookeeper/logs_3
clientPort=2183
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888
server.2=zoo2:2889:3889
server.3=zoo3:2890:3890

启动集群

[root@VM_0_11_centos zookeeper-3.4.12]# bin/zkServer.sh start conf/zoo1.cfg
ZooKeeper JMX enabled by default
Using config: conf/zoo1.cfg
Starting zookeeper ... STARTED
[root@VM_0_11_centos zookeeper-3.4.12]# bin/zkServer.sh start conf/zoo2.cfg 
ZooKeeper JMX enabled by default
Using config: conf/zoo2.cfg
Starting zookeeper ... STARTED
[root@VM_0_11_centos zookeeper-3.4.12]# bin/zkServer.sh start conf/zoo3.cfg 
ZooKeeper JMX enabled by default
Using config: conf/zoo3.cfg
Starting zookeeper ... STARTED

验证

[root@VM_0_11_centos zookeeper-3.4.12]# bin/zkServer.sh status conf/zoo1.cfg
ZooKeeper JMX enabled by default
Using config: conf/zoo1.cfg
Mode: follower
[root@VM_0_11_centos zookeeper-3.4.12]# bin/zkServer.sh status conf/zoo2.cfg
ZooKeeper JMX enabled by default
Using config: conf/zoo2.cfg
Mode: leader
[root@VM_0_11_centos zookeeper-3.4.12]# bin/zkServer.sh status conf/zoo3.cfg
ZooKeeper JMX enabled by default
Using config: conf/zoo3.cfg
Mode: follower

In this example, the timeout for initLimit is 5 ticks at 2000 milleseconds a tick, or 10 seconds.

server.X 的条目 构成ZooKeeper服务的服务器组。When the server starts up, it knows which server it is by looking for the file myid in the data directory. That file has the contains the server number, in ASCII.

server.1=zoo1:2888:3888。Peers使用2888端口连接其他的peers。这种连接是必要的,以便peers可以进行通信,例如,就更新的顺序达成一致。更具体地说,ZooKeeper服务器使用此端口将关注者连接到领导者。当新的领导者出现时,跟随者使用此端口打开与领导者的TCP连接。由于默认的领导者选举也使用TCP,我们目前需要另一个端口进行领导者选举。这是服务器条目中的第二个端口3888的用处。

(注:如果要在一台计算机上测试多个服务器,请将servername指定为localhost,并为该服务器中的每个server.X 指定唯一的仲裁和领导者选举端口(2888:3888, 2889:3889, 2890:3890)配置文件,clientPort 需要指定为不同的端口,dataDir指定不同的目录。

请注意,在一台计算机上设置多台服务器不会产生任何冗余。如果发生导致机器死亡的事情,所有zookeeper服务器都将脱机。完全冗余要求每台服务器都有自己的机器。它必须是完全独立的物理服务器。同一物理主机上的多个虚拟机仍然容易受到该主机的完全故障的影响。



server1

tickTime=2000
initLimit=5
syncLimit=2
dataDir=/var/lib/zookeeper/data_1
dataLogDir=/var/lib/zookeeper/logs_1
peerType=observer
clientPort=2181
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
server.4=localhost:2891:3891:observer

server2

tickTime=2000
initLimit=5
syncLimit=2
dataDir=/var/lib/zookeeper/data_2
dataLogDir=/var/lib/zookeeper/logs_2
peerType=observer
clientPort=2182
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
server.4=localhost:2891:3891:observer

server3

tickTime=2000
initLimit=5
syncLimit=2
dataDir=/var/lib/zookeeper/data_3
dataLogDir=/var/lib/zookeeper/logs_3
peerType=observer
clientPort=2183
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
server.4=localhost:2891:3891:observer

server4

tickTime=2000
initLimit=5
syncLimit=2
dataDir=/var/lib/zookeeper/data_4
dataLogDir=/var/lib/zookeeper/logs_4
peerType=observer
clientPort=2184
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
server.4=localhost:2891:3891:observer
[root@VM_0_11_centos zookeeper-3.4.12]# bin/zkServer.sh status conf/zoo4.cfg 
ZooKeeper JMX enabled by default
Using config: conf/zoo4.cfg
Mode: observer
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值