背景
服务器开发现在经常涉及分布式系统,不再是仅仅管理好自己的进程就可以了,需要管理进程间的协作,服务器间的协作。这就需要启动多个 vm,没有一个自动化的方案,这个过程会非常烦人。
vagrant 是专门解决此问题的利器。
安装
- 首先我们要安装 VirtualBox,免费的虚拟机。当前版本 5.0.0。
- 然后下载安装 vagrant,命令行下管理虚拟机的工具。当前版本 1.7.4。
- VirtualBox 的虚拟机(guest)要想直接与宿主机器的文件系统交互,需要安装 guest addition。如果我们要给每个虚拟机来收工安装它,自动化还从何说起?安装插件 vagrant-vbguest。
shell
vagrant plugin install vagrant-vbguest
配置
接着需要创建一个工程目录,如 vm-run
,把自己对于这个 vm 的设置都放在这里。
我们要创建一个 Vagrantfile 的配置文件,来配置这个 vm 集群,这里将包括有几个 vm,它们从哪里安装系统(image)、它们的 ip 地址等基本配置。例如:
text
# -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" box_url = "https://github.com/kraksoft/vagrant-box-ubuntu/releases/download/14.04/ubuntu-14.04-amd64.box" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.ssh.insert_key = false config.vm.provider "virtualbox" do |v| v.memory = 2048 end config.vm.define "node1" do |node| node.vm.box = "ubuntu14" node.vm.box_url = box_url node.vm.network "private_network", ip: "192.168.50.4" end config.vm.define "node2" do |node| node.vm.box = "ubuntu14" node.vm.box_url = box_url node.vm.network "private_network", ip: "192.168.50.5" node.vm.network "forwarded_port", guest: 5555, host: 12201, protocol: 'tcp' end config.vm.define "node3" do |node| node.vm.box = "ubuntu14" node.vm.box_url = box_url node.vm.network "private_network", ip: "192.168.50.6" end end
创建了三个 vm。
使用
- 一切完成后,我们可以用
vagrant up
来启动整个集群! - 你可以用
ssh -i ~/.vagrant.d/insecure_private_key vagrant@192.168.50.4
来连接 vm,也可以更简单,用vagrant ssh node1
来登入。 -
vagrant suspend
将集群暂停。 - 如果集群有问题,或者我们需要确保一个全新的集群,
vagrant destroy -f
可以删除全部 vm。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。