虚拟机-vagrant&virtualBox使用说明

vagrant是一个工具,用于创建和部署虚拟化开发环境的,能与virtualVM、virtualBox等虚拟机软件搭配使用。

拿VirtualBox举例,VirtualBox会开放一个创建虚拟机的接口,Vagrant会利用这个接口创建虚拟机,并且通过Vagrant来管理,配置和自动安装虚拟机。

  • 安装最新版virtualBox

  • 安装最新版vagrant

1、创建虚拟机

首先下载镜像,我们使用vagrant box add 命令进行下载

Vagrant 的 box,是一个打包好的单一文件,其中包含了一个完整系统的虚拟机相关数据。

1
2
3
4
5
6
# 添加virtualBox,名字可自定义,使用官方的命名不需要url,下载速度慢,建议使用国内镜像源下载
vagrant box add {name} {url}
# 列出已下载所有的virtualBox
vagrant box list
# 移除指定的virtualBox
vagrant box remove {name}

本文使用中国科技大学的centos7镜像源,在cmd任意目录下执行:

1
vagrant box add centos7 http://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7-x86_64-Vagrant-1708_01.VirtualBox.box

在用户目录下新建文件夹 如:E:/vagrant/,在目录下执行

1
vgrant init

会生成一个vagrantfile文件,该文件是将要创建的虚拟机属性配置文件,如下修改文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Vagrant.configure("2") do |config|
(1..3).each do |i|
config.vm.define "node#{i}" do |node|
# 设置虚拟机的Box
node.vm.box = "centos7"

# 设置虚拟机的主机名
node.vm.hostname="node#{i}"

# 设置虚拟机的IP
node.vm.network "public_network", ip: "192.168.2.#{200+i}"

# VirtaulBox相关配置
node.vm.provider "virtualbox" do |v|
# 设置虚拟机的名称
v.name = "node#{i}"
# 设置虚拟机的内存大小
v.memory = 2048
# 设置虚拟机的CPU个数
v.cpus = 1
end
end
end
end

保存后,在当前目录执行

1
vagrant up

vagrant会根据vagrantfile创建3台虚拟机并启动,本文将采用桥接网卡的网络模型,因此在virtualBox中将虚拟机关闭之后,对网络进行设置,取消默认勾选的NAT网络,只剩下桥接网卡。

2、网络模型选择

2.1 网络选型原则

​ 第一:每个网络只负载一种业务类型的数据流量,功能单一化。例如连接外网用一个网络、虚拟机之间互通用一个网络、虚拟机与主机之间互通又是一个网络。这样的话可使每种网络上的数据流量比较纯净,同时也可以避免因为网络故障而影响到全部的业务。

​ 第二:在保证网络功能的前提下,单一的网络要保证最小的连通性、最大的隔离性。比如用于连接外网的网络,最好禁止掉连通宿主机,其它虚拟机这种额外的功能,可最大程序的提高效率。

​ 第三:网络的独立性。当有多种技术可以达成某种网络功能时,选型时应选择对外部环境依赖程度最小、独立性最高的实现方式,避免因外宿主机换了一个无线网络环境,而影响到在宿主机上虚拟出来的网络。

​ 第四:最后一条就是效率。当有多种选择时,数据流动路径最短的那一种,往住是效率最高的一种。

2.2 四种网络模式连通性汇总列表

“o”表示连接,“x”表示不通。前提条件是用VirtualBox创建出网络后,没有进行额外的配置,NAT网络没有进行端口映射、仅主机网络没有进行连接共享等。理论上,通过一定的技术手段,所有的模式对所有的网络都是可以连通的。

2.3 VirtualBox四种网络模式独立性

独立性即对外部环境依赖性,分成高、中,低三档,越高说明越依赖于外部环境。

2.4 四种网络模式的典型应用

例如想用VirtualBox创建虚拟机,以安装部署OpenStack,那么应该用VirtualBox创建四个网络,每个网络都有单独的目的,每种网络各司其职,同时对外部的依赖性降到最低。

3、远程登录

本文选用的桥接网卡,虚拟机将与宿主机共享网络,在一个网络之中的设备(宿主机以及同一路由器下的设备)都能使用桥接网卡的ip地址远程登录到虚拟机中,端口默认22,可以自行修改。

在登陆之前需要修改虚拟机sshd配置

1
2
3
4
5
6
vim /etc/ssh/sshd_config
# 修改项如下
PasswordAuthentication=yes

#重启sshd服务
service sshd restart

笔者宿主机ip为192.168.2.110

查看node1虚拟机桥接网卡ip为 192.168.2.112,因此执行

1
ssh -p 22 root@192.168.2.112

输入密码完成登录。

参考:

VirtualBox四种网络模式及典型配置