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

OpenStack を試す勇気はありますか? OSAD!

これはとても良い質問です。多くの理由で。 1 つ目は、OpenStack は最近の流行語のようなもので、誰かだと思っている人は誰でも、これを使うべきだと言うでしょう。言葉の雲のように、抵抗は無駄です。 2 つ目は、やはり仮想化と関係があるので、仮想化についてもっと学ぶ必要があるかもしれません。

3 と 4 など、理由はこの記事の後半で明らかになります。しかし、基本的な前提は、OpenStack に手を出すことができるか、またそうすべきかということです。今、私はこの質問を、自然な技術的直感と、OpenStack などに手を出した重要な経験を持つ人の観点から尋ねています。今日の記事のスラッシュ ガイドでは、このテクノロジを使い始める方法を説明します。

注:CC BY-SA 3.0 の下でライセンス供与されたウィキペディアから取得した画像。

期待と現実

わかった。つまり、OpenStack です。しかし、3 つまたは 4 つの大手ホスティング プロバイダーを除いて、実際にこれを使用している可能性のある人を本当に知っていますか?誰もがそれについて話していますが、実際の実用的な例はあまり多くありません。これは本当に私に興味と疑問を抱かせました。なぜだめですか?

私は自然に興味をそそられたので、OpenStack の旅に乗り出すことにしました。テクノロジーをすばやく簡単にマスターできるかどうかを確認し、途中で役立つチュートリアルを 1 つまたは 3 つ提供します。すぐに、このソフトウェアは簡単に扱えるものではないことが明らかになりました。また、最も直観的なオタクでさえ謙虚になれるほどの強力な機能を備えていることが明らかになりました。つまり、私は調子と戦略を変更し、ステップバイステップのガイドを紹介しようとすることから、OpenStack の関連性に関する実存的な質問へと移行し、あなた (と私の) の間のギャップを埋める真の試みへと移行しました。期待と現実の厳しさ。

OpenStack は難しい

実際、コマンド ラインの魔法使いを何時間もかけて冒険を続けた結果、KVM や Docker のように OpenStack を使いこなすことはできないことに気付きました。いいえ。いくつかの簡単な例、いくつかのマニュアル ページの熟読、およびシェルでの試行錯誤は、リモートでソフトウェアの使用を開始するのに十分ではありませんでした。 OpenStack は雪をかぶった山のように見え、登山用のビーチサンダルしか持っていませんでした。

あれこれいじればやるほど、それがひどく複雑で過剰に設計されたソリューションであることに気づきました。いじくり回して物事を成し遂げようとすればするほど、それは私を逃れ、離れていき、ますます面白くも魅力的でもなくなり、実存的な問題をますます哲学的にしていきました。

してはいけないこと

そのため、OpenStack を使用する方法を説明する前に、明確にしておく必要のある重要な点がいくつかあります。まず、建築。多くのコンポーネントを持つことは今日では良いことと考えられているため、非常に複雑で高度にモジュール化されており、名前と機能の両方で、それぞれの小さなコンポーネントが個別のサービスとして機能します。

openstack.org の公式ドキュメントから取得した画像。拡大するにはクリックしてください。

2 つ目は、ビジネスとの関連性です。なぜOpenStackを使いたいのですか?これは、何よりもまずインフラストラクチャ サービスです。ビジネスを運営する必要がある場合は、OpenStack を知る必要はありません。単に使用してください。では、このテクノロジの学習に投資するための十分な時間、お金、スキル、およびマンパワーがありますか?どのくらい早くそれを必要とし、どのくらい深く知る必要がありますか?何を達成しようとしていますか? OpenStack のプロバイダーまたはコンシューマーになりますか?これをあなたのビジネスに使用することを考えている場合、それはどのくらいの大きさですか?数十台の仮想マシン?何百?数千?何万もの?

この重要な部分は、バズワード ワゴンに飛び乗ろうとする無知な管理者によって見落とされることが多く、サービスのプロビジョニングと利用の違いをあいまいにし、インフラストラクチャをビジネスとして機能させないようにすることで、自分自身と従業員を混乱させます。そして、OpenStack はさらに意味をなさなくなり始めます。なぜなら、人々は OpenStack を稼働させようと忙しくしているため、その上で別のものを実行し、無駄な努力で数か月を浪費し、あきらめてしまうからです。これが、OpenStack が使用範囲の端にしか存在しない理由です。つまり、大規模な展開であるか、まったく展開されていないかのいずれかです。

