锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

【大数据】HBase集群部署

时间:2023-12-29 12:37:02 sh8c15连接器

HBase集群部署


摘要快速部署


静态IP

位置

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

内容

BOOTPROTO=static ONBOOT=yes  DNS1=192.168.56.1 GATEWAY=192.168.56.1 IPADDR=192.168.56.101 

BOOTPROTO:IP获取方式,ONBOOT:是否启用,DNS1:网关IP,GATEWAY:网关IP,IPADDR:本机IP

重启服务

service network restart 

查看IP

ip addr 

防火墙

临时关闭

systemctl stop firewalld 

查看状态

systemctl status firewalld 

永久关闭

systemctl disable firewalld 

查看状态

systemctl list-unit-files | grep firewalld 

临时关闭通常用于使用 永久关闭

主机名

查看

hostname 

临时修改

hostname slave0 

永久修改

vi /etc/hostname 

/etc/hostname中单存储主机名称,通常临时关闭 永久关闭

域名解析

文件

vi /etc/hosts 

追加

192.168.25.10 slave0 192.168.25.11 slave1 192.168.25.12 slave2 

格式:IP域名(空格)

免密登录

生成秘钥

ssh-keygen -t rsa 

试验(免密登录自己配置)

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  

分发到虚拟机上,要免密登录。

scp ~/.ssh/id_rsa.pub slave1:~ scp ~/.ssh/id_rsa.pub slave2:~ 

免密登录的虚拟机将公钥添加到authorized_keys 文件中

mkdir .ssh cd .ssh touch authorized_keys cat ~/id_rsa.pub >> ~/.ssh/authorized_keys  

生成密钥的主机可以在接收公钥的主机上免密登录

SSH免DNS验证

配置文件

 vi /etc/ssh/sshd_config  

将UseDNS设置为no,并取消注释

重启SSH服务

service sshd restart 

时间同步

安装ntpdate

yum install -y ntpdate 

同步时间

ntpdate -u ntp.aliyun.com 
设置定时任务

查看路径

which ntpdate 

文件

vi /etc/crontab  

定期任务配置,10分钟同步一次(额外)

*/10 * * * * root /usr/sbin/ntpdate -u ntp.aliyun.com 

禁止邮件提醒

文件

vi /etc/profile 

配置(附加)

unset MAILCHECK 

更新

source /etc/profile 

不用./程序直接执行

文件

vi /etc/profile 

配置(附加)

## 可直接执行文件 export PATH=.:$PATH 

更新

source /etc/profile 

Java

创建目录/opt/software/opt/module

mkdir -p /opt/software mkdir -p /opt/module 

上传安装包/opt/software

解压

tar -zxvf jdk-7u79-linux-x64.tar.gz -C /opt/module/ 

环境变量/etc/profile(追加)

## JAVA_HOME export JAVA_HOME=/opt/module/jdk1.7.0_79 export PATH=$PATH:$JAVA_HOME/bin 

更新

source /etc/profile 

验证

java -version

Hadoop

规划

上传安装包到/opt/software

解压

tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/

环境变量/etc/profile(追加)

## HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

更新

source /etc/profile
配置文件

配置目录:安装目录/etc/hadoop/

hadoop-env.sh(末尾插入)

yarn-env.sh(前面插入)

mapred-env.sh(前面插入)

export JAVA_HOME=/opt/module/jdk1.7.0_79

core-site.xml


    
    
        fs.defaultFS
        hdfs://slave0:9000
    
    
    
        hadoop.tmp.dir
        /opt/module/hadoop-2.7.2/data/tmp
    

hdfs-site.xml


    
    
        dfs.replication
        3
    
    
    
        dfs.namenode.secondary.http-address
        slave2:50090
    


yarn-site.xml


    
    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    
    
    
        yarn.resourcemanager.hostname
        slave1
    

mapred-site.xml

复制

cat mapred-site.xml.template >> mapred-site.xml

配置


    
    
        mapreduce.framework.name
        yarn
    

slaves 文件(添加集群的所有主机的域名)

slave0
slave1
slave2
分发运行

分发

scp -rq /opt/module/hadoop-2.7.2/ slave1:/opt/module/
scp -rq /opt/module/hadoop-2.7.2/ slave2:/opt/module/

格式化(第一次)

bin/hdfs namenode -format

启动

slave0 : HDFS

sbin/start-dfs.sh 

slave1 : YARN

sbin/start-yarn.sh 

停止

slave1 : YARN

sbin/stop-yarn.sh 

slave0 : HDFS

sbin/stop-dfs.sh 

ZooKeeper

上传安装包到/opt/software

解压

tar -zxvf zookeeper-3.4.10.tar.gz  -C /opt/module/

环境变量/etc/profile(追加)

## ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.10
export PATH=$PATH:$ZOOKEEPER_HOME/bin

更新

source /etc/profile
创建文件夹

/opt/module/zookeeper-3.4.10/目录下创建data/zkData目录

mkdir -p data/zkData
配置文件

安装目录/conf文件夹下

复制模板文件

cat zoo_sample.cfg >> zoo.cfg

zoo.cfg

修改

dataDir=/opt/module/zookeeper-3.4.10/data/zkData

在末尾追加

## 集群
server.1=slave0:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

/opt/module/zookeeper-3.4.10/data/zkData/目录下创建myid文件

cd /opt/module/zookeeper-3.4.10/data/zkData/
touch myid

分发运行

