Centos 7 中zookeeper 3.4.1集群搭建

本文详细介绍了如何在三台虚拟机上搭建并配置ZooKeeper集群,包括虚拟机间SSH免密码登录的设置、ZooKeeper的安装与配置、防火墙端口的开启以及集群状态的验证。

条件

有三台虚拟机,虚拟机上都有配置jdk1.8,虚拟机之间可以互相通过ssh访问

三台虚拟机的hosts 最后都有下面内容:

192.168.43.44   slave1    # 前面为虚拟机的ip地址,后面为虚拟机名,
192.168.43.45   slave2
192.168.43.46   slave3

三台虚拟机都配置有下面内容的环境变量   /etc/profile ,配置后通过source /etc/profile 生效

#JDK-1.8
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin

#zookeeper-3.4.1
export ZK_HOME=/usr/local/zookeeper
export PATH=$ZK_HOME/bin:$PATH

关于三台虚拟机之间通过ssh互相传输数据的操作:

yum -y install openssh-server    # 安装ssh
 
cd ~/.ssh           # 没有则创建这个.ssh文件夹
ssh-keygen -t rsa   # 生成密钥,输入后一直回车即可
cat ~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys    # 添加授权
ssh localhost         # 免密码登录

上面操作在每台虚拟机中都要执行,然后再执行下面命令:

# 下面操作在第一台虚拟中操作
cd ~/.ssh

vim authorized_keys # 复制其他两台虚拟机下面的 authorized_keys 中的内容粘贴到这个authorized_keys下 

# 将该authorized_keys 通过scp 传到其他两台虚拟机的 .ssh 下
scp -r ~/.ssh/authorized_keys root@slave2:~/.ssh/

上面操作完后,三台虚拟机之间应该就可以互相传输数据了,也可以通过ssh 虚拟机名 登录其他虚拟机,通过exit退出

 

zookeeper3.4.1配置

下载zookeeper ,然后解压,重命名

wget https://apache.org/dist/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz

tar -zxvf zookeeper-3.4.1.3.tar.gz

mv zookeeper-3.4.1.3 zookeeper

进入到 zookeeper/conf

cp zoo_sample.cfg zoo.cfg

修改 zoo.cfg的内容如下,

其中dataDir是存放数据的路径,dataLogDir 是存放日志的路径,需要自己创建

下面的 server.X=A:B:C

X 代表服务器的编号,来判断你是第几台服务器

A-代表虚拟机的ip,填写你自己的虚拟机IP

B和C  代表端口,这个端口用来系统之间通信,

关于这两个端口的官方文档解释如下

 根据谷歌翻译的意思大概如下

表单server.X的条目列出构成ZooKeeper服务的服务器。当服务器启动时,它通过在数据目录中查找文件myid来知道它是哪个服务器 。该文件包含服务器编号,ASCII格式。

最后,请注意每个服务器名称后面的两个端口号:“2888”和“3888”。对等体使用前端口连接到其他对等体。这样的连接是必要的,使得对等体可以进行通信,例如,以商定更新的顺序。更具体地说,一个ZooKeeper服务器使用这个端口来连接追随者到领导者。当新的领导者出现时,追随者使用此端口打开与领导者的TCP连接。因为默认领导选举也使用TCP,所以我们目前需要另外一个端口进行领导选举。这是服务器条目中的第二个端口。

218x:客户端(应用程序)连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端

288x:该服务器与集群中的 Leader 服务器交换信息的端口

388x:选举通信端口,如果集群中的 Leader 服务器挂了,需要选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口

B和C对应的端口都需要开启,没有开启的话通过下面命令开启,开启端口后,将防火墙关闭,不然会影响zookeeper 节点之间的通信

# centos7 开放端口,首先得打开防火墙:systemctl start firewalld.service

firewall-cmd --zone=public --add-port=2888/tcp --permanent

--zone #作用域 
--add-port=2888/tcp #添加端口,格式为:端口/通讯协议 
--permanent #永久生效

设置需要重启防火墙生效

firewall-cmd --query-port=2888/tcp  # 查看80端口是否打开,返回yes表示开启

根据dataDir进行X的配置

找到Zookeeper目录,新建data文件夹,并且在data文件夹下面创建一个文件,叫myid,并且在文件里写入server.X对应的X

我的第一台虚拟机 slave1的ip是 192.168.43.44,在zoo.cfg中对应X是 1 ,所以我在slave1的zookeeper目录下的data目录里创建的myid 内容是 1

这里我在第一台虚拟机中配置好zookeeper后,通过scp 将整个zookeeper目录复制到其他两台虚拟机上去

scp -r /usr/local/zookeeper root@slave2:/usr/local/

然后调用命令 zkServer.sh start 来启用zookeeper,三台虚拟机都需要开启,同时三台虚拟机的防火墙是关闭状态

出现 STARTED 则表示开启成功,

然后再通过 zkServer.sh status 来查看状态,leader,负责写服务和数据同步,而follower,提供读服务,

follower表示追随者,leader表示领导者,

当超过一半的zookeeper节点开启时,输入jps命令会出现QuorumPeerMain

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值