Vagrant 单机快速模拟集群

概述

在学生时代,如果想自学 Ansible Puppet 这种部署工具,或者说 Ceph、Kubernetes 这种分布式存储系统和容器编排工具。在实习或者工作以前可能会苦于没有实战的环境。这个时候虚拟机就因运而生了,而 Vagrant 正是快速的,便于管理的虚拟机管理工具,只要你机子资源足够,用它可以很快地模拟一个小型的集群环境。

logo

安装

在 ubuntu 下,Vagrant 的安装很简单,直接用包管理工具即可:

sudo apt install virtualbox vagrant

Vagranfile

跟 Docker 与 Dockerfile 一样, Vagrant 中的虚拟机创建也需要 Vagrantfile。Vagranfile 用来定义你想要起多少台虚拟机,以及它们的配置怎样。

下面是的 Vagrantfile 演示了创建四台虚拟机来模拟集群环境。这四台虚拟机分别是一台 deploy,三个 node 节点,可以用于部署 ceph 的小型集群。

Vagrant.configure("2") do |config|
  config.vm.define "deploy" do |deploy|
    deploy.vm.provider "virtualbox" do |v|
        v.name = "deploy"
        v.memory = 512
        v.cpus = 1
    end
    deploy.vm.box = "debian/stretch64"
    deploy.vm.hostname = "deploy"
    deploy.vm.network :private_network, ip: "10.1.0.4"
  end
end

Vagrant.configure("2") do |config|
  (1..3).each do |i|
    config.vm.define "node#{i}" do |node|
      node.vm.box = "debian/stretch64"
      node.vm.hostname="node#{i}"
      node.vm.network "private_network", ip: "10.1.0.#{i}"
      node.vm.provider "virtualbox" do |v|
        v.name = "node#{i}"
        v.memory = 512
        v.cpus = 1
      end
    end
  end
end

语法还是比较易懂的,下面介绍其中几个比较关键的句法:

deploy.vm.provider

这句指定了虚拟机的提供者是。本例中是 virtualbox。需要注意的是 Vagrant 只是虚拟机的编排工具,而它本身并不提供虚拟技术,需要跟其他虚拟机软件结合,例如:virtualbox、libvirt。接下来的 v 就是对这台虚拟机的设置。

  • v.name:virtualbox 中这台虚拟机的名字。
  • v.memory:该虚拟机的内存大小,单位是 MB。
  • v.cpus:该虚拟机的 CPU 核数。

vm.box

该虚拟机的初始化镜像名称,这里是 Debian9。

vm.hostname

该虚拟机的主机名,很重要,ssh 连接时用的就是这个名字。请起一个有意义的名字,不然以后又得重设啦。

vm.network

网络设置,Vagrant 有三种网络设置模式:

forwarded_port

这种方式把本机和虚拟机的端口进行映射,例如:

config.vm.forwarded_port 80, 8080`

这是把虚拟机的 80 端口映射到宿主机的 8080 端口,这样访问宿主机的 8080 端口就相当于访问虚拟机的 80 端口了。

private_network

这种方式是私有网络,只允许宿主机访问虚拟机。如果多个虚拟机设定在同一个网段,那么几个虚拟机之间也可以互相访问。相当于搭建了个小型集群。

public_network

这种方式虚拟机的网络配置跟宿主机的网络配置一样,在外网别可以像访问宿主机一样访问虚拟机。

启动虚拟机

之前介绍的,就是本地搭建集群所需掌握的 Vagrantfile 文件格式的基本内容了。下面介绍如何从这个配置文件来启动这组虚拟机。

将上面的文件保存为 Vagranfile,然后在 Vagranfile 文件所在目录执行:

vagrant up

启动虚拟机

喝一杯茶的时间,四台虚拟机就创建完毕了~是不是很简单呢。

启动结果

使用虚拟机

前面说过要连接虚拟机,是要使用虚拟机的主机名,比如:

vagrant ssh deploy

这句命令会以 vagrant 的用户登录到 deploy 虚拟机节点,然后可以用 sudo su 命令获得 root 权限。

用一下指令可以查看虚拟机的 ssh 配置详细情况:

vagrant ssh-config

ssh 配置

可以看到连接虚拟机的端口,密钥文件位置,因此我也可以用这条命令来连接 deploy:

ssh -i /home/imquanquan/vagrant/.vagrant/machines/deploy/virtualbox/private_key vagrant@127.0.0.1 -p 2222

当我们想暂时关闭虚拟机时可以:

vagrant halt

这个命令会关掉整组虚拟机,要是我们只想关掉 deploy 可以用:

vagrant halt deploy

当我们玩腻了,想要删掉虚拟机可以:

vagrant destroy

删除

Vagrant 会每台机子询问一遍,你需要打 4 个 y 来删除这四台机子。

参考资料

  • 3 Vgrant使用入门
  • vagrant使用三种网络配置
Vagrant 单机快速模拟集群

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/47579.html

(0)
上一篇 2021年8月6日
下一篇 2021年8月6日

相关推荐

发表回复

登录后才能评论