分发时修改/opt/module/zookeeper-3.4.10/data/zkData/目录下的myid文件,就一个编号,分别与zoo.cfg中追加的内容对应,比如:slave0的myid内容就是1,slave1的myid内容就是2

vi /opt/module/zookeeper-3.4.10/data/zkData/myid

分发

scp -rq /opt/module/zookeeper-3.4.10/ slave1:/opt/module/
scp -rq /opt/module/zookeeper-3.4.10/ slave2:/opt/module/

运行

分别在三台虚拟机上ZooKeeper的安装目录里执行

bin/zkServer.sh start

停止

分别在三台虚拟机上ZooKeeper的安装目录里执行

bin/zkServer.sh stop

HBase

上传安装包到/opt/software

解压

tar -zvxf hbase-1.3.3-bin.tar.gz -C /opt/module/

环境变量/etc/profile(追加)

## HBASE_HOME
export HBASE_HOME=/opt/module/hbase-1.3.3
export PATH=$PATH:$HBASE_HOME/bin

更新

source /etc/profile
配置

跳转到/opt/module/hbase-1.3.3/conf/目录

cd /opt/module/hbase-1.3.3/conf/

hbase-env.sh(前面插入)

## JDK路径
export JAVA_HOME=/opt/module/jdk1.7.0_79
## 设置使用外置的ZooKeeper
export HBASE_MANAGES_ZK=false

hbase-site.xml


  
  
    hbase.master.maxclockskew
    180000
  
  
  
    hbase.rootdir
    hdfs://slave0:9000/hbase
  
  
  
    hbase.cluster.distributed
    true
  
  
  
    hbase.zookeeper.quorum
    slave0,slave1,slave2
  
  
  
    hbase.zookeeper.property.dataDir
    /opt/module/zookeeper-3.4.10/data/zkData
  

regionservers 文件(添加集群的所有主机的域名)

slave0
slave1
slave2

复制Hadoop的core-site.xmlhdfs-site.xml到HBase的conf目录下

cp /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml /opt/module/hbase-1.3.3/conf/
cp /opt/module/hadoop-2.7.2/etc/hadoop/hdfs-site.xml /opt/module/hbase-1.3.3/conf/

分发和运行

分发

scp -rq /opt/module/hbase-1.3.3/ slave1:/opt/module/
scp -rq /opt/module/hbase-1.3.3/ slave2:/opt/module/

运行(在NameNode节点主机上,slave0,HBase安装目录下)

bin/start-hbase.sh 

停止

bin/stop-hbase.sh 

虚拟机软件安装

分别演示VirtualBox 6.1.30和VMware Workstation Pro 15.5.6的下载和安装。

VirtualBox虚拟机

下载

  1. 用浏览器打开 virtualbox.org 网站

点击“Downloads”

  1. 往下翻,找到“VirtualBox older builds”

点击“VirtualBox older builds”

  1. 找到“VirtualBox 6.1”,点击“VirtualBox 6.1”

  1. 找到“VirtualBox 6.1.30”下的“Windows hosts”,点击“Windows hosts”以下载VirtualBox 6.1.30版本的安装包

安装

  1. 下载之后鼠标右键,打开安装程序

  1. 下一步

  1. 可以点击“浏览”选择一个合适的安装位置,这边保持默认位置,然后点“下一步”

  1. 前面3个选项按需勾选,“注册文件关联”建议勾选,下一步

  1. 安装时会短暂断网,准备好之后点击“是”

  1. 点“安装”,开始安装VirtualBox

  1. 中间会弹出三个Windows安全提示,都点击“安装”按钮

  1. 点击完成,完成VirtualBox6.1.30的安装

  1. 更新提示不必理会,在“管理”→“全局设定”→“更新”里取消勾选“检查更新”即可

VMware虚拟机

下载

  1. 用浏览器打开 vmware.com 网站

点击“登录”→“Customer Connect”

  1. 登录上你自己的VMware账号,如果没有可以注册一个,或者尝试直接进入网址:

  1. 来到“CUSTOMER CONNECT 主页”后点击所有产品

  1. 翻到下面,找到“VMware Workstation Pro”,点击“查看下载组件”

  1. 选择版本选择为15.0的版本,在产品中找到Windows版的VMware Workstation Pro,点击右边的“转至下载”

6.选择15.5.6版本,在下面文件点右边点“立即下载”

7.勾选“我同意最终用户许可协议中所列的各项条款和条件”后点击“接受”以下载VMware Workstation Pro 15.5.6的安装包

安装

  1. 下载完成后得到一个文件,鼠标右键→打开

  1. 点击“下一步”

  1. 勾选“我接受许可协议中的条款(A)”,点击“下一步”

  1. 可以点击上面的“更改…”选择一个合适的安装位置,这边保持默认位置,然后点“下一步”

  1. 可以按需勾选上面的两个选项,这边全部取消掉,点击“下一步”

  1. 可以按需勾选上面的两个选项,这边保持默认,点击“下一步”

  1. 点击安装以开始安装VMware Workstation Pro 15.5.6

  1. 安装完成,点击“完成”退出安装程序

注册

  1. 打开VMware Workstation Pro,点击“帮助”→“输入许可证密钥”

  1. 搜索“VMwareWorkstation 15 Pro 密钥”找一些密钥,或者自己购买,这边提供互联网上找到的几个密钥:
VMware Workstation 15 Pro 的密钥:

