Zookeeper三节点集群搭建
Mac下利用vmware fushion安装centos服务器,然后搭建Zookeeper集群环境。
安装中用到的软件包
- Centos7,下载地址
- vmware fushion 10以上的版本
- jdk8
- zookeeper-3.4.5-cdh5.14.2.tar.gz
配置虚拟机并且安装JDK
为了安装简便,先安装一台linux虚拟机,并在其上安装zookeeper,然后克隆这个镜像2份,修改相关配置即可。
-
安装虚拟机
我们这里使用的配置是4G内存,50G硬盘,处理器2核。注意:网络要选择与我的mac共享。 -
修改ip地址,使用固定ip
注意:在修改静态ip之前,先查看vmware fushion使用的本机默认网关地址以及虚拟机允许选择的静态ip地址范围
通过Mac终端查看vmware fushion使用的默认网关地址:
cat /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf
截取了部分结果如下,其中192.168.2.2
为默认网关,255.255.255.0
为子网掩码。
# NAT gateway address
ip = 192.168.2.2
netmask = 255.255.255.0
然后查看虚拟机允许选择的静态ip地址范围:
vim /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf
截取了部分结果如下,其中:192.168.2.128
~ 192.168.2.254
为我们允许配置的静态ip范围。
ubnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.128 192.168.2.254;
option broadcast-address 192.168.2.255;
option domain-name-servers 192.168.2.2;
option domain-name localdomain;
default-lease-time 1800; # default is 30 minutes
max-lease-time 7200; # default is 2 hours
option netbios-name-servers 192.168.2.2;
option routers 192.168.2.2;
}
获取到以上2个信息之后,我们分别配置三台linux虚拟机的ip地址为:192.168.2.100
, 192.168.2.110
, 192.168.2.120
。
下面进行修改,进入虚拟机里面,打开终端,切换到root,然后编辑ifcfg-ens33文件。
su root # 之后的操作都是使用root身份进行
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改其内容为:
BOOTPROTO="static" # 原本是BOOTPROTO="dhcp",自动获取改为使用静态固定ip
IPADDR=192.168.2.100 # 这里使用192.168.2.100
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.2.2 # 这里的网关,填入上面获取到的网关192.168.2.2
DNS1=8.8.8.8 # DNS
保存完之后,重启一下网络:
service network restart
如果反馈结果如下,证明修改成功。
[root@localhost tiger]# service network restart
Restarting network (via systemctl): [ OK ]
然后,使用ifconfig
命令查看一下ip是否是已经更改。如果正确,在mac终端用ping
命令,ping一下mac与虚拟机是否能ping通,如果配置正确,上述命令执行结果应该都是预期的。
- 关闭防火墙
这时候,已经可以在mac终端连接虚拟机了,而不必进入虚拟机在虚拟机终端中关闭防火墙。
ssh root@192.168.2.100
systemctl disable firewalld.service
- 关闭selinux
继续在刚才的终端中,执行:
vim /etc/selinux/config
修改为:
SELINUX=disabled
- 更改主机名
约定这三台主机分别更名为node01, node02, node03
vim /etc/hostname
改为:
node01
- 更改主机名与IP地址映射
vim /etc/hosts
# 修改为:
192.168.2.100 node01
192.168.2.110 node02
192.168.2.120 node03
- 三台机器同步时间
yum -y install ntpdate
crontab -e # 增加定时任务:*/1 * * * * /usr/sbin/ntpdate time1.aliyun.com
- 三台机器添加hadoop用户
三台linux服务器统一添加普通用户hadoop,并给以sudo权限,用于以后所有的大数据软件的安装
并统一设置普通用户的密码为 123456。
useradd hadoop
passwd hadoop
chmod u+w /etc/sudoers
vim /etc/sudoers # 增加一行:hadoop ALL=(ALL) ALL
chmod u-w /etc/sudoers
- 定义统一目录
定义三台linux服务器软件压缩包存放目录,以及解压后安装目录,执行以下命令,创建两个文件夹,一个用于存放软件压缩包目录,一个用于存放解压后目录。
mkdir -p /kkb/soft # 软件压缩包存放目录
mkdir -p /kkb/install # 软件解压后存放目录
chown -R hadoop:hadoop /kkb # 将文件夹权限更改为hadoop用户
- 安装jdk
切换到hadoop用户,上传压缩包到服务器的/kkb/soft下面,然后进行解压,配置环境变量即可。
先在mac终端下用scp把jdk上传到/kkb/soft下面
scp jdk-8u141-linux-x64.tar.gz hadoop@192.168.2.100:/kkb/soft
su hadoop
cd /kkb/soft/
tar -zxf jdk-8u141-linux-x64.tar.gz -C /kkb/install/
sudo vim /etc/profile
# 添加以下配置内容,配置jdk环境变量
export JAVA_HOME=/kkb/install/jdk1.8.0_141
export PATH=:$JAVA_HOME/bin:$PATH
source /etc/profile # 使环境变量生效
java -version # 测试jdk是否安装成功
- 克隆镜像
首先关闭node01,然后创建克隆镜像,克隆2台虚拟机centos02, centos03。
接着分别开启centos02和centos03,执行上面的第2步和第5步。其中,在第2步中,centos02的ip修改为192.168.2.110
,centos03的ip修改为192.168.2.120
; 在第5步中,修改centos02的主机名为node02
,修改centos03的主机名为node03
。
修改完成之后,重启node02和node03使配置生效。
- hadoop用户免密登录
三台机器在hadoop用户下执行以下命令生成公钥与私钥对。
ssh-keygen -t rsa
三台机器在hadoop用户下,执行以下命令将公钥拷贝到node01服务器上面去
ssh-copy-id node01
node01在hadoop用户下,执行以下命令,将authorized_keys拷贝到node02与node03服务器
cd /home/hadoop/.ssh/
scp authorized_keys node02:$PWD
scp authorized_keys node03:$PWD
可以额外做一步,使mac也可以免密登录node01, node02, node03,这样就可以直接在mac的终端免密登录这三台服务器了,而不必进入虚拟机里面,使用Linux的terminal。
# 在mac终端执行
sudo vim /etc/hosts
# 修改为:
192.168.2.100 node01
192.168.2.110 node02
192.168.2.120 node03
# 然后执行
ssh-copy-id hadoop@node01 # 这里必须指明hadoop用户,不然默认使用的是当前用户。
# 然后将node01的authorized_keys同步到三台服务器
ssh hadoop@node01
cd /home/hadoop/.ssh/
scp authorized_keys node02:$PWD
scp authorized_keys node03:$PWD
配置完成之后,使用ssh hadoop@node01
,ssh hadoop@node02
,ssh hadoop@node03
,测试一下mac是否可以免密登录3台服务器。
安装Zookeeper
- 解压Zookeeper
可以先在node01上安装Zookeeper然后将文件同步到node02,node03。
在mac下将zookeeper安装包上传到node01,打开mac终端,执行:
scp zookeeper-3.4.5-cdh5.14.2.tar.gz hadoop@node01:/kkb/soft
ssh hadoop@node01
cd /kkb/soft
tar -zxvf zookeeper-3.4.5-cdh5.14.2.tar.gz -C /kkb/install/
- 修改配置文件
在node01上执行:
cd /kkb/install/zookeeper-3.4.5-cdh5.14.2/conf
cp zoo_sample.cfg zoo.cfg
mkdir -p /kkb/install/zookeeper-3.4.5-cdh5.14.2/zkdatas
vim zoo.cfg
# 修改内容如下:
dataDir=/kkb/install/zookeeper-3.4.5-cdh5.14.2/zkdatas
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
- 添加myid配置
在第一台机器的/kkb/install/zookeeper-3.4.5-cdh5.14.2/zkdatas/
这个路径下创建一个文件,文件名为myid ,文件内容为1
echo 1 > /kkb/install/zookeeper-3.4.5-cdh5.14.2/zkdatas/myid
- 安装包分发并修改myid的值
# 第一台机器上面执行以下两个命令
scp -r /kkb/install/zookeeper-3.4.5-cdh5.14.2/ node02:/kkb/install/
scp -r /kkb/install/zookeeper-3.4.5-cdh5.14.2/ node03:/kkb/install/
# 第二台机器上修改myid的值为2
# 直接在第二台机器任意路径执行以下命令
echo 2 > /kkb/install/zookeeper-3.4.5-cdh5.14.2/zkdatas/myid
# 第三台机器上修改myid的值为3
# 直接在第三台机器任意路径执行以下命令
echo 3 > /kkb/install/zookeeper-3.4.5-cdh5.14.2/zkdatas/myid
- 启动Zookeeper集群
三台机器启动zookeeper服务,这个命令三台机器都要执行。
/kkb/install/zookeeper-3.4.5-cdh5.14.2/bin/zkServer.sh start
查看启动状态
/kkb/install/zookeeper-3.4.5-cdh5.14.2/bin/zkServer.sh status
查看Zookeeper是否启动
随便登录node01,node02,node03中的任何一台,执行jps
,如果看到QuorumPeerMain这个进程,则证明Zookeeper正常启动。