VagrantFile配置多台虚拟机

1,345 阅读1分钟

这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战

因想要练习搭建WEB集群和Mysql主从复制等,需要在本地模拟出几台虚拟机。这里使用VirtualBoxVagrant搭建虚拟机,使用Vagrant能够方便的管理虚拟机,不用对底层的VirtualBox做什么操作,利用Vagrant box镜像能够快速的创建虚拟机。这样创建多个虚拟机后,每次练习时都要一个一个start、halt,这样很繁琐,所以想要统一启动、关闭、挂起、恢复。经过资料查找,可以在一个VagrantFile配置文件中配置多台虚拟机,具体步骤如下:

创建VagrantFile

$ vagrant box add centos65 /path/to/centos65.box
$ mkdir cluster ; cd cluster
$ vagrant init centos65

这样会在cluster目录下生成配置文件Vagrantfile

修改配置文件

这里暂且创建主机名为webredismasterslave的四个虚拟机,Vagrantfile配置如下:

	Vagrant.configure("2") do |config|
	  config.vm.define :web do |web|
	    web.vm.provider "virtualbox" do |v|
	          v.customize ["modifyvm", :id, "--name", "web", "--memory", "512"]
	    end
	    web.vm.box = "centos65"
	    web.vm.hostname = "web"
	    web.vm.network :private_network, ip: "192.168.33.11"
	    web.vm.synced_folder "/Users/xxx/Code/cluster", "/data/www"
	    web.vm.network "forwarded_port", guest: 80, host: 8080
	  end
	
	  config.vm.define :redis do |redis|
	    redis.vm.provider "virtualbox" do |v|
	          v.customize ["modifyvm", :id, "--name", "redis", "--memory", "512"]
	    end
	    redis.vm.box = "centos65"
	    redis.vm.hostname = "redis"
	    redis.vm.network :private_network, ip: "192.168.33.12"
	  end
	
	  config.vm.define :master do |master|
	    master.vm.provider "virtualbox" do |v|
	          v.customize ["modifyvm", :id, "--name", "master", "--memory", "512"]
	    end
	    master.vm.box = "centos65"
	    master.vm.hostname = "master"
	    master.vm.network :private_network, ip: "192.168.33.13"
	  end
	
	  config.vm.define :slave do |slave|
	    slave.vm.provider "virtualbox" do |v|
	          v.customize ["modifyvm", :id, "--name", "slave", "--memory", "512"]
	    end
	    slave.vm.box = "centos65"
	    slave.vm.hostname = "slave"
	    slave.vm.network :private_network, ip: "192.168.33.14"
	  end
	end

其中web虚拟机将Nginx的网站目录同步到本机目录,80端口转发到本机8080端口,方便调试。这样再添加虚拟机时只需复制粘贴一段,修改主机名和IP即可。

启动连接虚拟机

配置好Vagrantfile后即可使用vagrant up同时启动四个虚拟机,并且使用vagrant ssh 主机名进入系统。

$ cd cluster
$ vagrant up
$ vagrant ssh web

常用命令

启动虚拟机

$ vagrant up

关闭虚拟机

$ vagrant halt

挂起虚拟机

$ vagrant suspend

恢复虚拟机

$ vagrant resume

查看状态

$ vagrant status