概述

搭载ZooKeeper环境的Linux分布式集群,为日后的分布式、大数据学习做准备。

配置

考虑到国内红帽系的Linux比重最大,使用免费的CentOS7.7。
网关192.168.88.2,对应地,
子网掩码为255.255.255.0。DNS选用8.8.8.8114.114.114.114。node1的IP192.168.88.9,node2的IP192.168.88.10,node3的IP192.168.88.11

具体步骤

node1虚拟机制作

安装及固定IP

安装VMware15.5及以上版本,先做一个Linux系统的虚拟机(选用Ubuntu之类的也可以,问题不大)。不再使用GUI,后续全部使用命令行。

使用ifconfig查看node1的网络信息。

使用vim /etc/sysconfig/network-scripts/ifcfg-ens33修改DHCP(动态分配IP)为静态获取IP(固定IP)修改:

BOOTPROTO="static" ,
IPADDR="192.168.88.9" 
GATEWAY="192.168.88.2" 
NETMASK="255.255.255.0" 
DNS1="8.8.8.8" 
DNS2="114.114.114.114" 
IPV6_PRIVACY="no"

有就修改(或先把原来的那行#注释),没有就添加。然后systemctl restart network重启网络,重新使用ifconfig查看node1的网络信息。

关闭防火墙

systemctl stop firewalld.service 
systemctl disable firewalld.service

使用这2条,关闭防火墙服务,并关闭开机自启动。

JDK安装

大数据一定会用到JDK。

mkdir -p /export/software

创建安装包存放路径。

mkdir -p /export/server

创建安装路径。

mkdir -p /export/data

创建数据区。

先切换到安装包路径cd /export/software/,使用secureCRT的rz上传文件jdk-8u241-linux-x64.tar.gz。然后tar -zxvf jdk-8u241-linux-x64.tar.gz -C /export/server/解压。

使用VIM配置环境变量:vim /etc/profile,加入:

export JAVA_HOME=/export/servers/jdk1.8.0_241 
export PATH=:$PATH:$JAVA_HOME/bin
source /etc/profile

刷新环境变量。使用java -version,看到JDK版本就说明安装成功。

常用软件比如MySQL也可以先安装上,就不需要克隆之后再多次安装。笔者仅安装了JDK。

关闭SELinux

使用vim /etc/selinux/config,修改SELINUX=disabledreboot重启下。

虚拟机克隆

笔者的SSD盘G盘空间不多,故将虚拟机克隆到SSD盘C盘,SSD盘玩虚拟机比HDD舒服太多了!!!虚拟机比打游戏对硬盘的伤害小,不要慌,可劲造。。。

完整克隆(先关闭虚拟机才能克隆,开机或者挂起状态是不能克隆的,最好留个快照),防止node1损坏连带node2和node3也不能使用。

克隆出node2和node3以后,给2个新虚拟机的网络适配器,高级,重新生成MAC地址。

固定IP

vim /etc/sysconfig/network-scripts/ifcfg-ens33

分别修改为192.168.88.10和192.168.88.11。和node1的步骤类似,不再赘述。

systemctl restart network.service

设置完成后重启网络。

修改主机名

hostnamectl set-hostname node2

修改node2的主机名。

hostnamectl set-hostname node3

修改node3的主机名。

使用reboot重启生效。

映射配置

Linux中:

vim /etc/hosts

修改内容:

192.168.88.9 node1 
192.168.88.10 node2 
192.168.88.11 node3

Win10中:
C:\Windows\System32\drivers\etc\hosts添加同样的内容,不能保存就另存到桌面,再覆盖原来的文件。注意另存的时候不要有.txt后缀。

免密匙登录

3个虚拟机都需要:

ssh-keygen -t rsa

多按几次回车会生成密室。

ssh-copy-id node1 
ssh-copy-id node2 
ssh-copy-id node3

3个虚拟机都需要执行,实现3个虚拟机的免密匙登录。

时钟同步

所有机器是一个集群,用于共同工作解决同一个问题,必须保证所有机器的时间是同步的,不能有毫秒以上的误差。一般一个集群对外只暴露1个IP,故只需要对外的这个IP和外部时间同步,集群内的其它机器都和这台机器同步即可。

yum -y install ntp

三台都要安装ntp服务。

三台都要使用vim /etc/sysconfig/ntpd添加SYNC_HWCLOCK=yes,配置本地时钟同步。

笔者配置node1为与外部时间同步:
使用vim /etc/ntp.conf,#注释所有restrict以及server开头的行,添加:

restrict 192.168.88.0 mask 255.255.255.0 nomodify notrap
server ntp4.aliyun.com
server 202.112.10.36
server 127.127.1.0 # localclock
fudge 127.127.1.0 stratum 10

另外2台:
使用:vim /etc/ntp.conf,同样注释后,添加:

server 192.168.88.9

启动3台机器的ntp服务:

systemctl start ntpd.service
systemctl enable ntpd.service

后2台:

ntpdate -u 192.168.88.9

手动同步,并配置定时任务:

crontab -e

这玩意儿和VIM用法差不多,填写:

*/5 * * * * /usr/sbin/ntpdate -u 192.168.88.130 > /dev/null 2>&1

还有2条可以看状态的命令:

ntpq -p:#列举当前所有可用的同步服务器
ntpstat:#查看当前的同步状态

ZooKeeper配置

http://archive.apache.org/dist/下载zookeeper-3.4.6.tar.gz,切换到安装包目录:

cd /export/software/

使用rz命令上传后,解压:

tar -zxvf zookeeper-3.4.6.tar.gz -C /export/server/

切换node1的目录cd /export/server/zookeeper-3.4.6/
使用cp conf/zoo_sample.cfg conf/zoo.cfg复制并改名获得配置文件。

创建存储目录:

mkdir /export/server/zookeeper-3.4.6/zkData

使用VIM修改vim conf/zoo.cfg

dataDir=/export/server/zookeeper-3.4.6/zkData
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

生成node1的myid:

echo "1" >/export/server/zookeeper-3.4.6/zkData/myid

分发给node2和node3:

cd /export/server/
scp -r zookeeper-3.4.6 node2:$PWD
scp -r zookeeper-3.4.6 node3:$PWD

使用echo "2" >/export/server/zookeeper-3.4.6/zkData/myid修改node2的myid,使用echo "3" >/export/server/zookeeper-3.4.6/zkData/myid修改node3的myid。

3个虚拟机都使用cd /export/server/zookeeper-3.4.6/切换目录,bin/zkServer.sh start启动ZooKeeper服务。还可以使用bin/zkServer.sh status查看状态,使用bin/zkServer.sh stop关闭服务。由于未提供重启命令,只能先stop再start。

至此完成了ZooKeeper集群搭建。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