一、集群配置图
在搭建集群之前,我们要考虑好集群中各个机器的配置。这里以四台机器为例,配置图如下:
集群配置图
ant151 ant152 ant153 ant154
NameNode NameNode
DataNode DataNode DataNode DataNode
NodeManager NodeManager NodeManager NodeManager
ResourceManager ResourceManager
JournalNode JournalNode JournalNode
DFSZKFConler DFSZKFConler
zk0 zk1 zk2
ant151,ant152,ant153,ant154为四台主机名。
ant151,ant152分别作为主NameNode和副NameNode,当其中一个NameNode挂掉之后,可以进行主备切换。
DataNode和NodeManager我每一台都作为节点,进行主备切换。
ResourceManager 我设置给ant153和ant154作为主备。
JournalNode我设置给了ant151,ant152,ant153。JournalNode相当于是NameNode守护进程,100个节点至少有3个JournalNode,100个以上则至少5个。详情请查看 journalnode的作用。
DFSZKFConler 高可用时它负责监控NN(NameNode)的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上的一个特定接口来获取NN的健康状态。FC也有选择谁作为Active NN的权利,因为最多只有两个节点,目前选择策略还比较简单(先到先得,轮换)
zk0,zk1,zk2 为zookeeper集群中服务器ID。
二、设置各个主机
首先创建虚拟机,配置好网络。
接着设置各个主机名,然后用指令bash刷新生效。
hostnamectl set-hostname ant151
然后,关闭各个主机的防火墙
systemctl stop firewalld
systemctl disable firewalld
之后同步各个主机的时间。先安装同步时间服务。
# 同步时间
[root@xsqone31 ~]# yum install -y ntpdate
[root@xsqone31 ~]# ntpdate time.windows.com
[root@xsqone31 ~]# date
安装完服务后使用指令
crontab -e
输入指令,然后保存退出。
* */5 * * * /usr/sbin/ntpdate -u time.windows.com
接着重新加载,启动定时服务
# 重新加载
[root@xsqone31 ~]# service crond reload
# 启动定时任务
[root@xsqone31 ~]# service crond start
然后设置免密登录,先获取本机公钥
# 配置免密登录
ssh-keygen -t rsa -P ""
获取后,将公钥传递给其他主机
# 将本地公钥拷贝到要免密登录的目标机器
ssh-copy-id -i /root/.ssh/id_rsa.pub -p22 root@ant151
ssh-copy-id -i /root/.ssh/id_rsa.pub -p22 root@ant152
ssh-copy-id -i /root/.ssh/id_rsa.pub -p22 root@ant153
ssh-copy-id -i /root/.ssh/id_rsa.pub -p22 root@ant154
# 测试
ssh -p22 主机名
最后,为主备切换安装服务
yum install psmisc -y
三、安装JDK
给每台机器安装JDK,并配置好文件
四、搭建zookeeper集群
这里可以使用脚本,这里我将压缩包存入/opt/install文件夹下,解压到/opt/software文件夹下,并重命名为zk345,各位可以根据需要修改安装路径等,具体脚本如下:
#! /bin/bash
zk=true
hostname=`hostname`
if [ "$zk" = true ];then
echo 'ZK安装开始'
tar -zxf /opt/install/zookeeper-3.4.5-cdh5.14.2.tar.gz -C /opt/software/
mv /opt/software/zookeeper-3.4.5-cdh5.14.2 /opt/software/zk345
cp /opt/software/zk345/conf/zoo_sample.cfg /opt/software/zk345/conf/zoo.cfg
mkdir -p /opt/software/zk345/datas
sed -i '12c\dataDir=/opt/software/zk345/datas' /opt/software/zk345/conf/zoo.cfg
echo 'server.0='$hostname':2287:3387' >> /opt/software/zk345/conf/zoo.cfg
echo "0" > /opt/software/zk345/datas/myid
sed -i '73a\export PATH=$PATH:$ZOOKEEPER_HOME/bin' /etc/profile
sed -i '73a\export ZOOKEEPER_HOME=/opt/software/zk345/' /etc/profile
sed -i '73a\#ZK' /etc/profile
source /etc/profile
echo 'ZK安装完成'
fi
安装完成后,需要配置zk345/datas目录下的zoo.cfg文件
vim /opt/soft/zk345/datas/zoo.cfg
# zookeeper集群的配置
server.0=ant151:2287:3387
server.1=ant152:2287:3387
server.2=ant153:2287:3387
server.3=ant154:2287:3387
之后将配置文件和zk345传输给其他主机,传输ant152代码如下,其他略:
# 将安装目录传输给其他主机
scp -r /opt/software/zk345