UG5J2-0ME12-M89WY-NPWXX-WQH88
GA590-86Y05-4806Y-X4PEE-ZV8E0
YA18K-0WY8P-H85DY-L4NZG-X7RAD
UA5DR-2ZD4H-089FY-6YQ5T-YPRX6
B806Y-86Y05-GA590-X4PEE-ZV8E0
ZF582-0NW5N-H8D2P-0XZEE-Z22VA
YG5H2-ANZ0H-M8ERY-TXZZZ-YKRV8
UG5J2-0ME12-M89WY-NPWXX-WQH88
UA5DR-2ZD4H-089FY-6YQ5T-YPRX6
GA590-86Y05-4806Y-X4PEE-ZV8E0
ZF582-0NW5N-H8D2P-0XZEE-Z22VA
YA18K-0WY8P-H85DY-L4NZG-X7RAD

不保证每个密匙都有效,每个密钥都有时效和次数限制。

把得到的密钥输入到“许可证密钥”输入框中,点击“确定”

  1. 激活后在“帮助”→“关于WMware Workstation(A)”打开的窗口中可以看到相关的许可证信息


安装Linux集群

使用CentOS7 - 1810系统,3台虚拟机组成集群。

CentOS7 - 1810下载

  1. 打开网站:centos.org

点击“Download”按钮进入下载页面

  1. 往下翻,找到并点击“Older Versions”下面的“then click here”标签

  1. 往下翻,找到“Archived Versions”下的“Base Distribution”面板,找到“7 (1810)”点击右边的“Tree”标签

  1. 往下翻,找到“isos”文件夹,点进去

  1. 点击“x86_64”文件夹

  1. 我们选择下载“CentOS-7-x86_64-Minimal-1810.iso”文件

  1. 下载完成后,我们得到这样一个文件

  1. (可选)为了确保下载的时候没出错,可以用SHA256工具来计算一下这个文件的SHA256值,与官方给出的38d5d51d9d100fd73df031ffd6bd8b1297ce24660dc8c13a3b8b4534a4bd291c对比一下看是否一致,若不一致,则可能下载过程中出现了错误,需要重新下载

VirtualBox虚拟机安装Linux集群

  1. 打开VirtualBox,点击主页上的“新建”

  1. 给虚拟机起个名字,方便以后操作,“slave0”(slave:从机),文件夹是存放虚拟机的位置,尽量选容量大点的磁盘,类型选择“Linux”,版本选择“Other Linux (64-bit)”或者“RedHat (64-bit)”,下一步

  1. 设置虚拟机运行内存大小,根据自己的电脑内存大小和同时需要启动的虚拟机数量来决定,可以使用推荐的512M,但最好使用2G及以上,后面不够用了也可以调整,这边使用2G,下一步

  1. 选择“现在创建虚拟硬盘”,点击“创建”

  1. 保持默认“VDI(VirtualBox 磁盘映像)”,下一步

  1. 虚拟硬盘分配方式建议使用“动态分配”以节省硬盘空间,下一步

  1. 位置保持默认,硬盘大小建议50G及以上,这是它最大占用的空间,点击“创建”

  1. 创建完成后在启动之前,还需要做一些配置,点击虚拟电脑条目,点击主页上的“设置”,在新打开的设置窗口中点击“存储”→“没有盘片”→ 分配光驱右边的光盘图标 →“选择虚拟盘”

  1. 选择我们刚刚下载的磁盘映像,打开

  1. VirtualBox的NAT网络不能从宿主机主动连接到虚拟机,所以虚拟机还需要加个网卡来专门做与宿主机的互联,点击“网络”→“网卡2”→“启用网络连接”,连接方式选择“仅主机 (Host-Only)网络”,界面名称保持默认,OK

  1. 选中虚拟机,点击启动按钮

  1. 在新打开的窗口中点击虚拟机界面,会弹出提示,键鼠会被虚拟机捕获独占,退出按右边的Ctrl键,可以勾选不要再提示,点击捕获按钮开始操作操作虚拟机

  1. 可以把这个消息提示关了(提示你控制虚拟机键鼠会被独占),进入控制虚拟机后,按下向上箭头“↑”调整选项到“Install CentOS 7”选项,回车

  1. 可以把这个消息提示关了(提示你虚拟机支持鼠标自动切换,即不会独占),选择一种自己喜欢的语言,点“继续©”

  1. 确认一下“日期和时间”设置得对不对,如果不对,需要手动更改一下,然后点击“安装位置(D)”以选择一个安装位置

  1. 根据自己的需求选择磁盘,这边我保持默认,直接点击“完成(D)”

  1. 出来之后点击“开始安装”以开始安装CentOS

  1. 安装过程中点击“ROOT密码”来设置一下root的密码

  1. 输入两次密码,如果密码太短,需要按两次“完成(D)”才能完成设置

  1. 安装完成后点击“重启®”以重启虚拟机

  1. 重启后看到这个登录界面,说明系统已经安装成功了

  1. 点击上面菜单栏的控制,选择“正常关机”来关闭虚拟机

  1. 关机后,在主面板中找到“slave0”,右键→“复制”以进入复制向导

  1. 更改一下名称、调整到合适的路径,MAC地址设定选择为“为所有网卡重新生成MAC地址”,下一步

25.副本类型选择“完全复制”,点击复制即可开始复制

  1. 复制之后我们得到“slave1”

  1. 按同样的方法复制出“slave2”,可以根据自己的需求可以克隆自己需要的台数,这边三台即可

