大梦千秋

大梦千秋

使用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即可重建。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。