何をすべきか

さて、私は理由を述べました、そして私はいくつかを強調しました.ここにいくつかあります。テクノロジーの最前線に立ちたいのであれば、OpenStack は理にかなっています。プライベート クラウドまたはパブリック クラウドを構築しようとしている場合、サービスのプロバイダーになることを意図している場合、およびクラウド分野での支配と優位性を確立しようとしている場合、それはビジネスの二次的な目的であるとしても正当なものである可能性があります。 .

OpenStack は、ソフトウェアをテストしてその上で実行したいだけの場合にも役立ちます。ブラックボックス ソリューションとしてアプローチすることも、基本的な理解を深めることもできます。これにより、問題が発生した場合にトラブルシューティングを行うことができます。

さて、大きな問題は、それをどのように行うかです。前に強調したように、物事を進めるための手作業のプロセスは恐ろしいものです。ユーザー、グループ、ロール、データベース、ネットワーク ブリッジ、コンテナー、その他多くの残酷な小片を作成するには、2 冊の本と数週間の時間が必要です。

そのすべてをスキップしたいのです。通常、私は直線的な学習プロセスを提案しますが、OpenStack は複雑すぎてそれを行うことはできません。自動化されたセットアップを盲目的に信じて、すべてを実行するための自動化されたメカニズムから始めます。構成が完全かつ正常に完了したら、ゆっくりと手順をたどります。

OpenStack Ansible デプロイメント (OSAD)

Web を検索すると、OpenStack の管理と展開の聖杯であると主張するソリューションが多数あることがわかります。はい、それらが存在するのは、OpenStack が難しすぎるためです。インターネットは、核心的な問題を解決するのではなく、使いやすく、監視しやすくするために設計されたアドホック オーバーレイ ソリューションであふれています。本当にコンテナによく似ています。 OSAD はそのようなコミュニティ プロジェクトの 1 つですが、Fuel、Inception、TripleO、Compass、PackStack など、他にも非常に多くのプロジェクトがあります。このチュートリアルでは、OSAD に焦点を当て、他の同様のツールについてフォローアップします。追記私はこのプロジェクトに所属しているので、偏見の匂いがする場合は、この記事を無視してください.

基本設定

技術的には、2 つのコマンドを実行するだけで済みます。 1 つ目は GitHub リポジトリからマスター スクリプトを取得し、2 つ目は Ansible セットアップを実行します。 Ansible は構成管理ツールです。 Puppet、Chef、CFEngine などと同様に、ターゲット マシンでのソフトウェア ポリシーと構成の展開を自動化するように設計されています。デプロイ ロジックは、YAML 言語構文を使用して Playbook と呼ばれるファイル内にエンコードされます。ソフトウェアは Playbook を解析し、S​​SH を使用して必要な構成をターゲット ホストにディスパッチします。それが Ansible の基本的な魔法です。

警告!

ここでは、Ansible がどのように機能するかについてあまり詳しく説明しません。それが何をし、どのように振る舞うかを簡単に強調します。構文は非常に直感的であり、その仕組みを理解すれば、OSAD yml ファイルのロジックをたどることができるはずです。オンライン ドキュメントから Playbook のサンプルを見てみましょう:

---
- ホスト:ウェブサーバー
変数:
http_ポート:80
最大クライアント数:200
remote_user:ルート
タスク:
- name:Apache が最新バージョンであることを確認します
yum:pkg=httpd 状態=最新
- name:Apache 設定ファイルを書き込みます
テンプレート:src=/srv/httpd.j2 dest=/etc/httpd.conf
通知:
- アパッチを再起動します
- name:Apache が実行されていることを確認します (起動時に有効にします)
サービス:名前 =httpd 状態 =開始済み 有効 =はい
ハンドラ:
- 名前:Apache を再起動します
サービス:名前=httpd 状態=再起動

