文章目录
如何完美的克隆虚拟机模板机创建集群
问题
当我们在学习中想要搭建集群时,克隆一台虚拟机模板无疑是最快的方式,那么,该如何完美的克隆呢?下面给出详细步骤
本文章中克隆的虚拟机都另外创建新的用户名:lyxiho
步骤1:创建自己的用户名(如果不想创建自己的用户名,可跳转到步骤2)
-
打开模板虚拟机,创建用户
[root@hadoop100 ~]$ useradd lyxiho (用户名) [root@hadoop100 ~]$ passwd lyxiho (为该用户创建密码)
-
为创建的用户赋予root权限
修改配置文件
[root@hadoop100 ~]$ vi /etc/sudoers
在%wheel这行下面添加一行,如下所示
## Allow root to run any commands anywhere root ALL=(ALL) ALL ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL lyxiho ALL=(ALL) NOPASSWD:ALL
注:有些教程是添加到root的下一行,但是所有用户都属于wheel组,你先配置了lyxiho具有免密功能,但是程序执行到%wheel行时,该功能又被覆盖回需要密码。所以lyxiho要放到%wheel这行下面。
-
克隆的虚拟机中已经创建好
/opt/software和/opt/module
这两个文件夹,但我们创建自己的用户名需要修改这两个文件夹的所属[root@hadoop100 ~]$ sudo chown lyxiho:lyxiho /opt/software/ [root@hadoop100 ~]$ sudo chown lyxiho:lyxiho /opt/module/
到这里就已经完成了创建自己的用户名。
步骤2:克隆所需要的虚拟机(这里以克隆三台演示)
- 克隆三台虚拟机,分别命名
hadoop102、hadoop103、hadoop104
,注意克隆时关闭模板机
步骤3:完成虚拟机的网络配置
-
克隆完成后打开三台虚拟机,修改网络配置
修改克隆机IP,以下以hadoop102举例说明,后续两台依次修改为103,104即可
(1)修改克隆虚拟机的静态IP
[lyxiho@hadoop100 ~]$ sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
改成
DEVICE=ens33 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static NAME="ens33" IPADDR=192.168.10.102 PREFIX=24 GATEWAY=192.168.10.2 DNS1=192.168.10.2
(2)保证Linux系统ifcfg-ens33文件中IP地址、虚拟网络编辑器地址和Windows系统VM8网络IP地址相同。(一般无需操作)
-
修改虚拟机主机名
[lyxiho@hadoop100 ~]$ sudo vim /etc/hostname hadoop102
-
配置Linux克隆机主机名称映射hosts文件,打开/etc/hosts
[lyxiho@hadoop100 ~]$ sudo vim /etc/hosts
添加如下内容
192.168.10.102 hadoop102 192.168.10.103 hadoop103 192.168.10.104 hadoop104
-
重启克隆机hadoop102
[lyxiho@hadoop100 ~]$ sudo reboot
-
修改windows的主机映射文件(hosts文件)
①进入
C:\Windows\System32\drivers\etc
路径②打开hosts文件并添加如下内容,然后保存
192.168.10.102 hadoop102 192.168.10.103 hadoop103 192.168.10.104 hadoop104
步骤4:编写集群分发脚本xsync
-
在用的家目录/home/lyxiho下创建bin文件夹
[lyxiho@hadoop102 ~]$ mkdir bin
-
在
/home/lyxiho/bin
目录下创建xsync文件,以便全局调用[lyxiho@hadoop102 ~]$ cd /home/lyxiho/bin [lyxiho@hadoop102 ~]$ vim xsync
添加如下内容:(注意遍历机器时要修改机器名称与自己的主机名称相同)
#!/bin/bash #1. 判断参数个数 if [ $# -lt 1 ] then echo Not Enough Arguement! exit; fi #2. 遍历集群所有机器 for host in hadoop102 hadoop103 hadoop104 do echo ==================== $host ==================== #3. 遍历所有目录,挨个发送 for file in $@ do #4 判断文件是否存在 if [ -e $file ] then #5. 获取父目录 pdir=$(cd -P $(dirname $file); pwd) #6. 获取当前文件的名称 fname=$(basename $file) ssh $host "mkdir -p $pdir" rsync -av $pdir/$fname $host:$pdir else echo $file does not exists! fi done done
-
赋予脚本执行权限
[lyxiho@hadoop102 bin]$ chmod 777 xsync
-
测试脚本,将该脚本分发到另外两台机器
[lyxiho@hadoop102 bin]$ xsync xsync
步骤5:配置SSH免密登录
-
hadoop102上生成公钥和私钥:
[lyxiho@hadoop102 .ssh]$ cd .ssh [lyxiho@hadoop102 .ssh]$ ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
-
将hadoop102公钥拷贝到要免密登录的目标机器上
[lyxiho@hadoop102 .ssh]$ ssh-copy-id hadoop102 [lyxiho@hadoop102 .ssh]$ ssh-copy-id hadoop103 [lyxiho@hadoop102 .ssh]$ ssh-copy-id hadoop104
其余两个机器相同操作即可
结语
完成以上操作,即可完成对模板虚拟机的完美克隆,本人正在学习B站尚硅谷的大数据教程,根究自己克隆配置虚拟机时出现的问题,将尚硅谷的文档整合了起来,大概分为这些步骤。如有错误以及不妥的地方,欢迎大家指正