zookeeper入门

本文主要介绍zookeeper的一些常用命令、单机的安装、集群的安装等操作

1、入门zookeeper

1.1、安装zookeeper

版本:3.3.6

操作系统:centos 6.5

机器:虚拟机三台,分别为192.168.182.129(以下简称129)、192.168.182.130(以下简称130)、192.168.182.131(以下简称131)

要求:先安装jdk1.6+版本(笔者安装的是这个版本的http://download.oracle.com/otn/java/jdk/8u162-b12/0da788060d494f5095bf8624735fa2f1/jdk-8u162-linux-x64.tar.gz?AuthParam=1524624574_878b94fbb46adb5877f41f23084e9f5f)

说明:zk是zookeeper的简称

1.1.1、下载3.3.6的zookeeper、上传到/usr/local/src

1.1.2、解压gz文件并将解压目录移动到/usr/local下

[root@vm129 local]#gzip -d zookeeper-3.3.6.tar.gz

[root@vm129 local]#tar -xf zookeeper-3.3.6.tar

[root@vm129 local]#mv zookeeper-3.3.6 /usr/local

1.1.3、配置zookeeper

创建zoo.cfg文件并进行配置

[root@vm129 local]#cd /usr/local/zookeeper-3.3.6/conf

[root@vm129 local]#cp zoo_sample.cfg zoo.cfg

注:解压后,系统本身是带有zoo_sample.cfg这个文件的,但是zookeeper启动会寻找zoo.cfg,所以需要将zoo_sample.cfg改个名字,里面的参数根据需要修改:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/tmp/zookeeper

clientPortAddress=192.168.182.129

clientPort=2181

maxClientCnxns=100

参数解释:

tickTime:是一个时间单位,默认是2000毫秒,也就是2秒

initLimit:#leader服务器等待Follower启动并完成数据同步的时间,默认值10,表示tickTime的10倍

dataDir:zookeeper数据存储目录,里面包含zookeeper日志输出文件

clientPortAddress:客户端连接时使用哪个ip连接(线上服务可以指定内网地址,避免外网地址直接连到zk服务)

maxClientCnxns:最大客户端并发连接数

clientPort:客户端连接zookeeper的端口

1.1.4、启动zookeeper

[root@vm129 local]#./bin/zkServer.sh start

2、zookeeper常用命令

2.1、客户端连接zk

bin/zkCli.sh -server 192.168.182.129:2181

注:从外部连接时,需要在/etc/sysconfig/iptables中开放2181端口,且ip地址需要使用配置文件中clientPortAddress指定的ip地址

vi /etc/sysconfig/iptables

增加如下内容:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT

2.2、创建zk节点

create /zk_test my_data #创建节点名为zk_test的节点,并存储值为my_data

2.3、获取节点名为zk_test的值

get /zk_test

2.4、设置节点zk_test的值为junk

set /zk_test junk

2.5、删除节点zk_test

delete /zk_test

2.6、查看zk根节点下所有子节点

ls /

注:2.2到2.6的内容都需要在连接zk后进行操作

3、集群安装

本次集群安装一共安装3台虚拟机,ip分别为129、130、131,三台机器全部按照上面1、2点进行安装配置。官方推荐最好是奇数台机器做zookeeper集群,因为zookeeper集群只有在半数以上机器可用时,整体集群才可用,比如3台机器的集群,只有2台或2台以上都可用整个集群才可用,也就是允许挂掉一台的情况。当集群为4台,半数以上的机器(不包括半数)就是3台以上机器可用时,整个集群才可用,允许挂掉一台机器,可见,3台机器的zk集群和4台机器的zk集群效果是一样的。

3.1、各自的zoo.cfg文件需要进行如下修改:

129、130、131三台机器的zoo.cfg(三台机器配置文件除了clientPortAddress之外,其他都相同,以下皆为官方推荐配置):

tickTime=2000

initLimit=5

syncLimit=2

dataDir=/tmp/zookeeper

clientPortAddress=192.168.182.129

clientPort=2181

maxClientCnxns=100

server.1=192.168.182.129:2888:3888

server.2=192.168.182.130:2888:3888

server.3=192.168.182.131:2888:3888

配置说明:

从上面的配置可以看出,相比于单机模式,集群模式多了 server.id=host:port1:port2 的配置, host 为机器 IP,port1 用于指定 Follower 服务器与 Leader 服务器进行通信和数据同步的端口,port2 用于进行 Leader 选举过程中的投票通信。为了三台机器的能正常通信,port1和port2必须在各自机器的

/etc/sysconfig/iptables中开放端口。

这个server.1、server.2、server.3,其中这个数字1、2、3,对应的是dataDir目录下的一个myid文件中的内容,该文件需要自己新建,并输入内容。该值必须是1到255之间的一个值,且集群内唯一。

3.2、开放端口

[root@vm129 local]#vi /etc/sysconfig/iptables

增加如下内容:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT

重启服务,让防火墙修改生效:

[root@vm129 local]#service iptables restart

3.2、在/tmp/zookeeper目录下新建myid文件

[root@vm129 local]#cd /tmp/zookeeper

[root@vm129 local]#touch myid

[root@vm129 local]#echo 1 > myid #129机器的myid文件内容为1、130机器的myid内容为2、131为3

3.3、重新启动zookeeper

[root@vm129 local]#sh /usr/local/zookeeper-3.3.6/bin/zkServer.sh start

至此,集群搭建成功,测试一下在140的set操作和create节点的操作能否同步到141、142吧

需要避免的问题:

a)、客户端、服务端的zk机器列表必须一致,比如说三台机器129、130、131,那么配置文件里也需要指定这三台机器,客户端调用时也必须指定这三台机器列表,不能几个zk集群串着调用