VMware Workstation Pro 安装Linux集群

  1. 打开VMware Workstation Pro,点击主页上的“创建新的虚拟机”

  1. 选择“自定义(高级)©”选项,下一步

  1. 虚拟机硬件兼容性保持默认,下一步

  1. 选择“稍后安装操作系统”,下一步

  1. 客户机操作系统选择“Linux”,版本选择“CentOS 7 64位”,下一步

  1. 可以给虚拟机起个名字,方便以后操作,“slave0”(slave:从机),然后选择一下虚拟机的保存位置,尽量选容量大点的磁盘,下一步

  1. 处理器配置先保持默认,后面随时可以更改,下一步

  1. 设置虚拟机运行内存大小,根据自己的电脑内存大小和同时需要启动的虚拟机数量来决定,可以使用推荐的1G,但最好使用2G及以上,后面不够用了也可以调整,这边使用2G,下一步

  1. 网络类型建议选择NAT类型,这样宿主机可以连接到虚拟机上,虚拟机也能连接到网络,而且IP地址比较稳定,下一步

  1. IO控制器保持默认,下一步

  1. 磁盘类型保持默认,下一步

  1. 需要创建一个新的磁盘,选择“创建新虚拟磁盘(V)”,下一步

  1. 设置一下虚拟机的磁盘大小,按自己的需求来,建议50GB及以上,下一步

  1. 磁盘文件名保持默认,下一步

  1. 确认配置信息没问题后点完成以创建虚拟机

  1. 创建完成后需要再做一些配置来安装操作系统,在slave0虚拟机主页点击“编辑虚拟机设置”

  1. 在虚拟机设置 → “硬件”→“CD/DVD (IDE)”中选择“使用ISO映像文件(M)”,点击“浏览(B)…”,选择到刚刚下载好的“CentOS-7-x86_64-Minimal-1810.iso”,打开,确定

  1. 回到“slave0主页”后点击“开启此虚拟机”以启动虚拟机

  1. 虚拟机启动后,鼠标点击虚拟机黑色界面进入控制虚拟机,按下向上箭头“↑”调整选项到“Install CentOS 7”选项,回车

  1. 选择一种自己喜欢的语言,点“继续©”

  1. 确认一下“日期和时间”设置得对不对,如果不对,需要手动更改一下,然后点击“安装位置(D)”以选择一个安装位置

  1. 根据自己的需求选择磁盘,这边我保持默认,直接点击“完成(D)”

  1. 出来之后点击“开始安装”以开始安装CentOS

  1. 安装过程中点击“ROOT密码”来设置一下root的密码

  1. 输入两次密码,如果密码太短,需要按两次“完成(D)”才能完成设置

  1. 安装完成后点击“重启®”以重启虚拟机

  1. 重启后看到这个登录界面,说明系统已经安装成功了

  1. 点击VMware上的暂停按钮右边的三角形,选择“关闭客户机(D)”来关闭虚拟机

  1. 点击“关机”确认关机,可以根据自己的需求勾选“不再显示此消息”

  1. 关机后,在“库”面板中找到“slave0”,右键→“管理”→“克隆”以进入克隆向导

  1. 下一页

  1. 克隆源保持默认,下一页

  1. 克隆类型建议选择“创建完整克隆(F)”,下一步

  1. 更改一下后的虚拟机名称和存储的位置,完成

  1. 完成后点“关闭”以关闭克隆虚拟机向导

  1. 这样,我们就得到了另外一台已经安装好系统的虚拟机“slave1”

  1. 以同样的方式再克隆一台虚拟机,可以根据自己的需求可以克隆自己需要的台数,这边三台即可


Linux集群网络配置

VirtualBox虚拟机网络配置

查看网络信息

  1. 点击“管理”菜单,选择“主机网络管理器”

  1. 点击里面唯一的网卡,点击“属性”,选择“DHCP服务器”选项卡,可以看到所有的网络信息

这边我的子网IP为192.168.56.0,子网掩码24位,网关是192.168.56.100,接下来将根据这些信息设置我虚拟机的网络。

启用网卡

  1. 启动虚拟机并登陆进去

  1. 使用ip addr命令查询网卡名称,我这里查询到的网卡名称是“enp0s3”和“enp0s8”

  1. 启用网卡,输入命令ifup enp0s8ifup enp0s3ifup 网卡名以启用网卡

  1. 再次使用ip addr命令查看网卡对应的IP地址,可以看到,“enp0s8”的网段与主机网络管理器中的网段为同一网段,则虚拟机是通过“enp0s8”与主机联通,而“enp0s3”则通过NAT与外网联通,因此我们为方便后期操作,只需要配置“enp0s8”为静态IP即可

  1. 配置主机网卡,使用vi编辑网卡配置文件,命令:vi /etc/sysconfig/network-scripts/ifcfg-enp0s8vi /etc/sysconfig/network-scripts/ifcfg-网卡名,进入编辑界面后(按i开始编辑),需要修改BOOTPROTO的值为static(静态IP),ONBOOT的值为yes(启用),再添加DNS1,GATEWAY和IPADDR,其中,DNS1和GATEWAY均为虚拟网络编辑器中查询到的网关地址,IPADDR设置为与虚拟网络编辑器中网关的IP同一网段的不冲突的IP地址,我的的配置如下,保存并退出(Esc→:wq→回车)

  1. 按配置主机网卡的方式编辑NAT网卡的配置,此处只需要把ONBOOT的值为yes(启用)即可,保存并退出

  1. 重启网络服务,输入命令service network restart以重启网络服务

  1. 检查IP地址是否配置成功,使用ip addr命令查看当前IP地址,可以看到,我这边配置成功

  1. 用同样的方式配置另外三台主机,分别设置好启用网卡和静态IP,我这边的IP规划为:
