大梦千秋

大梦千秋

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を実行して、CentOS 7 のイメージをダウンロードします。

ダウンロードには時間がかかるかもしれませんが、その間に好きな場所にフォルダを作成し、その中にVagrantfileというファイルを作成します。ファイルを開いて編集し、以下の内容を入力します:

# 3つの仮想マシン(c1、c2、c3)をクラスターとして定義します
Vagrant.configure("2") do |config|
# c1仮想マシンを定義します
  config.vm.define "c1" do |c1|
    # c1仮想マシンのホスト名を定義します
    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 は 3 つの仮想マシンを順番に起動します。ポートが他のプログラムに使用されていない場合、3 つの仮想マシンの SSH ポートはそれぞれ 2222、2200、2201 になるはずです。画面の出力ログを参照してください。SSH address: 127.0.0.1:2200という行があります。

通常、3 つの仮想マシンが正常に起動しますが、私は正常な状態ではありませんでした:
ログはSSH auth method: private keyという行で数分間停止し、タイムアウトのメッセージが表示されました。問題ありません。例えば、c2 の起動が停止した場合、vagrant halt c2vagrant destroy c2vagrant up c2の順に実行して仮想マシンを再作成するだけです。c3 がまだ起動していない場合は、最後にvagrant upまたはvagrant up c3を実行します。

起動が成功したら、vagrant ssh c1vagrant ssh c2vagrant ssh c3を実行して、それぞれの仮想マシンに接続できます。私は 3 つの仮想マシンに対してパスワードなしでログインする設定を行った後、Xshell で操作を行いました。

これで、3 つのサーバーからなるクラスターができました。十分な設定があれば、さらにいくつか追加することもできます。
仮想マシンは自由に操作できます。Vagrantfile があれば、vagrant upコマンドで簡単に再構築できます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。