今天搭建Zookeeper集群时,遇到了一些问题,好头疼的说,不过,也经过本身动手实践理解了许多,总的来讲,实践出真知,当真不错。下面说下集群的搭建吧,但愿可以帮助你们。vim
1、环境:虚拟机CentOs7系统,完整的环境,请确认已安装JDK,Zookeeper,可经过克隆已配置好的虚拟机环境,以下:网络
具体的克隆步骤自行百度,很简单。注意集群部署的节点至少为3个,更多时为奇数个。这次开启3个节点进行集群部署。dom
2、网络配置:默认的NAT链接,可保证虚拟机之间的链接oop
(1)修改主机名测试
vim /etc/sysconfig/network
修改后内容为:this
# Created by anaconda NETWORKING=yes HOSTNAME=slave01
其余两个虚拟机一样如此设置,分别命名为:slave02,slave03。scala
(2)修改主机IP地址rest
vim /etc/sysconfig/network-scripts/ifcfg-lo
该文件名称可能不尽相同,但前缀一致,修改后内容为:code
DEVICE=lo IPADDR=虚拟机IP NETMASK=255.255.255.0 NETWORK=网络地址 # If you're having problems with gated making 127.0.0.0/8 a martian, # you can change this to something else (255.255.255.255, for example) BROADCAST=127.255.255.255 ONBOOT=yes NAME=loopback
根据本身虚拟机的IP进行设置,查看IP的命令:ifconfig,其余两个虚拟机一样如此设置,文件里的参数表示为(若无,可忽略),设置完成后,执行命令 service network restart: server
DEVICE=eth0 //指出设备名称 BOOTPROT=static //启动类型 dhcp|static,使用桥接模式,必须是static HWADDR=00:06:5B:FE:DF:7C //硬件Mac地址 IPADDR=192.168.0.2 //IP地址 NETMASK=255.255.255.0 //子网掩码 NETWORK=192.168.0.0 //网络地址 GATEWAY=192.168.0.1 //网关地址 ONBOOT=yes //是否启动应用 TYPE=Ethernet //网络类型
(3)设置主机名与IP地址映射
vim /etc/hosts
修改后内容为:
#127.0.0.1 slave01 localhost.localdomain localhost ::1 localhost 虚拟机IP1 slave01 虚拟机IP2 slave02 虚拟机IP3 slave03
注意,将/etc/hosts中的127.0.1.1这一行注释掉,后面启动可能会拒绝链接的错误。其余两个虚拟机一样如此设置,注意映射的主机名和IP不要弄乱了。
3、网络连通测试
前面全部的配置完成后,重启这三个虚拟机,使主机名生效,而后分别在三个虚拟机上测试连通性:
#在slave01上测试 ping slave02 ping slave03 #在slave02上测试 ping slave01 ping slave03 #在slave03上测试 ping slave01 ping slave02
测试以上命令,若经过,则表示三台虚拟机之间互通。固然也能够测试下与外网的连通性:
ping www.baidu.com
4、Zookeeper集群搭建
(1)环境配置,省略,请配置好须要的环境
(2)Zookeeper配置文件zoo.cfg配置
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/usr/local/zookeeper/data # the port at which the clients will connect clientPort=2181 server.0=slave01:2888:3888 server.1=slave02:2888:3888 server.2=slave03:2888:3888
注意参数的意义,在此很少说了。注意,dataDir的路径,修改完配置文件后,务必在该路径下生成设置的文件夹,如上data文件夹,同时,server.0、server.一、server.2和data文件夹下的myid文件中的值对应,该myid本身建立并添加对应的值,分别为:0,1,2。
(3)完成配置后,进行集群测试
#在slave01上启动Zookeeper ./zkServer.sh start #在slave02上启动Zookeeper ./zkServer.sh start #在slave03上启动Zookeeper ./zkServer.sh start
启动后显示为:
[hadoop@slave01 bin]$ ./zkServer.sh start ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
执行命令 jps 可查看是否启动成功,有该进程存在:
[hadoop@slave01 bin]$ jps 5370 Jps 5342 QuorumPeerMain
当三台虚拟机都成功启动后,分别在各自虚拟机上执行以下命令:
[hadoop@slave01 bin]$ ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Mode: follower
[hadoop@slave02 bin]$ ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Mode: leader
[hadoop@slave03 bin]$ ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Mode: follower
启动和查看status时,注意防火墙是否关闭,CentOs7默认为firewall:
查看防火墙状态:firewall-cmd –-state 关闭防火墙:systemctl stop firewalld.service
至此,Zookeeper集群已经部署成功了(另外,最好使用Hadoop建立的用户进行操做,root用户未测试,你们能够试一试)。