slave0:192.168.56.10
slave1:192.168.56.11
slave2:192.168.56.12


VMware虚拟机网络配置

查看网络信息

  1. 打开VMware,在菜单栏中选择“编辑”→“虚拟网络编辑器”以打开虚拟网络编辑器

  1. 在虚拟网络编辑器中找到并点击选择NAT模式的那张虚拟网卡,点击“NAT设置(S)…”可以在新弹出的NAT设置窗口中看到子网IP、子网掩码和网关IP

这边我的子网IP为192.168.25.0,子网掩码24位,网关是192.168.25.2,接下来将根据这些信息设置我虚拟机的网络。

启用网卡

  1. 启动虚拟机并登陆进去

  1. 使用ip addr命令查询网卡名称,我这里查询到的网卡名称是“ens33”

  1. 配置网卡,使用vi编辑网卡配置文件,命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33vi /etc/sysconfig/network-scripts/ifcfg-网卡名,进入编辑界面后(按i开始编辑),需要修改BOOTPROTO的值为static(静态IP),ONBOOT的值为yes(启用),再添加DNS1,GATEWAY和IPADDR,其中,DNS1和GATEWAY均为虚拟网络编辑器中查询到的网关地址,IPADDR设置为与虚拟网络编辑器中网关的IP同一网段的不冲突的IP地址,我的的配置如下,保存并退出(Esc→:wq→回车)

  1. 重启网络服务,输入命令service network restart以重启网络服务

  1. 检查IP地址是否配置成功,使用ip addr命令查看当前IP地址,可以看到,我这边配置成功

  1. 用同样的方式配置另外三台主机,分别设置好启用网卡和静态IP,我这边的IP规划为:
slave0:192.168.25.10
slave1:192.168.25.11
slave2:192.168.25.12

远程连接Linux虚拟机

远程连接Linux虚拟机的软件有很多,这边使用MobaXterm演示

软件下载

  1. 打开mobaxterm.mobatek.net,点击“Download”按钮

  1. 找到并点击“HomeEdition”下面的“Download now”按钮以下载免费个人版

3.点击“MobaXterm Portable v21.5”下载版本为21.5的MobaXterm免安装版,或者你也可以下载最新的免安装版,改动应该不会太大的

  1. 下载完成后,右键,解压到当前文件夹

  1. 解压后得到的这两个文件就是MobaXterm的程序了,你可以把“MobaXterm_Personal_21.5.exe”固定到开始菜单或者发送到桌面快捷方式方便使用,刚刚下载得到的压缩包可以删除了

连接Linux虚拟机

  1. 打开“MobaXterm_Personal_21.5.exe”进入到MobaXterm的主界面

  1. 点击主界面上的“Session”图标,创建一个新的会话,会话类型选择SSH,在下面的“Remote host”输入框中输入Linux主机的IP地址,为了方便,可以勾选“Specify username”(指定用户名)并输入root,以后就不用每次连接都输入用户名了

设置字体:在“Session setting”窗口点击“Terminal setting”→“Terminal font setting”,在弹出的“Terminal font selection”窗口中的Size输入框中可以指定字体的大小,默认为10,我这边基于个人习惯,设置为18,设置完成后,点OK关闭“Terminal font selection”窗口

设置会话别名:在“Session setting”窗口点击“Bookmark setting”标签,可以更改“Session name”(会话名字),为了方便,我这边改为跟主机虚拟机一样的名字(slave0),默认是192.168.25.10 (root),不方便识别,设置完成后点OK完成会话的创建

  1. MobaXterm会自动打开新添加的会话(若没有自动打开需要自己点左边的星星,然后双击打开对应名称的会话),打开后会让你输入密码,如果上一步没勾选指定用户名,还会让你输入用户名的。这边输入密码之后按回车确定

  1. 连接后会询问你是否保存密码,你可以选择保存或者不保存,为了方便,我这边选择“Yes”来保存密码

  1. 如果是第一次保存密码,还会让你设置一个主密码来加密保存你的信息,这个主密码尽量设置得复杂一点,但我为了方便,设置得简单一点。下面的“Prompt me for my master password”(何时让我输入主密码)为了方便你可以选择第一个选项,为了安全你可以选择最后一个,但比较麻烦,这边我就选择第一个选项,点OK设置主密码

  1. 连接完成,接下来就可以通过MobaXterm与Linux虚拟机进行交互了

  1. 鼠标右键功能设置:在窗口中点击鼠标右键,第一次会弹出一个框,第一个选项“Show context menu”是显示右键菜单的意思,第二个选项“Paste”是粘贴的意思,看个人习惯来,选择第一个需要粘贴时使用鼠标中键粘贴,选择第二个如果你要打开菜单得按住shift键点击鼠标右键,这边根据我的习惯,我选择第一个选项,OK

  1. 把另外两个虚拟机也按以上步骤添加进MobaXterm的会话列表中,最终可以在左边的星星面板里看到三个会话


Linux集群其他配置

关闭防火墙

为了方便Linux虚拟机之间的互联互通,最简单的方式就是把内网的防火墙关掉

临时关闭防火墙(立即生效,但重启后失效)

使用命令systemctl stop firewalld关闭防火墙,使用命令 systemctl status firewalld可以查看防火墙关闭情况

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since 日 2022-03-06 13:18:37 CST; 51s ago
     Docs: man:firewalld(1)
  Process: 6425 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 6425 (code=exited, status=0/SUCCESS)

