仮想マシン
 Computer >> コンピューター >  >> ソフトウェア >> 仮想マシン

Vagrant &CoreOS クラスタとネットワーキング

暖かくなる。タイム スライダーの数日後、私は Vagrant を紹介しました。これは、VirtualBox、KVM などのより複雑であると思われる他のソフトウェアの適切で整然としたラッパーになることで大きな目標を達成する仮想化ソリューションです。さらに、Docker コンテナーのサポートとクラウド サーバー環境を提供することで、シニア リーグでプレーしています。

このモデルを拡張して、非常に曇った、わずかに異なるユースケースについて説明します。前の演習で使用した CoreOS は、クラウド マニアを利用しようとするもう 1 つのプレーヤーであり、いくつかの非常に優れたクラスター機能と自動化を提供します。今日は、クラスターを起動する方法を学び、ネットワーキングの部分について説明します。これはやや無視されており、元のドキュメントでもあまり説明されていません。だから私に従ってください。

ディスカバリー トークンのセットアップ

前回、Powershell を使用して Windows で Vagrant を意図的に試したときとは異なり、さまざまな方法で実行できるサンプルを提供するために、現在の演習は Linux、より正確には Xubuntu Vivid で行われます。

公式ガイドに従えば、Vagrant 用に CoreOS をセットアップすることはそれほど難しくありませんが、オンライン リファレンスに記載されているように簡単ではありません。始めるのは明らかに焦りがありますが、それはうまくいきます。

リポジトリのクローンを作成すると、いくつかのファイルを自由に使用できるようになります。これらのファイルを少し編集して、Vagrant を初期化して起動できるようにする必要があります。最初に、user-data.sample ファイルを編集して名前を user-data に変更する必要があります。最も注目すべきは、トークン ピース:

#cloud-config

コアオス:
など:
# からの一意のクラスタごとに新しいトークンを生成します
https://discovery.etcd.io/new?size=3
# ?size=X でクラスターの初期サイズを指定します
# 警告:'vagrant destroy' するたびに置き換えてください
発見:https://discovery.etcd.io/<トークン>

基本的に、CoreOS はトークンと呼ばれる一意の識別子を使用して、実行中のインスタンスが互いに識別できるようにします。同じトークンを持つすべてのホストは同じ群れに属しているため、etcd 共有構成および検出サービスを使用して一元的に制御できます。

https://discovery.etcd.io/new?size=<サイズ>

上記の URL にアクセスし、目的のクラスター サイズを指定することで、独自のものを使用するか、新しいものを生成できます。デフォルトの構成は 3 つのホストです。生成されたトークンを書き留めて、構成ファイルに追加します。例:

https://discovery.etcd.io/21e4099c23b52a8403640c2d48cdca6f

これがなぜ重要なのかは後で説明します。

クラスターのセットアップ

2 番目の部分は、Vagrant の起動時に実行する CoreOS のインスタンスの数を定義することです。全体的にシンプルな構成です。変更は、複製された Git ディレクトリ内の config.rb.sample ファイルに追加し、config.rb の名前を変更する必要があります。ユニークで特別なものにするために、4 つのインスタンスで試します。

# Vagrant によって作成された CoreOS クラスターのサイズ
$num_instances=X

クラスタを開始

これで、Vagrant を実行できます。オンライン リポジトリのクローンを作成した場合、現在のディレクトリにデフォルトの Vagrant 構成ファイルが既に存在するため、vagrant init を試行すると失敗するはずです:

浮浪者の初期化
このディレクトリには「Vagrantfile」が既に存在します。前に削除してください
「vagrant init」を実行しています。

VirtualBox または別の関連する仮想化ソフトウェアがインストールされていない場合、プログラムを起動しようとすると別のエラーが発生します。これらの小さな問題を事前に解決してください。

浮浪者
マシンをバックアップするように要求されたプロバイダー「virtualbox」
「core-01」は、このシステムでは使用できないと報告しています。の
理由を以下に示します。

Vagrant は VirtualBox を検出できませんでした! VirtualBox が正しくインストールされていることを確認します。 Vagrant は、VirtualBox に同梱されている「VBoxManage」バイナリを使用し、これを PATH で使用できるようにする必要があります。 VirtualBox がインストールされている場合は、「VBoxManage」バイナリを見つけて PATH 環境変数に追加してください。

この作業が正常に完了すると、Vagrant が起動し、CoreOS インスタンスが 1 つずつ作成されます。これには時間がかかる場合があり、大規模なクラスターに対応するには、適切なネットワーク帯域幅と十分なメモリが必要です。