ここには何がありますか?プレイブックを見てみましょう:

  • - hosts:ディレクティブは、この Playbook を実行するホストを定義します。
  • vars:ポートや最大値など、Web サーバーに設定する変数を定義します。クライアント。
  • リモート ユーザー:Playbook タスクを実行するユーザー (root として) を定義します。
  • tasks:ホストの基準が一致したときに実行する内容を定義します。
  • - name:ensure apache is at ... この変数はタスク名を定義します。長い説明を使用することも、単純な説明を使用することもできますが、長い説明のような、タイトルのような名前の方が理解しやすいです。
  • yum:これは httpd パッケージの最新バージョンをインストールします。
  • template:このディレクティブは、サーバー側の構成テンプレートを Web サーバーにコピーするため、それらはすべて同じ httpd.conf ファイルを使用します。
  • notify:この変数は、上記のアクションが正常に完了した場合にアクティブ化される "restart apache" というトリガーを宣言します。つまり、post アクションを定義します。
  • - name:ensure apache is running ... このタスクは、apache が起動時に実行されるように設定し、実行されていない場合にサービスを開始します。
  • handlers:ここでは、サービスの再起動を処理します。これは、構成ファイルのコピー アクションが完了した場合にのみ true に設定する必要があります。これは理にかなっています。次に、必要なアクションを httpd サービスに適用します。

これは、Ansible Playbook がどのように機能するかを簡単に説明しています。 OSAD をデプロイしたら、利用可能な yml ファイルを調べてセットアップを調べることができます。コンテナ、ブリッジなどを含む多くの複雑なものが表示されますが、それが全体のアイデアです。あなたは混乱を避け、他の人にそれを整理してもらいます。少なくとも、最初は。

開始

とにかく、私たちの 2 つの素敵なコマンド:

bash <(curl https://git.openstack.org/cgit/stackforge/os-ansible-deployment/
プレーン/スクリプト/run-aio-build.sh)

/opt/stackforge/os-ansible-deployment/openstack-ansible setup-everything.yml

これによりセットアップが開始されます。ハードウェアによっては、約 40 ~ 50 分かかる場合があります。これを適切に実行するには、十分な CPU、メモリ、およびディスク容量が確実に必要になりますが、予想よりも少なくなります。 4 つのコア、8 GB の RAM、および 40 GB のディスクで十分であるため、まともなラップトップでもこれを十分に行うことができます。素晴らしいパフォーマンスを期待しないでください。

...
+ 設定解除 -f 非アクティブ化
+ 出口 0

/opt/stackforge/os-ansible-deployment
-------------------------------------------------- --------------

