什麼是 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
即可重建。