一、前言在软件开发过程中,程序的运行环境多为自己的电脑,Windows、Mac或Linux操作系统,大部分时间都可以很好的运行软件.然而,有许多分布式应用程序无法在本地很好地模拟。对于这类应用,生产环境中多个节点组成一个集群,每个节点部署在不同的机器上。我们一般不会去买几台主机去部署一个私有云来模拟一个集群,因为成本太高了。因此,我认为使用虚拟机是最划算的选择,而Vagrant+VitualBox的组合是虚拟机中最方便的。二、单机虚拟机搭建1、下载并安装Vagrant+VitualBox1。Vagrant下载链接https://www.vagrantup.com/downloads.html2。VitualBox下载链接https://www.virtualbox.org/wiki/Downloads下载安装完成后,在终端运行命令vagrant-v,会出现类似如下的提示,表示安装成功。流浪者2.2.32。在Vagrant中安装BoxBox。这个概念相当于操作系统。在使用Vagrant搭建虚拟机之前,我们需要给Vagrant添加系统包。可以在VagrantCloud官方网站下找到各种版本的操作系统。以Ubuntu16.04LTS操作系统为例,对应的box命名为ubuntu/xenial64。2.1安装方法1我们可以直接运行下面的命令来添加这个Box。运行命令后,Vagrant会从远程仓库下载对应的Box~vagrantboxaddubuntu/xenial642.2安装方法2虽然上面的步骤看起来没问题,但是在实际执行过程中,Box的下载速度是非常慢,下载可能需要几天时间,所以这里需要不同的安装方法。1.首先先运行如下命令~vagrantboxaddubuntu/xenial642.运行后终端会打印类似如下的信息~vagrantboxaddubuntu/xenial64/opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/util/which.rb:37:警告:PATH中不安全的世界可写目录/Users/meetmax/test,模式040777==>box:正在为box'ubuntu/加载元数据xenial64'box:URL:https://vagrantcloud.com/ubuntu/xenial64==>box:添加box'ubuntu/xenial64'(v20190724.1.0)forprovider:virtualboxbox:Downloading:https://vagrantcloud.com/ubuntu/boxes/xenial64/versions/20190724.1.0/providers/virtualbox.box接下来按Ctrl+C中断命令,Downloading后面的链接就是下载链接。复制链接后直接粘贴到浏览器或迅雷下载即可。实际测试速度会提高很多,不出意外几分钟就可以下载下来。3、下载完成后,运行如下命令添加本地Box~vagrantboxadd/your/path/virtualbox.box--nameYourBoxName其中virtualbox.box路径改为你自己的本地路径,--name后跟Box的名称。可以自己命名,一般情况下可以和官方一致,即ubuntu/xenial64。2.3验证安装完成后,运行如下命令验证是否安装成功~vagrantboxlist终端会打印类似如下信息。3.初始化VagrantBox安装完成后运行如下命令初始化Vagrant~mkdirvagrant_test~cdvagrant_test~vagrantinitubuntu/xenial64运行完成后在vagrant_test目录下会出现一个Vagrantfile文件,终端会打印类似下面的信息。一个`Vagrantfile`被放置在这个目录中。您现在已准备好`vagrantup`您的第一个虚拟环境!请阅读Vagrantfile中的注释以及`vagrantup.com`上的文档以获取更多有关使用Vagrant的信息。Vagrantfile是与虚拟机相关的配置信息。这里我们先使用默认配置,暂时忽略。4.启动虚拟机&SSH登录4.1构建并启动虚拟机初始化完成后,在vagrant_test目录下运行如下命令构建并运行虚拟机~vagrantup出现如下信息后说明启动成功出现==>默认:机器已启动并准备就绪!==>默认:正在检查VM中的来宾添加...默认:此VM上的来宾添加与安装的默认版本不匹配:VirtualBox!在大多数情况下这很好,但在极少数情况下它可以默认:防止共享文件夹等内容正常工作。如果您看到default:sharedfolder错误,请确保default:虚拟机中的来宾添加与您在default:您的主机上安装的VirtualBox版本相匹配,然后重新加载您的VM。默认:默认:GuestAdditions版本:5.1.38默认:VirtualBox版本:6.0==>默认:安装共享文件夹...默认:/vagrant=>/Users/meetmax/vagrant/vagrant_test4.2SSH登录在Vagrant中使用SSH很简单,在vagrant_test目录下运行如下命令~vagrantssh成功后,就会进入虚拟机3.多节点虚拟集群搭建上面使用的是Vagrant的单机模式,Vagrant也支持多机模式,即单配置启动多个虚拟机,可轻松模拟服务器集群环境。集群模式和单机模式的区别只是Vagrantfile配置文件。在Vagrantfile中,我们通过循环创建多个虚拟机。1.初始化Vagrant运行如下命令初始化集群配置文件~mkdirvagrant_cluster~cdvagrant_cluster~vagrantinitubuntu/xenial642。修改Vagrantfile在构建虚拟机集群的时候,我们需要对Vagrantfile进行相应的修改。配置文件如下。Vagrant.configure("2")执行|config|(1..4).每个做|i|#定义节点变量config.vm.define"node#{i}"do|node|#盒子配置node.vm.box="ubuntu/xenial64"#设置虚拟机的主机名node.vm.hostname="node#{i}"#设置虚拟机的IPnode.vm.network"private_network",ip:"192.168.60.#{10+i}"#设置宿主机和虚拟机共享目录node.vm.synced_folder"/Users/meetmax","/home/vagrant/code"#VirtaulBox相关配置node.vm.provider"virtualbox"do|v|#设置虚拟机名称v.name="node#{i}"#设置虚拟机内存大小v.memory=2048#设置虚拟机CPU个数v.cpus=1endendendend具体虚拟机的配置请参考文件中的注释。与单台虚拟机创建不同的是,集群创建通过(1..4).each循环创建4个虚拟机节点。3.搭建并启动虚拟机集群启动集群的命令与普通命令相同。运行以下命令启动所有虚拟机节点~vagrantup启动单个节点,可以运行以下命令~vagrantupnode1其中node1为节点名。启动多个虚拟机~vagrantupnode1node24。SSH登录登录虚拟机单节点~vagrantsshnode14.常用的虚拟机管理命令启动虚拟机:vagrantup登录虚拟机:vagrantssh重启虚拟机:vagrantreload关闭虚拟机:vagranthalt销毁虚拟机:vagrantdestroy总结在资源有限的情况下,多节点虚拟机集群可以帮助我们模拟分布式环境,在虚拟机中进行各种测试,即使系统损坏,恢复容易,每个虚拟机节点都是隔离的,没有负担。希望以上对您有所帮助!