- [実行時間 =2422 秒 || 40分】
-------------------------------------------------- --------------

- [ステータス:成功]
-------------------------------------------------- --------------
+ 猫
++ ip -o -4 addr show dev eth0
++ awk -F '[ /]+' '/global/ {print $4}'
+ chmod +x /etc/update-motd.d/20-openstack
+ 猫
++ pwd
+ chmod +x /etc/update-motd.d/21-galera

上記の出力が表示された場合、初期設定は正常に完了しています。

Nova で遊ぶ

次の論理的なステップは、実際に 1 つまたは 2 つのコマンドを実行できることを確認することです。現在、システム上にあるもののスタック全体を検査することは、実際には不可能かもしれません.しかし、コンテナのスポーン時に作成されたブリッジや仮想デバイスを含む、多数のネットワーク インターフェイスが表示されるはずです。 Docker で見たものと多少似ています。

Nova コマンドは見苦しく長いので、コマンドを実行するたびにすべての環境変数を入力するよりも、いくつかの環境変数を設定したほうがよいでしょう:

nova --os-user-name admin --os-password secrete --os-tenant-name admin --os-auth-url https://172.29.236.100:5000/v2.0 image-list
+------------------------------------+--------------------+--- ---+--------+
| | ID |名前 |ステータス |サーバー |
+------------------------------------+--------------------+--- ---+--------+
| | 896fa8ca-682b-4f4e-859e-9f08b... |シロス |活動中 | | |
+------------------------------------+--------------------+--- ---+--------+

nova --os-user-name admin --os-password secrete --os-tenant-name admin --os-auth-url https://172.29.236.100:5000/v2.0 hypervisor-list
+----+---------------------+-------+---------+
| | ID |ハイパーバイザーのホスト名 |状態 |ステータス |
+----+---------------------+-------+---------+
| | 1 |サーバー-001 |アップ |有効 |
+----+---------------------+-------+---------+

実際に、環境変数をセットアップします:

OS_USERNAME=admin のエクスポート
エクスポート OS_PASSWORD=シークレット
OS_TENANT_NAME=admin のエクスポート
エクスポート OS_AUTH_URL=https://172.29.236.100:5000/v2.0

次に、これらの短い nova コマンドを使用してホストを起動できます。基本的に、イメージ、フレーバー、名前を指定する必要があります。もちろん、すべての識別情報も含まれていますが、ほんの少し前にそれらを並べ替えました。ここで、同様に重要なこととして、仮想マシンに接続できるように、SSH キーといくつかのファイアウォール ルールが必要になります。そうしないと、うまくいきません。

nova s​​ecgroup-add-rule デフォルト tcp 22 22 0.0.0.0/0
nova s​​ecgroup-add-rule デフォルト icmp -1 -1 0.0.0.0/0

nova keypair-add Dedoimedo> dedoimedo.pem
chmod 0600 dedoimedo.pem

nova boot First --image 896fa8ca-682b-4f4e-859e-9f08b82b47fb --flavor 3 -key-name Dedoimedo
+--------------------------------+---------------- --------------+
| |プロパティ |値 |
+--------------------------------+---------------- --------------+
| | OS-DCF:diskConfig |マニュアル |
| | OS-EXT-AZ:availability_zo |新星 |
| | OS-EXT-SRV-ATTR:ホスト | - |
| | OS-EXT-SRV-ATTR:hyperviso | - |
| | OS-EXT-SRV-ATTR:instance_ |インスタンス-00000007 |
| | OS-EXT-STS:power_state | 0 |
...
| |作成された | 2015-06-04T09:48:59Z |
...
| |フレーバー | m1.中 (3) |
...
+--------------------------------+---------------- --------------+

出力情報には、ホストのデフォルトの自動生成パスワードが含まれ、実行中のホストのリストからその IP アドレスを取得できます。次に、これは単純な SSH のことです。成功すれば、奇跡的に OpenStack を実行することができ、最初の障害が取り除かれたことになります。

ping -c 1 172.29.248.13
PING 172.29.248.13 (172.29.248.13) 56(84) バイトのデータ。
172.29.248.13 からの 64 バイト:icmp_seq=1 ttl=64 time=0.634 ms

--- 172.29.248.13 ping 統計 ---
1 パケット送信、1 受信、0% パケットロス、時間 0ms
rtt 最小/平均/最大/mdev =0.634/0.634/0.634/0.000 ミリ秒

ssh -i dedoimedo.pem cirros@172.29.248.14
ホスト「172.29.248.14 (172.29.248.14)」の信頼性
確立できません。 RSA キーのフィンガープリントは 5b:cf:ed:99:b8:a9:2a:2f:ce:58:f0:3c:eb:db:7c:c1 です。
接続を続行しますか (はい/いいえ)?はい
警告:既知のホストのリストに「172.29.248.14」(RSA) が永久に追加されました。

発生する可能性のある問題

手動のパスを使用する場合でも、自動セットアップを使用する場合でも、あちこちで問題が発生する可能性があります。このセクションでは、OpenStack、Ansible、またはその両方を使用する際に直面する可能性のある一般的な問題について詳しく説明します。

openstack-ansible setup-everything.yml
変数ファイル:「-e @/etc/openstack_deploy/user_secrets.yml -e @/etc/openstack_deploy/user_variables.yml」
エラー:インベントリ スクリプト (inventory/dynamic_inventory.py) に実行エラーがありました:トレースバック (最新の呼び出しが最後):
ファイル "/openstack/os-ansible-deployment/playbooks/inventory/
dynamic_inventory.py"、21 行目、
netaddr のインポート
ImportError:netaddr という名前のモジュールがありません

インストールする必要がある重要な Python モジュールがありません:

pip インストール netaddr
netaddr の収集
/usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/
packages/urllib3/util/ssl_.py:90:InsecurePlatformWarning:真の SSLContext オブジェクトは利用できません。これにより、urllib3 が SSL を適切に構成できなくなり、特定の SSL 接続が失敗する可能性があります。詳細については、https://urllib3.readthedocs.org/en/latest/ を参照してください。
security.html#insecureplatform警告。
安全でないプラットフォーム警告
netaddr-0.7.14-py2.py3-none-any.whl のダウンロード (1.5MB)
100% | | | 1.5MB 312kB/秒
収集したパッケージのインストール:netaddr
netaddr-0.7.14 が正常にインストールされました

OpenStack Ansible Deployment フレームワークで遊んでいると、All in One (AIO) ビルドに関連するエラーが表示される場合があります。これは、すべてが問題なく動作するはずであると信じている場合でも、SSH の問題を示している可能性があります。

事実の収集 **************************************************** ****************
致命的:[aio1] => SSH エラー:データをリモート ホストに送信できませんでした。このホストに ssh 経由でアクセスできることを確認してください

タスク:[apt_package_pinning | apt pin 設定を追加] ************************************************* ******************
FATAL:一致するホストがないか、すべてのホストがすでに失敗しています -- 中止します

これらのエラーは、次の 2 つのバグに起因する可能性があるため、そちらを参照してください。次に、レポを空でないディレクトリにクローンしようとした場合に発生する可能性のある 3 番目の典型的なエラー:

+ git クローン -b マスター https://github.com/stackforge/os-ansible-deployment.git /opt/stackforge/os-ansible-deployment
致命的:宛先パス '/opt/stackforge/os-ansible-deployment' は既に存在し、空のディレクトリではありません。

続きを読む

このチュートリアルがあなたの絶妙な好みには簡単すぎると感じた場合:

興味をそそるいくつかのスライド。

OpenStack の Red Hat ディストリビューション (RDO)

Mirantis OpenStack の展開と管理 - 燃料

結論

ご覧のとおり、OpenStack の化身が多すぎます。ある意味では、それは複雑で繁栄し、混乱している Linux のランドスケープを独自の 4 つの次元に複製したものであり、ある種の標準が最終的に達成され、コミュニティ内で均衡がとれるまで、おそらく 10 年間、さらに多くの流行語や名前の下落に耐えなければならないでしょう。達成。 OSAD は問題ありませんが、これは Ubuntu 14.04 + LXC に基づいており、本番用に Red Hat や CentOS のようなものが実際に必要になる場合があります。これは、他のセットアップやツールもテストする必要があることを意味します。しかし、それは、OpenStack で楽しい洗礼を受けた後に試すことができるものです。

とはいえ、テクノ ストームが過ぎ去るまで数年待つのが嫌なら、ビジネスであれバックボーンであれ、目的に関係なく、OpenStack を使い始めることができます。何をするにしても、最初のステップは圧倒されるので、ヘルパー フレームワークを確実に手に入れてから、コア テクノロジまでさかのぼる必要があります。

OSAD は、簡単で完璧とはほど遠いものの、良い例です。しかし、それは OpenStack が単独で提供するものよりも何光年も先を行っており、予想される技術的直感の一部をテーブルに戻すため、実際に使用可能です。このチュートリアルがお役に立てば幸いです。簡単じゃないし、面倒だし、あんまり好きじゃない。それでも、手元にあるツールでできることはおそらく最善です。全体として、考えすぎないようにし、手動セットアップを避け、Ansible を使用し、最初に使用するいくつかのエラーを修正し、Nova と友人のコツをつかむようにします。しばらくしてから、OpenStack に再度アクセスし、モンスターが飼い慣らされるまでゆっくりと微調整します。このガイドは以上です。

追記アイルランドのダブリンで開催された今年の CloudOpen カンファレンスで、私はこのトピックをより楽しく面白い方法で公式に発表しました。マウスデバイスをクリックするだけで、詳細が表示されます。行け。

乾杯。


  1. Firefox を使用すべき理由

    私は Firefox を約 15 年間使用してきました。その間、私はそれが美しいプロジェクトに成長し、素晴らしい拡張機能の世界になり、競合他社と同じようにゆっくりと縮小して衰退し、そもそも持っていたコアの利点を失うのを見てきました.それにもかかわらず、それは私の主要なブラウザであり続けています。そして、あなたが私に尋ねているのなら、そうすべきです - それはあなたのものでもあるはずです。 この記事では、その理由を説明します。メモリ消費量、ブラウザの起動に 3 ミリ秒余分にかかること、電話でのアプリケーションの見栄えなど、日常的な問題を超えています。それは、選択、選択の自由、そして競争の決定的

  2. Mozilla Ubiquity - ウェブに統合されたあなた

    私は、世界中を熱狂させている Web 2.0 の熱狂的なファンではありません。しかし… Mozilla Ubiquity は、私の伝統主義的なエゴさえも凌駕するものです。新しく、光沢があり、ウェブに統合されています。全体として、それは私が望むものであってはなりません。しかし、そうです。 Mozilla Ubiquity は、ここ数年でインターネットに登場した、より革新的で便利な Web ソリューションの 1 つです。まだ始まったばかりですが、バージョン番号が 0.1 前後になったので、それについて書く必要がありました。この赤ちゃんが、Ubiquity が完全に成長することを示すものである場