vagrant+virtualBox快速部署集群节点

2020-09-27 694 0

简介

VirtualBox是一款开源虚拟机软件,能虚拟出window Linux等众多操作系统

Vagrant是一个基于Ruby的工具,提供基于命令和脚本的方式管理虚拟机,它会调用VirtualBox接口创建和管理虚拟机,Vagrant中有box(箱子)的概念,类似于docker中的镜像,通过box结合配置脚本就可实现虚拟机的自动化部署

在我们资源有限的情况下,通过Vagrant+VirtualBox结合可在单台机器上方便快速的搭建不同集群环境,例如在k8s的开发和测试环境上是非常有用的.

1. 安装VirtualBox

https://www.virtualbox.org/wiki/Downloads

2. 安装Vagrant

https://www.vagrantup.com/downloads

3. 单台安装

在线找到自己需要的box: centos/7
https://app.vagrantup.com/boxes/search

  • 3.1 手工下载box添加
    因为国内下载慢,所以要手工下载box

找到box下载地址拼接 providers/virtualbox.box
centos box下载地址:https://app.vagrantup.com/centos/boxes/7/versions/2004.01/providers/virtualbox.box

将下载的box添加到vagrant环境中

vagrant box add --name centos7 ./CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box

查看本地box列表

$ vagrant box list
centos7 (virtualbox, 0)
  • 3.2 初始化
    默认此命令会自动从官网下载box,但是因为网络慢,所以上一环境已手工下载好,box列表已存在名为centos7的box

    vagrant init centos7

    会在当前目录下生成默认的Vagrantfile文件,

    Vagrantfile说明:
    它可以定义一台或多台虚拟机的各种配置,如网络、内存、主机名等

    Vagrant.configure("2") do |config|
    config.vm.box = "centos7"
    end
  • 3.3 安装启动
    在Vagrantfile文件所在目录下,执行:

    vagrant up

    遇到错误信息

    Stderr: VBoxManage: error: VT-x is disabled in the BIOS for all CPU modes (VERR_VMX_MSR_ALL_VMX_DISABLED)
    VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole

    问题原因: 主板的CPU虚拟化技术没开
    1.开机按del进入bois
    2.选择Advanced(高级)
    3.找到cpu设置
    4.找到intel虚拟化技术,把它的选项打开
    5,最后F10保存,重启

  • 3.4 进入虚拟机

    vagrant ssh

4 批量节点安装

演示安装三台centos7节点,node-1 node-2 node-3

  • 4.1 定义Vagrantfile文件
    为各节配置Cpu、内存、IP、hostname 、挂载共享目录等信息

    Vagrant.configure("2") do |config|
    vms = Array(1..3)
    vms.each do |i|
        config.vm.define "node-#{i}" do |node|
            node.vm.box = "centos7"
            node.vm.hostname = "centos7-#{i}"
            node.vm.box_check_update = false 
            node.vm.network "private_network", ip: "192.168.56.20#{i}"
            node.vm.synced_folder "/home/hushow/soft/k8s/server/data", "/data"
            node.vm.provider "virtualbox" do |v|
                v.name = "centos7_#{i}"
                v.memory = 4096 
                v.cpus = 2
            end
        end
    end
    end
  • 4.2 安装和启动
    在Vagrantfile文件所在目录,执行:

    vagrant up

    虚拟机安装问题:
    file

    解决办法:

    https://github.com/dotless-de/vagrant-vbguest

    # 安装 vbguest 插件
    vagrant plugin install vagrant-vbguest
    # 重启虚拟机
    vagrant box reload
  • 4.3 安装效果
    file

  • 4.4 快速进入各虚拟机
    进入虚拟机后,IP和分配的一致,各虚拟机和宿主机是双向也是通的

    vagrant ssh node-1
    vagrant ssh node-2
    vagrant ssh node-3

5 vagrant常用命令

命令 说明
vagrant box add 添加box的操作
vagrant init 初始化box的操作,会生成vagrant的配置文件Vagrantfile
vagrant up 启动本地环境
vagrant ssh 通过 ssh 登录本地环境所在虚拟机
vagrant halt 关闭本地环境
vagrant suspend 暂停本地环境
vagrant resume 恢复本地环境
vagrant reload 修改了 Vagrantfile 后,使之生效(相当于先 halt,再 up)
vagrant destroy 彻底移除本地环境
vagrant box list 显示当前已经添加的box列表
vagrant destroy 彻底移除本地环境
vagrant box remove 删除相应的box
vagrant package 打包命令,可以把当前的运行的虚拟机环境进行打包
vagrant plugin 用于安装卸载插件
vagrant status 获取当前虚拟机的状态
vagrant global-status 显示当前用户Vagrant的所有环境状态

6 vagrant-scp 插件使用

完成虚拟机间的数据传送

  • 安装

    vagrant plugin install vagrant-scp
  • 使用

    # 在宿主机上使用
    vagrant scp ./a.txt node-1:/vagrant/a.txt

7 vagrant中推荐文件共享方式

如果可能,我们建议使用NFS而不是VirtualBox共享文件夹。您还可以使用vagrant-sshfs插件,该插件与NFS不同,可在所有操作系统上使用

https://blog.centos.org/2020/05/updated-centos-vagrant-images-available-v2004-01/

https://www.vagrantup.com/docs/synced-folders/nfs

相关文章

快速实现通用的办公文档在线预览方案
Spring Feign大文件上传踩坑记
MinIO分布式存储方案预研
Dubbo+Grpc+Spring Boot初体验
Spring Boot下grpc最佳实践
Mysql Bit类型多状态位在Java中的妙用

发布评论