3月 06 13:18:00 localhost.localdomain systemd[1]: Starting firewalld - dyn...
3月 06 13:18:02 localhost.localdomain systemd[1]: Started firewalld - dyna...
3月 06 13:18:36 localhost.localdomain systemd[1]: Stopping firewalld - dyn...
3月 06 13:18:37 localhost.localdomain systemd[1]: Stopped firewalld - dyna...
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]#

可以看到上面防火墙已被停掉了,成功

永久关闭防火墙(重启后生效)

永久关闭防火墙(重启后生效)

使用命令systemctl disable firewalld禁用防火墙,使用命令systemctl list-unit-files | grep firewalld可以查看防火墙是否被禁用成功

[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# systemctl list-unit-files | grep firewalld
firewalld.service                             disabled
[root@localhost ~]#

可以看到,防火墙已经被成功禁用了,成功

其他两台虚拟机使用同样的方法把防火墙给关掉

修改主机名

为了方便区分虚拟机,需要修改其主机名

使用命令hostname查看当前主机名

临时修改主机名(立即生效,但重启后失效)

使用命令hostnam 新的主机名临时修改主机名

[root@localhost ~]# hostname
localhost.localdomain
[root@localhost ~]# hostname slave0
[root@localhost ~]# hostname
slave0
[root@localhost ~]#

可以看到,修改后再查询主机名马上生效了

永久修改主机名(重启后生效)

主机名信息保存在/etc/hostname中,Linux每次开机从这个文件中读取主机名,所以我们要想达到永久修改的效果,只需要修改此文件的内容即可

[root@slave0 ~]# vi /etc/hostname 
slave0
~                                                                                                                      
~                                                                                                                      
~                                                                                                                      
"/etc/hostname" 1L, 7C written
[root@slave0 ~]# 

其他两台虚拟机使用同样的方法把主机名配置好,这边三台我分别配置为slave0、slave1和slave2

配置域名解析文件

从一台Linux连接到另外一台Linux时需要输入IP地址,然而IP地址不太方便记忆,也不方便识别,我们可以用域名来代替IP地址(浏览器通过网址而不是IP访问网站也是这个原理),每个Linux主机上有一个host文件作为本机的域名解析配置,我们可以把IP和对应的域名写入这个文件中关联起来,以后我们就可以通过域名而不是IP去连接另外的Linux虚拟机了

host文件所在路径:/etc/hosts

IP绑定域名格式:IP地址(空格)域名

[root@slave0 ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.25.10 slave0
192.168.25.11 slave1
192.168.25.12 slave2
~                                                                                                                      
~                                                                                                                      
~                                                                                                               
"/etc/hosts" 6L, 222C written
[root@slave0 ~]# 

通过以上操作,我们就成功把IP与域名绑定了,以后的slave0、slave1、slave2就分别表示192.168.25.10、192.168.25.11和192.168.25.10了

我们可以通过ping操作验证是否可用

[root@slave0 ~]# ping slave0
PING slave0 (192.168.25.10) 56(84) bytes of data.
64 bytes from slave0 (192.168.25.10): icmp_seq=1 ttl=64 time=0.016 ms
64 bytes from slave0 (192.168.25.10): icmp_seq=2 ttl=64 time=0.026 ms
64 bytes from slave0 (192.168.25.10): icmp_seq=3 ttl=64 time=0.030 ms
^C
--- slave0 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2006ms
rtt min/avg/max/mdev = 0.016/0.024/0.030/0.005 ms
[root@slave0 ~]# ping slave1
PING slave1 (192.168.25.11) 56(84) bytes of data.
64 bytes from slave1 (192.168.25.11): icmp_seq=1 ttl=64 time=0.578 ms
64 bytes from slave1 (192.168.25.11): icmp_seq=2 ttl=64 time=0.317 ms
64 bytes from slave1 (192.168.25.11): icmp_seq=3 ttl=64 time=0.728 ms
^C
--- slave1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2013ms
rtt min/avg/max/mdev = 0.317/0.541/0.728/0.169 ms
[root@slave0 ~]# ping slave2
PING slave2 (192.168.25.12) 56(84) bytes of data.
64 bytes from slave2 (192.168.25.12): icmp_seq=1 ttl=64 time=0.458 ms
64 bytes from slave2 (192.168.25.12): icmp_seq=2 ttl=64 time=0.326 ms
64 bytes from slave2 (192.168.25.12): icmp_seq=3 ttl=64 time=1.02 ms
^C
--- slave2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2011ms
rtt min/avg/max/mdev = 0.326/0.603/1.027/0.305 ms
[root@slave0 ~]# 

成功

配置免密码登录

我们可以通过ssh 域名/IP地址的方式连接到另外一台虚拟机,例如从slave0连接到slave1

[root@slave0 ~]# ssh slave1
The authenticity of host 'slave1 (192.168.25.11)' can't be established.
ECDSA key fingerprint is SHA256:brSII1Ii+yIXjzvMWG1Rxn+3vOTolPZq/rJomBVxl00.
ECDSA key fingerprint is MD5:49:0b:71:88:b6:21:4a:b3:c7:ad:79:88:78:0a:1e:5a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'slave1,192.168.25.11' (ECDSA) to the list of known hosts.
root@slave1's password: 
Last login: Sun Mar  6 13:35:22 2022 from 192.168.25.1
[root@slave1 ~]# exit
登出
Connection to slave1 closed.
[root@slave0 ~]# ssh slave1
root@slave1's password: 
Last login: Sun Mar  6 13:50:28 2022 from 192.168.25.10
[root@slave1 ~]# exit
登出
Connection to slave1 closed.
[root@slave0 ~]#

比较麻烦,第一次需要输入yes,后面每次都需要输入密码

为了方便各个虚拟机之间的互联互通,我们可以配置免密码登录

生成公钥和私钥

在slave0上使用命令ssh-keygen -t rsa生成一对秘钥(配置全保持默认,即按三次回车)

[root@slave0 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:qckAgde752zoURXjtNkmCHTTZiLKrUf1tLQPTmAa0mY root@slave0
The key's randomart image is:
+---[RSA 2048]----+
| ..+o o.+        |
|. o.Eo==**       |
| o.* B.O*oo      |
|  o.=  .*+       |
|   o...oSo       |
|  . o+.o. .      |
|   ..=+          |
|    ..+          |
|   ...           |
+----[SHA256]-----+
[root@slave0 ~]#

查看我们生成的秘钥对

[root@slave0 ~]# cd .ssh/
[root@slave0 .ssh]# ll
总用量 8
-rw-------. 1 root root 1679 3月   6 14:22 id_rsa
-rw-r--r--. 1 root root  393 3月   6 14:22 id_rsa.pub
[root@slave0 .ssh]#

可以看到,一个名为id_rsa另一个名为id_rsa.pub,其中带pub的是公钥,将id_rsa.pub追加到~/.ssh/authorized_keys文件中,配置免密登录自己,同时验证是否能用

[root@slave0 .ssh]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
[root@slave0 .ssh]# ssh slave0
Last login: Sun Mar  6 14:20:19 2022 from 192.168.25.1
[root@slave0 ~]# exit
登出
Connection to slave0 closed.
[root@slave0 .ssh]# 

能正常使用,把公钥分发给需要免密登录的机器上去

使用命令scp 文件名 域名/IP地址:目标机器文件存放位置把公钥分别传到slave1和slave2上的root用户目录下

[root@slave0 .ssh]# scp ~/.ssh/id_rsa.pub slave1:~
root@slave1's password: 
id_rsa.pub                                                                           100%  393   322.5KB/s   00:00    
[root@slave0 .ssh]# scp ~/.ssh/id_rsa.pub slave2:~
The authenticity of host 'slave2 (192.168.25.12)' can't be established.
ECDSA key fingerprint is SHA256:brSII1Ii+yIXjzvMWG1Rxn+3vOTolPZq/rJomBVxl00.
ECDSA key fingerprint is MD5:49:0b:71:88:b6:21:4a:b3:c7:ad:79:88:78:0a:1e:5a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'slave2,192.168.25.12' (ECDSA) to the list of known hosts.
root@slave2's password: 
id_rsa.pub                                                                           100%  393   385.9KB/s   00:00    
[root@slave0 .ssh]# 

然后分别到slave1和slave2上启用这个公钥(即把公钥内容追加到~/.ssh/authorized_keys这个文件中,文件默认没有需要先创建)

slave1

[root@slave1 ~]# ls
anaconda-ks.cfg  id_rsa.pub
[root@slave1 ~]# mkdir .ssh
[root@slave1 ~]# cd .ssh/
[root@slave1 .ssh]# touch authorized_keys
[root@slave1 .ssh]# cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 
[root@slave1 .ssh]# 

slave2

[root@slave2 ~]# ls
anaconda-ks.cfg  id_rsa.pub
[root@slave2 ~]# mkdir .ssh
[root@slave2 ~]# cd .ssh/
[root@slave2 .ssh]# touch authorized_keys
[root@slave2 .ssh]# cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
[root@slave2 .ssh]# 

完成以上操作后,slave0就可以免密码登录到自己、slave1和slave2了

[root@slave0 .ssh]# ssh slave0
Last login: Sun Mar  6 14:21:19 2022 from 192.168.25.1
[root@slave0 ~]# exit
登出
Connection to slave0 closed.
[root@slave0 .ssh]# ssh slave1
Last login: Sun Mar  6 14:17:58 2022 from 192.168.25.1
[root@slave1 ~]# exit
登出
Connection to slave1 closed.
[root@slave0 .ssh]# ssh slave2
Last login: Sun Mar  6 14:18:04 2022 from 192.168.25.1
[root@slave2 ~]# exit
登出
Connection to slave2 closed.
[root@slave0 .ssh]# 

按自己的需要看是否需要配置slave1和slave2免密码登录到另外两台机器上,这边我为了方便,配置slave1免密码登录到slave0和slave2,slave2免密码登录到slave0和slave1

配置SSH

如果在刚刚的免密码配置过程中发现用SSH登录到另外的虚拟机会很慢,可以配置一下SSH

会慢的主要原因是CentOS在被远程登录时会去请求DNS验证登录IP以确保安全,但我们在内网使用不必太担心这个问题,反而登录慢会影响效率,这边给它关闭一下SSH的DNS验证

修改文件

修改SSH的配置文件,SSH配置文件路径:/etc/ssh/sshd_config

[root@slave0 ~]# vi /etc/ssh/sshd_config 
.
.
.
##ShowPatchLevel no
UseDNS no
##PidFile /var/run/sshd.pid
##MaxStartups 10:30:100
.
.
.
"/etc/ssh/sshd_config" 139L, 3905C written
[root@slave0 ~]# 

使用vi的查找功能,把文件中的#UseDNS yes改为UseDNS no

重启SSH

使用命令service sshd restart重启SSH服务

[root@slave0 ~]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service
[root@slave0 ~]# 

使用同样的方式按需配置另外两台虚拟机

配置时间同步

运行在Linux上的服务器程序一般对时间的要求比较严格,至少一个集群中的时间应该是同步的

安装ntpdate

配置时间同步需要用到ntpdate,使用命令yum install -y ntpdate安装ntpdate(需要连上互联网)

[root@slave0 ~]# yum install -y ntpdate
已加载插件:fastestmirror
Determining fastest mirrors
 * base: mirrors.ustc.edu.cn
.
.
.
已安装:
  ntpdate.x86_64 0:4.2.6p5-29.el7.centos.2                                                                             

完毕!
[root@slave0 ~]# 

安装完成

同步时间

使用命令ntpdate -u ntp服务器地址来同步时间,ntp服务器可以在搜索引擎上查询到

下面是我查询到的一部分ntp服务器

https://dns.icoa.cn/ntp/

国家授时中心 NTP 服务器 ntp.ntsc.ac.cn
中国 NTP 快速授时服务 cn.ntp.org.cn
国际 NTP 快速授时服务 cn.pool.ntp.org
阿里云公共 NTP 服务器 ntp.aliyun.com
腾讯云公共 NTP 服务器 time1.cloud.tencent.com
教育网(高校自建) ntp.sjtu.edu.cn
微软 Windows NTP 服务器 time.windows.com

这边我使用阿里云的ntp.aliyun.com

[root@slave0 ~]# ntpdate -u ntp.aliyun.com
 6 Mar 15:02:57 ntpdate[8252]: adjust time server 203.107.6.88 offset 0.017084 sec
[root@slave0 ~]# 

同步成功

设置定时任务

每次都手动同步太麻烦了,我们可以设置定时任务,让它每隔一段时间同步一下

向crontab中添加定时任务

在此之前,我们得知道ntpdate的全路径,使用which ntpdate获取ntpdate的全路径

[root@slave0 ~]# which ntpdate
/usr/sbin/ntpdate
[root@slave0 ~]# 

写入/etc/crontab,设置10分钟执行一次(时间自定)

[root@slave0 ~]# vi /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

## For details see man 4 crontabs

## Example of job definition:
## .---------------- minute (0 - 59)
## |  .------------- hour (0 - 23)
## |  |  .---------- day of month (1 - 31)
## |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
## |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
## |  |  |  |  |
## *  *  *  *  * user-name  command to be executed

*/10 * * * * root /usr/sbin/ntpdate -u ntp.aliyun.com

~                                                                                                                      
~                                                                                                                      
~                                                                                                                   
"/etc/crontab" 17L, 503C written
[root@slave0 ~]# 

完成

根据以上步骤配置另外两台虚拟机自动同步时间

禁用邮件提醒

配置好时间同步后会发现有这样的一条语句提示您在 /var/spool/mail/root 中有新邮件(或者英文的)

[root@slave0 ~]# ls
anaconda-ks.cfg  id_rsa.pub
您在 /var/spool/mail/root 中有新邮件
[root@slave0 ~]# 

去掉提醒需要在/etc/profile末尾追加一行unset MAILCHECK,然后更新下环境变量

[root@slave0 ~]# vi /etc/profile
.
.
.
unset i
unset -f pathmunge

unset MAILCHECK
"/etc/profile" 78L, 1836C written
您在 /var/spool/mail/root 中有新邮件
[root@slave0 ~]# source /etc/profile
[root@slave0 ~]# 

完成,之后不再提醒有邮件

[root@slave0 ~]# ls
anaconda-ks.cfg  id_rsa.pub
[root@slave0 ~]# 

其他两台虚拟机按需配置邮件提醒

配置不用./直接执行程序

我们执行程序时需要默认加上./才能执行,不能直接执行

[root@slave0 ~]# vi hello.sh
name=luckydog
echo $name
~                                                                                                                      
~                                                                                                                      
~                                                                                                                
"hello.sh" [New] 2L, 25C written
[root@slave0 ~]# chmod +x hello.sh 
[root@slave0 ~]# hello.sh
-bash: hello.sh: 未找到命令
[root@slave0 ~]# ./hello.sh
luckydog
[root@slave0 ~]# 

为了方便,配置文件可以直接执行

  1. 编辑/etc/profile文件,在末尾加入环境变量export PATH=.:$PATH
[root@slave0 ~]# vi /etc/profile
.
.
.

unset i
unset -f pathmunge

unset MAILCHECK

## 文件可以直接执行
export PATH=.:$PATH
"/etc/profile" 81L, 1884C written
[root@slave0 ~]# 
  1. 更新环境变量source /etc/profile
[root@slave0 ~]# source /etc/profile
[root@slave0 ~]# 
  1. 查看效果
[root@slave0 ~]# hello.sh
luckydog
[root@slave0 ~]# 

成功

按自己的需要配置另外两台虚拟机


Java环境配置

服务程序大多由Java编写,所以运行时需要有Java环境,这边我使用的是JDK7u79

软件下载

  1. 打开Oracle官网oracle.com,点击“Products”→“Hardware and Software”→“Java”

  1. 点击“Download Java”按钮

  1. 切换到“Java archive”面板

  1. 往下翻,找到并点击“Java SE 7”

  1. 找到“Java SE Development Kit 7u79”面板,点击“jdk-7u79-linux-x64.tar.gz”以下载Linux 64位的gz压缩包

  1. 勾选“l reviewed and accept the Oracle Binary Code License Agreement for Java SE”(我阅读并接受了Oracle的Java SE二进制代码许可协议)后点击“Download jdk-7u79-linux-x64.tar.gz”

相关文章