在CentOS 7下安装Zookeeper

1、安装及配置


首先,再安装前,需要安装并配置好JDK(选择Oracle Java8 SE)。

其次,需要下载Zookeeper安装包,比如本例:zookeeper-3.4.9.tar.gz(可从Apache网站上下载http://www.apache.org/dyn/closer.cgi/zookeeper/),建议选择相对稳定的版本,不要选择最新版。

然后需要对其进行解压,解压的目标目录可以自定义,比如本例为/usr/server等:

[root@ZookeeperA server]# tar –zxvf zookeeper-3.4.9.tar.gz

打开 /etc/profile文件,并在文件末尾加入如下路径信息:

export ZOOKEEPER_HOME=/usr/server/zookeeper-3.4.9

export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf

然后使修改生效:

[root@ZookeeperA /]# source /etc/profile

最后,需要创建两个必备的目录(可以在任意路径下,本例在zookeeper的主目录下创建),一个用于装数据,另一个用于装日志,这两个目录必须创建,否则将会在使用过程中报错;

建议不要使用同一个目录,目录名建议采用data和log:

[root@ZookeeperA zookeeper-3.4.9]# mkdir data

[root@ZookeeperA zookeeper-3.4.9]# mkdir log

2、配置集群


2.1、修改主机名

需要事先将每一台服务器名称修改成指定的主机名:

[root@localhost /]# hostname

Localhost.localdomain

本例设置主机名分别为ZookeeperA、ZookeeperB和ZookeeperC,其中针对ZookeeperA的设置如下所示:

[root@localhost /]# hostnamectl --static set-hostname ZookeeperA

[root@localhost /]# hostname

ZookeeperA

2.2、配置主机


首先需要配置主机的访问列表,在/etc/hosts文件中,将集群中的所有主机及其IP地址进行配置及映射,如下所示:

127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4

::1        localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.70 ZookeeperA

192.168.1.71 ZookeeperB

192.168.1.72 ZookeeperC

其中黑色内容为配置的内容,分别配置了ZookeeperA、ZookeeperB和ZookeeperC三台服务器可以互访,需要分别在这三台机器的/etc/hosts文件添加此内容。

特别需要注意:


127.0.0.1一行一定不能做修改,若做了修改(比如讲本机名称localhost进行了映射),zookeeper启动后将会出现无法连接网络错误;

在分布式环境中,一定要忘记本机 (localhost/127.0.0.1) 的概念,完全用静态IP来设置和定义。

127.0.0.1  localhost ZookeeperA localhost4 localhost4.localdomain4

::1        localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.70 ZookeeperA

192.168.1.71 ZookeeperB

192.168.1.72 ZookeeperC

2.3、配置文件


需要进入zookeeper的conf路径下,将已存在的一个模板文件(zoo_sample.cfg)复制成zookeeper的配置文件(zoo.cfg)

[root@ZookeeperA conf]# cp zoo_sample.cfg zoo.cfg

首先,要在zoo.cfg文件中修改数据路径以及增加log日志路径设置,如下所示:

数据路径,用于存放myid文件等

dataDir=/usr/server/zookeeper-3.4.9/data

日志文件路径,用于存放日志

dataLogDir=/usr/server/zookeeper-3.4.9/log

然后打开该文件并添加如下代码:

server.70=ZookeeperA:2888:3888

server.71=ZookeeperB:2888:3888

server.72=ZookeeperC:2888:3888

本例设定仅使用三台服务器作为zookeeper的集群,按照如下格式进行配置:

server.id=host:port:port

其中其中host名称和port可以自定义,参数的含义如下:

 例子中,ZookeeperA、ZookeeperB和ZookeeperC为三台服务器的主机名,service.70通常会配置成master主机,其他的配置成slave主机。

 其次,第一个port(2888,默认端口号,可以自定义)是“从服务器(follower)”连接到”主服务器(leader)“的端口号,第二个port(3888,默认端口号,可以自定义)是进行leadership选举的端口号

2.4、设置MYID


然后在zoo.cfg 文件中配置的dataDir参数的路径下(此路径可以任意修改,默认为”/tmp/zookeeper”),创建myid文件,并将与本机对应的service.n(本例为70~72)的n写入文件,通常service. 后面的的数字n可以取IP地址的最后一位,比较好识别。

[root@ZookeeperA data]# vi myid

若本机为ZookeeperA,IP设为192.168.1.70,则文件内容如下

70

然后将本机配置和安装内容全部复制到其他机器中:

[root@ZookeeperA data]# scp –r zookeeper-3.4.9/ KafkaB:/usr/server/zookeeper-3.4.9

[root@ZookeeperA data]# scp –r zookeeper-3.4.9/ KafkaC:/usr/server/zookeeper-3.4.9

再分别到ZookeeperB和ZookeeperC中修改dataDir参数指定的路径下的myid文件内容,将与本机对应的service.n(本例为70~72)的n写入文件,如本机为ZookeeperB,IP设为192.168.1.71,则文件内容如下

71

为ZookeeperC,IP设为192.168.1.72,则文件内容如下

72

也可以采用Linux中简便写法(文件中仅有一行):

[root@ZookeeperA data]# echo “72” > /usr/server/zookeeper-3.4.9/data/myid

2.5、配置防火墙


最后,打开防火墙端口:2888、3888、2181,具体开放的端口是那个,需要根据配置的服务器参数:server.id=host:port:port以及zoo.cfg中clientPort参数来确定:

[root@ZookeeperA zookeeper]# firewall-cmd --permanent --zone=public --add-port=2888/tcp

[root@ZookeeperA zookeeper]# firewall-cmd --permanent --zone=public --add-port=3888/tcp

[root@ZookeeperA zookeeper]# firewall-cmd --permanent --zone=public --add-port=2181/tcp

3、启动集群


配置完成后,需要分别在每一台服务器上执行启动,首先进入zookeeper安装目录下的bin目录下,执行zkServer启动即可(建议,在启动集群之前,将每台服务器重启动一次):

[root@ZookeeperA bin]# zkServer.sh start

ZooKeeper JMX enabled by default

Using config: /usr/server/zookeeper-3.4.9/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

然后再执行如下命令:

[root@ZookeeperA bin]# jps

2983 QuorumPeerMain

3128 Jps

当看你到此信息,其中包含QuorumPeerMain(Zookeeper的进程名)时,代表当前结点成功启动;若没有启动,可以通过如下命令,查看启动过程出现的问题:

[root@ZookeeperA bin]# zkServer.sh start-foreground

此命令将会列出启动时遇到的各种异常错误等信息。

可以在任意一台主机上执行如下命令,查看当前主机在集群中节点的状态:

[root@ZookeeperB bin]# zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /usr/server/zookeeper-3.4.9/bin/../conf/zoo.cfg

Mode: follower

本例显示ZookeeperB机器处于zookeeper的follower模式。

[root@ZookeeperC bin]# zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /usr/server/zookeeper-3.4.9/bin/../conf/zoo.cfg

Mode: leader

本例显示ZookeeperC机器处于zookeeper的leader模式。

4、客户端访问


配置完成后,可以使用zookeeper自带的控制台客户端来查看安装是否成功。

[root@ZookeeperB bin]# ./zkCli.sh -server ZookeeperA:2181

Connecting to ZookeeperA:2181

2016-09-14 18:03:43,829 [myid:] - INFO  [main:Environment@100] – Client

Welcome to ZooKeeper!

[zk: ZookeeperA:2181(CONNECTED) 0]

至此,已经成功进入了客户端,并链接到了ZookeeperA服务器的2181端口。

通过如下命令可以查看节点:

[zk: ZookeeperA:21810(CONNECTED) 0] ls /

[zookeeper]

[zk: ZookeeperA:21810(CONNECTED) 1]

你可能感兴趣的:(在CentOS 7下安装Zookeeper)