背景

服务器开发现在经常涉及分布式系统,不再是仅仅管理好自己的进程就可以了,需要管理进程间的协作,服务器间的协作。这就需要启动多个 vm,没有一个自动化的方案,这个过程会非常烦人。

vagrant 是专门解决此问题的利器。

安装

  1. 首先我们要安装 VirtualBox,免费的虚拟机。当前版本 5.0.0。
  2. 然后下载安装 vagrant,命令行下管理虚拟机的工具。当前版本 1.7.4。
  3. VirtualBox 的虚拟机(guest)要想直接与宿主机器的文件系统交互,需要安装 guest addition。如果我们要给每个虚拟机来收工安装它,自动化还从何说起?安装插件 vagrant-vbguest。
shellvagrant 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。

robertluo
738 声望21 粉丝

« 上一篇
Midje 测试框架
下一篇 »
docker 简介

引用和评论

0 条评论