大梦千秋

大梦千秋

用Vagrant搭建虚拟集群

什么是 Vagrant?#

Vagrant 是一种管理虚拟机环境的工具。

拿 VirtualBox 举例,VirtualBox 会开放一个创建虚拟机的接口,Vagrant 会利用这个接口创建虚拟机,并且通过 Vagrant 来管理,配置和自动安装虚拟机。

安装虚拟机#

VirtualBox#

VirtualBox
Vagrant 本身不提供虚拟机功能,所以需要安装一个,Vagrant 支持多种虚拟机(VirtualBox, Hyper-V, VMware ),这里我选择了 VirtualBox,下载地址

因为使用 Vagrant 进行虚拟机的管理,所以不需要对 VirtualBox 进行什么配置,默认安装即可。
我这里只修改了虚拟机的存储位置(默认在 C 盘),安装好之后打开 VirtualBox-> 管理 -> 全局设定 -> 常规 -> 默认虚拟电脑位置,改成自己喜欢的位置即可,保存之后关闭窗口,后面基本不会再用到了

Vagrant#

配置完 VirtualBox 之后就可以安装 Vagrant 了,下载地址
这里我选择 windows 64 位版,安装过程也很简单,安装完成之后需要重启一次计算机,重启之前可以设置一个环境变量,在命令行运行setx.exe VAGRANT_HOME "D:/dev/vbox/boxes",(双引号中路径可以换成自己喜欢的),否则 Vagrant 会把镜像下载在 C 盘。

运行虚拟机#

重启电脑之后就可以开始准备运行环境了
先打开命令行运行vagrant box add centos/7下载 centos7 的镜像

下载可能比较慢,先放着,然后找个自己喜欢的地方创建一个文件夹,在里面新建一个Vagrantfile文件,打开编辑,输入以下内容:

#定义三个虚拟机作为一个集群,分别是c1,c2,c3
Vagrant.configure("2") do |config|
#定义一个c1虚拟机
  config.vm.define "c1" do |c1|
    #定义c1虚拟机的hostname
    c1.vm.hostname = "centos-1"
    #使用centos/7这个镜像
    c1.vm.box = "centos/7"
    #定义网络配置,bridge后填写的是网卡名,具体可以看自己的网络配置
    c1.vm.network "public_network", bridge: "Intel(R) Wi-Fi 6 AX200 160MHz"
    c1.vm.provider "virtualbox" do |vb|
    #配置虚拟机的参数
      vb.memory = "2048"
      vb.cpus = 2
      vb.name = "k3s-1"
    end
  end
  config.vm.define "c2" do |c2|
    c2.vm.hostname = "centos-2"
    c2.vm.box = "centos/7"
    c2.vm.network "public_network", bridge: "Intel(R) Wi-Fi 6 AX200 160MHz"
    c2.vm.provider "virtualbox" do |vb|
      vb.memory = "2048"
      vb.cpus = 2
      vb.name = "k3s-2"
    end
  end
  config.vm.define "c3" do |c3|
    c3.vm.hostname = "centos-3"
    c3.vm.box = "centos/7"
    c3.vm.network "public_network", bridge: "Intel(R) Wi-Fi 6 AX200 160MHz"
    c3.vm.provider "virtualbox" do |vb|
      vb.memory = "2048"
      vb.cpus = 2
      vb.name = "k3s-3"
    end
  end
end

这里只配置了我需要的,其他配置项可以查看官方文档

等镜像下载完成之后,在命令行把路径切换到 Vagrantfile 所在的路径
运行vagrant up
vagrant 会按顺序启动三个虚拟机,如果端口没被其他程序占用的话,三个虚拟机的 ssh 端口应该分别是 2222,2200,2201,
可以对照屏幕输出日志,其中有一句SSH address: 127.0.0.1:2200

正常情况应该是三个虚拟机都成功启动,然而我就遇到了非正常情况:
日志卡在SSH auth method: private key这一句几分钟之后提示超时,问题不大,比如我在启动 c2 的时候卡住,只需按顺序运行vagrant halt c2 vagrant destroy c2 vagrant up c2 来重新创建虚拟机即可,如果 c3 还没启动,那最后再运行一下vagrant up或者vagrant up c3

启动成功之后,可以运行vagrant ssh c1 vagrant ssh c2``vagrant ssh c3来分别连接三台虚拟机,这里我对三个虚拟机分别进行了免密登录的配置之后就转到 xshell 进行操作了。

这样我们就有了一个三台服务器的集群,如果配置够高,可以多加几台。
虚拟机自然是可以随便折腾的,只要 Vagrantfile 在,一个命令vagrant up即可重建。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。