浮浪者
「virtualbox」プロバイダーでマシン「core-01」を起動しています...
「virtualbox」プロバイダーでマシン「core-02」を起動しています...
「virtualbox」プロバイダーを使用してマシン「core-03」を起動しています...
「virtualbox」プロバイダーを使用してマシン「core-04」を起動しています...
==> core-01:ボックス 'coreos-alpha' が見つかりませんでした。検索してインストールしようとしています...
core-01:ボックス プロバイダー:virtualbox
core-01:ボックス バージョン:>=308.0.1

==> core-04:ベースボックス 'coreos-alpha' をインポートしています...
==> core-04:NAT ネットワークの MAC アドレスが一致しています...
==> core-04:ボックス 'coreos-alpha' が最新かどうかを確認しています...
==> core-04:VM の名前の設定:coreos-vagrant_core-04_1431799934824_55775
==> core-04:22 => 2222 のポート衝突を修正しました。現在はポート 2202 です。
==> core-04:以前に設定されたネットワーク インターフェイスをクリアしています...
==> core-04:構成に基づいてネットワーク インターフェイスを準備しています...
core-04:アダプター 1:nat
core-04:アダプター 2:ホストのみ
==> core-04:ポートを転送しています...
core-04:22 => 2202 (アダプター 1)
==> core-04:「起動前」の VM カスタマイズを実行しています...
==> core-04:VM を起動しています...
==> core-04:マシンの起動を待っています。これには数分かかる場合があります...
core-04:SSH アドレス:127.0.0.1:2202
core-04:SSH ユーザー名:コア
core-04:SSH 認証方式:秘密鍵
core-04:警告:接続タイムアウト。再試行しています...
==> core-04:マシンが起動し、準備完了!
==> core-04:ホスト名を設定しています...
==> core-04:ネットワーク インターフェイスの設定と有効化...
==> core-04:プロビジョナーを実行中:ファイル...
==> core-04:プロビジョナーを実行中:シェル...
core-04:実行中:インライン スクリプト

システムがすべて作成されたら、vagrant status を実行して、既存のマシンとその現在の状態で必要なすべての情報を取得できます。

ネットワーキング

次に、本当に興味深い部分です。 4 つの仮想マシンがあります。しかし、どうやってそれらに接続するのでしょうか? Docker をテストするときも同様のジレンマがありましたが、その後、回避策を見つけました。ここでも、同じロジックが適用されます。

まず、vagrant ssh コマンドを使用して、実行中の各マシンに接続できます。これにより、すべてのキーとその他の処理が行われます。複製したディレクトリからこれを実行する必要があります。そうしないと、エラーが発生します:

vagrant ssh core-02 -- -A
これを実行するには、Vagrant 環境またはターゲット マシンが必要です。
指図。 「vagrant init」を実行して、新しい Vagrant 環境を作成します。または、「vagrant global-status」からターゲット マシンの ID を取得して、このコマンドを実行します。最後のオプションは、Vagrantfile のあるディレクトリに変更して、再試行することです。

しかし、正しいディレクトリでは問題なく動作するはずです:

ifconfig を実行すると、すべてのマシンがおそらく同じ IP アドレスを持ち、それらの間でルーティングできないことがわかります。さらに、VirtualBox インターフェースは 172.0.0.1 セグメントで実行されるため、これが少し難しくなります。繰り返しますが、Docker の場合と同様です。

いつでも VirtualBox の内部ネットワーク範囲を使用して、それに応じてファイアウォール ルールとルーティングを調整できます。ただし、この方法では、どの仮想マシンがどの特定の IP アドレスを使用しているかを実際に知ることはできません。また、その場で簡単に判断することもできません。つまり、これらの数値をどこからともなく解析することはできず、正しい情報を取得するためのより洗練された方法がいくつかあります。

localhost 経由で接続

起動時に、Vagrant が各仮想マシンの SSH を localhost で実行するように設定し、2200 (または同様の) から始まる異なるポートを使用したことを覚えている場合。したがって、クライアントに SSH 接続する必要があります。次のオプションを使用できます:

ssh 127.0.0.1 -p 2202
ホスト '[127.0.0.1]:2202 ([127.0.0.1]:2202)' の信頼性を確立できません。
ED25519 キー フィンガープリントは 32:a0:57:58:b3:55:fc:03:c8:89:7d:7c:cc:6f:85:9d です。
接続を続行しますか (はい/いいえ)?

どこでも IP アドレス経由で接続

ただし、上記の方法は VM 間の通信では機能せず、別の方法が必要です。これは、ディスカバリーピースが非常に便利な場所です。クラスターが実行されたら、その URL に再び移動できます。これで、醜いが便利な JSON が入力されます:


