5.7、集群化环境前置准备
5.7.1、介绍
在前面,我们所学习安装的软件,都是以单机模式运行的。
后续,我们将要学习大数据相关的软件部署,所以后续我们所安装的软件服务,大多数都是以集群化(多台服务器共同工作)模式运行的。
所以,在当前小结,我们需要完成集群化环境的前置准备,包括创建多台虚拟机、配置主机名映射、SSH免密登录等等。
5.7.2、部署
5.7.2.1、部署多台Linux虚拟机
安装集群化软件,首要条件就是有多台Linux服务器可用。
我们可以使用VMware提供的克隆功能,将我们的虚拟机额外克隆出3台来使用。
1、首先,关闭当前CentOS系统虚拟机(可以使用root执行init 0
来快速关机)
2、新建文件夹,文件夹起名为:虚拟机集群
3、克隆
4、同样的操作克隆出:node2和node3
5、开启node1,修改主机名为node1,并修改固定IP为:192.169.88.131
# 修改主机名
hostnamectl set-hostname node1
# 修改IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR="192.168.88.131"
IPADDR="192.168.88.132"
NETMASK="255.255.255.0"
GATEWAY="192.168.88.2"
DNS1="192.168.88.2"
# 重启网卡
systemctl stop network
systemctl start network
# 或者直接
systemctl restart network
6、同样的操作启动node2和node3,
修改node2主机名为node2,设置ip为192.168.88.132
修改node2主机名为node3,设置ip为192.168.88.133
7、配置FinalShell,配置连接到node1、node2、node3的连接
为了简单起见,建议配置root用户登录
5.7.2.2、准备主机名映射
1、在Windows系统中修改hosts文件,填入如下内容:
如果同学们使用MacOS系统,请:
- sudo su -,切换到root
- 修改/etc/hosts文件
192.168.88.131 node1
192.168.88.132 node2
192.168.88.133 node3
2、在三台Linux的/etc/hosts文件中,填入如下内容(3台都有添加)
# 编辑/etc/hosts
vim /etc/hosts
# 填入如下内容
192.168.88.131 node1
192.168.88.132 node2
192.168.88.133 node3
5.7.2.3、配置SSH免密登录
5.7.2.3.1、简介
SSH服务是一种用于远程登录的安全认证协议。
我们通过FinalShell远程连接到Linux,就是使用的SSH服务。
SSH服务支持:
- 通过账户+密码的认证方式来做用户认证
- 通过账户+秘钥文件的方式做用户认证
SSH可以让我们通过SSH命令,远程的登录到其他主机上,比如:
在node1执行:ssh root@node2
,将以root用户登录node2服务器,输入密码即可成功登录。
或ssh node2
,将以当前用户直接登录到node2服务器。
5.7.2.3.2、SSH免密配置
后续安装的集群化软件,多数需要远程登录以及远程执行命令,我们可以简单起见,配置三台Linux服务器之间的免密码互相SSH登录。
1、在每一台机器都执行:ssh-keygen -t rsa -b 4096
,一路回车到底即可。
2、在每一台机器执行:
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
需要输入root的密码
3、执行完毕后,node1、node2、node3之间将完成root用户之间的免密互通。
5.7.2.4、配置JDK环境
后续的大数据集群软件,多数是需要Java运行环境的,所以我们为每一台机器都配置JDK环境。
1、下载JDK软件
https://www.oracle.com/java/technologies/downloads
在页面下方找到:
在弹出的页面中输入Oracle的账户密码即可下载(如无账户,请自行注册,注册是免费的)
2、登录Linux系统,切换到root用户
3、通过FinalShell,上传下载好的JDK安装包
4、创建文件夹,用来部署JDK,将JDK和Tomcat都安装部署到:/export/server内
mkdir -p /export/server
5、解压缩JDK安装文件
tar -zxvf jdk-8u351-linux-x64.tar.gz -C /export/server
6、配置JDK的软链接
ln -s /export/server/jdk1.8.0_351 /export/server/jdk
7、配置JAVA_HOME环境变量,以及将$JAVA_HOME/bin文件夹加入PATH环境变量中
# 编辑/etc/profile文件
export JAVA_HOME=/export/server/jdk
export PATH=$PATH:$JAVA_HOME/bin
8、生效环境变量
source /etc/profile
9、配置java执行程序的软链接
# 删除系统自带的java程序
rm -f /usr/bin/java
# 配置java执行程序的软链接
ln -s /export/server/jdk/bin/java /usr/bin/java
5.7.2.5、关闭防火墙和SELinux
1、集群化软件直接需要通过端口互相通讯,为了避免出现网络不通的问题,我们可以简单的在集群内部关闭防火墙。
- 在每一台机器都执行
systemctl stop firewalld
systemctl disable firewalld
2、Linux有一个安全模块:SELinux,用以限制用户和程序的相关权限,来确保系统的安全稳定。
SELinux的配置同防火墙一样,非常复杂,课程中很多不涉及。
在当前,我们只需要关闭SELinux功能,避免后面的软件运行出现问题即可。
- 在每一台机器都执行
vim /etc/sysconfig/selinux
# 将第7行,SELINUX=enforcing改为
SELINUX=disabled
# 保存退出后,重启虚拟机即可,千万要注意disabled单词不要写错,不然无法启动系统。
5.7.2.6、添加快照
为了避免后续出现问题,在完成上述配置后,为每一台虚拟机都制作快照,留待使用。
5.7.3、补充命令-scp
后续的安装部署操作,我们将会频繁的在多台服务器之间相互传输数据。
为了更方便的互相传输,我们补充一个命令:scp
1、scp
命令时cp
命令的升级版,即ssh scp
,通过SSH协议完成文件的复制。
其主要的功能就是:在不同的Linux服务器之间,通过SSH协议互相传输文件。
只要知晓服务器的账户和密码(或密钥),即可通过scp
互传文件。
2、语法:
scp [-r] 参数1 参数2
- -r选项用于复制文件夹使用,如果复制文件夹,必须使用-r
- 参数1:本机路径 或 远程目标路径
- 参数2:远程目标路径 或 本机路径
如:
scp -r /export/server/jdk root@node2:/export/server/
将本机上的jdk文件夹, 以root的身份复制到node2的/export/server/内
同SSH登陆一样,账户名可以省略(使用本机当前的同名账户登陆)
如:
scp -r node2:/export/server/jdk /export/server/
将远程node2的jdk文件夹,复制到本机的/export/server/内
# scp命令的高级用法
cd /export/server
scp -r jdk node2:`pwd`/ # 将本机当前路径的jdk文件夹,复制到node2服务器的同名路径下
scp -r jdk node2:$PWD # 将本机当前路径的jdk文件夹,复制到node2服务器的同名路径下