b)、事务日志存放需要正确,zk性能最重要的部分是事务日志,最好将日志存放到单独的设备上,比如固态硬盘(此为zk优化的重要一步)。默认事务日志跟数据存储目录(dataDir指定的目录)一致,如果需要单独设置,需要设置dataLogDir参数

第二问题,一般访问量不是巨大的话,应该都不需要可以考虑,默认即可,注意服务器列表别写错就行。

3.4、设置zookeeper开机启动

[root@vm129 init.d]# cd /etc/rc.d/init.d/

[root@vm129 init.d]# touch zookeeper

[root@vm129 init.d]# chmod u+x zookeeper

[root@vm129 init.d]# vi zookeeper

增加以下内容

#!/bin/bash

#chkconfig:2345 20 90

#description:zookeeper

#processname:zookeeper

export JAVA_HOME=/usr/local/jdk1.8.0_162

ZOOKEEPER_HOME=/usr/local/zookeeper-3.3.6

case $1 in

start) su root $ZOOKEEPER_HOME/bin/zkServer.sh start;;

stop) su root $ZOOKEEPER_HOME/bin/zkServer.sh stop;;

status) su root $ZOOKEEPER_HOME/bin/zkServer.sh status;;

restart) su root $ZOOKEEPER_HOME/bin/zkServer.sh restart;;

*) echo "require start|stop|status|restart" ;;

esac

增加完内容,测试一下服务是否能正常启动、停止、重启

[root@vm129 ~]#service zookeeper start

[root@vm129 ~]#service zookeeper restart

[root@vm129 ~]#service zookeeper stop

测试没问题再将zookeeper服务加入开机启动列表

[root@vm129 ~]#chkconfig --add zookeeper

重启机器就会看到zookeeper服务已经启动

#ps -ef|grep zookeeper

4、jdk安装(已安装的可以忽略)

4.1)、下载jdk(需要登录后下载)

http://download.oracle.com/otn/java/jdk/8u162-b12/0da788060d494f5095bf8624735fa2f1/jdk-8u162-linux-x64.tar.gz?AuthParam=1524624574_878b94fbb46adb5877f41f23084e9f5f

并上传到系统/usr/local/src目录

4.2)、解压jdk并移动到/usr/local目录

[root@vm129 local]#tar -zxvf jdk-8u162-linux-x64.tar.gz

[root@vm129 local]#mv jdk1.8.0_162 /usr/local/

4.3)、配置jdk目录

[root@vm129 local]#vi /etc/profile

在文件最后增加如下内容:

export JAVA_HOME=/usr/local/jdk1.8.0_162

export PATH=$JAVA_HOME/bin:$PATH

 

让文件生效:[root@vm129 local]#source /etc/profile

查看jdk版本确认已生效:[root@vm129 local]# java -version

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值