キーと値に注意してください。各エントリには、172.17.8.103 などの IP アドレスがあり、この出力から解析できます。優秀な。これで内部アドレスがわかったので、それらを使用してクライアントに直接接続し、さらに重要なことに、クライアントがピアと通信できるようにします。

1 つ欠けているのは、コア ユーザーのパスワードがわからないことです。そのため、vagrant.d サブディレクトリ内にある提供されたキーを使用します。キーを追加すると、シームレスに接続できます。これは最初のガイドで見ました。

ポート転送

ボックスの構成部分にはあまり手を出していませんが、この時点で、実行中のインスタンスの IP アドレスがわかったので、本当にクリエイティブになり始めることができます。たとえば、ポート フォワーディングは、サービスを実行する仮想マシンにとって非常に価値があります。

必要な変更は、Vagrantfile 内のディレクティブとして提供する必要があります。 Dockerfile のように、複数のセットアップに対して複数の構成を使用できます。たとえば、HTTPS ポートの転送は次のようになります:

config.vm.forward_port 443、<ホスト ポート>

私の Docker 記事に従っている場合は、すべてが非常に簡単です。ホスト ポート、クライアント ポート、およびボブの叔父さんです。ボックスごとに複数の宣言があります。次に、システムを完全に制御する必要がある場合は、ファイアウォール ルールを手動で構成することもできます。繰り返しますが、これは単なるティーザーであり、将来的にこれをいじるのにより多くの時間を費やします.

もちろん、次のステップは Docker をプラグインすることです。これはおそらく偶然ではなく、同様のデフォルト範囲を使用して、クラスター、コンテナー、並列実行、およびその他の高度な概念を試してみることができます。これが、Vagrant にプラグインが付属している理由です。これについては、別の記事で説明します。とにかく、作業が完了したら、インスタンスを破棄してください。

続きを読む

Dedoimedo の鍛冶場からのいくつかの特別な良いもの:

CoreOS クイックスタート ガイドは次のとおりです。少し重いかもしれません

etcd に多少似た機能を提供する、supervisord チュートリアル

KVM と VirtualBox のサイド バイ サイド構成の微調整

結論

Vagrant は、CoreOS と同様に、興味深く、ワイルドで、反抗的なアイデアのように思えます。それらがビジネス環境でどれほどの価値を持っているかはまだわかりませんが、実際の作業の悲惨な詳細を隠すラッパー技術は急成長し、常に人気が高まっているようです.誰もがフロントエンド ツールとオーケストレーション ツールを求めていますが、唯一の問題は、市場が非常に気まぐれで不安定であり、標準がなく、人々が Python、Ruby、JSON などの醜いものを使用していることです。でも気にしないで。

私たちはまた別の恐怖の未知の部分を征服しました。あなたは Vagrant と CoreOS の両方にいくらか精通しています。次の作業は、これらのクラスター サービスなどのいくつかを試してみるからです。そして、それはほんの始まりに過ぎません。

私はすべてをやらなければならないので、今後数か月で、Fleet、Kubernets、Mesos、Etch、およびその他の多くのクールなプロジェクトを含むがこれらに限定されない、ほとんどすべてを検討する予定です。また、CoreOS などをクラウド プロバイダーに結び付け、分散型および並列ファイル システムをいじり、Jenkins や Ansible などの自動化ツールをいじり、さらに多くの名前を落として吐き気を催させる話題を提供します。乞うご期待。

乾杯。


  1. ESXi のヒントとコツ

    私は、ESX にデドイメドについてあまりスポットライトを当てていませんでした。私たちはそれをすぐに修正します。 ESXi で仮想マシンのクローンを作成する方法に関する簡単なチュートリアルの後、VMware の利点をさらに紹介します。 ESXi は無料で提供されるベアメタル ハイパーバイザーです。これは、最も高価で最も高性能な ESX 仮想化ソリューションへの次の足がかりです。 ご参考までに、VMware Player と、ホーム ユーザー向けの Workstation があります。また、ESXi よりもはるかに小規模な、ESX でできることの無料デモ版である VMware Server も

  2. メルトダウンとスペクター - パフォーマンスと安定性

    数日前、Microsoft が互換性のない特定のウイルス対策プログラムを当分の間ブラックリストに登録することを決定したため、ウイルス対策ソフトウェアがインストールされていなくても、2018 年 1 月の Windows 用の Meltdown パッチをインストールする方法を紹介しましたが、これはアンチウイルスを持っていない人にも影響することを説明する必要はありません.羊のメンタリティからのこのような急進的な逸脱は前代未聞だと思います. パッチがインストールされて実行されるようになったので (私はこれを 6 つのシステムでテストしました)、Microsoft が言ったことを実際に何もチェックせ