[ English | 日本語 | Deutsch | Indonesia ]

高度な設定

OpenStack は、非常に小さなプライベートクラウドから大規模なパブリッククラウドまで様々な構成でうまく動くことを意図して作られています。これを実現するため、開発者はコードに設定オプションを用意し、要件にあわせて種々のコンポーネントの振る舞いを細かく調整できるようにしています。しかし、残念ながら、デフォルトの設定値ですべてのデプロイメントに対応することはできません。

執筆時点では、OpenStack は 3,000 以上の設定オプションがあります。 OpenStack Configuration Reference にドキュメント化されています。本章は、これらのすべてをドキュメント化できませんが、どの情報を掘り下げて調べるかを理解できるよう、重要な概念を紹介したいと考えています。

ドライバーによる違い

多くの OpenStack プロジェクトではドライバー層が実装され、各ドライバーはドライバー固有の設定オプションが実装されています。例えば、OpenStack Compute (nova) では、libvirt, xenserver, hyper-v, vmware などの種々のハイパーバイザードライバーが実装されていますが、これらのハイパーバイザードライバーすべてが同じ機能を持っている訳ではなく、異なるチューニング要件もドライバー毎に異なります。

注釈

The currently implemented hypervisors are listed on the OpenStack Configuration Reference. You can see a matrix of the various features in OpenStack Compute (nova) hypervisor drivers at the Hypervisor support matrix page.

ここで言っておきたいことは、オプションが存在するからといって、そのオプションがあなたが選んだドライバーに関係するとは限らないということである。通常は、ドキュメントには、その設定オプションが適用されるドライバーについての記載があります。

定期タスクの実装

様々な OpenStack プロジェクトに共通する別の考え方として、周期的タスク (periodic task) があります。周期的タスクは伝統的な Unix システムの cron ジョブに似ていますが、OpenStack プロセスの内部で実行されます。例えば、OpenStack Compute (nova) はローカルキャッシュからどのイメージを削除できるかを決める必要がある際に、これを行うために周期的タスクを実行します。

周期的タスクは、OpenStack が使用しているスレッドモデルにおける制限を理解する上で重要です。OpenStack は Python の協調スレッドを使用しています。このことは、何か長く複雑な処理が実行された場合、その処理が自発的に別の協調スレッドに実行を譲らない限り、そのプロセス内の他のタスクの実行が停止されることを意味します。

これの具体的な例が nova-compute プロセスです。libvirt でイメージキャッシュを管理するために、nova-compute はイメージキャッシュの内容をスキャンする周期的なプロセスを用意します。このスキャンの中で、各イメージのチェックサムを計算し、チェックサムが nova-compute が期待する値と一致することを確認します。しかしながら、イメージは非常に大きく、チェックサムを生成するのに長い時間がかかる場合があります。このことがバグとして報告され修正される前の時点では、nova-compute はこのタスクで停止し RPC リクエストに対する応答を停止してしまっていました。この振る舞いは、インスタンスの起動や削除などの操作の失敗としてユーザーに見えていました。

これから分かることは、OpenStack のプロセスが少しの間「停止」したように見えて、それから通常通りの動作を継続するような状況を見つけた場合、周期的タスクが問題になっていないかを確認すべきだということです。取りうる一つの方法は、間隔を 0 に設定して周期的タスクを無効にすることです。また、周期的タスクの実行頻度を設定することもできます。デフォルトとは異なる頻度で周期的タスクを実行する方が意味がある場合もあります。

実行頻度は周期的タスク別に定義されています。したがって、OpenStack Compute (nova) ではすべての周期的タスクは無効にするためには、多くの設定オプションを 0 に設定する必要があることでしょう。現在のところ 0 に設定する必要がある設定オプションの一覧は以下のとおりです。

  • bandwidth_poll_interval

  • sync_power_state_interval

  • heal_instance_info_cache_interval

  • host_state_interval

  • image_cache_manager_interval

  • reclaim_instance_interval

  • volume_usage_poll_interval

  • shelved_poll_interval

  • shelved_offload_time

  • instance_delete_interval

設定オプションを 0 に設定するには、nova.confimage_cache_manager_interval=0 のような行を入れてください。

上記のリストはリリース間で変更されることもあります。最新の情報については設定ガイドを参照してください。

設定に関する個別のトピック

この節では、調整を検討した方がよい設定オプションの個別の具体例を扱います。決して完全なリストではありません。

Compute、Networking、Storage のセキュリティ設定

OpenStack セキュリティーガイド は、OpenStack クラウドのセキュア化に関する深い考察を提供します。SSL/TLS、鍵管理、PKI および証明書管理、データ転送およびプライバシーの懸念事項、コンプライアンスなど。

高可用性

OpenStack High Availability Guide は、システム停止につながる可能性がある、単一障害点の削減に向けた提案があります。完全に規定されたドキュメントではありませんが、停止時間やデータ損失を避けるための方法や技術を提供しています。

IPv6 サポートの有効化

neutron IPv6 Subteam at work を確認して、進行状況を確認し続けられます。

セットアップした設定を変更することにより、ネットワークに nova-network を使用している場合に、IPv6 をセットアップできます。テストされたセットアップ環境が FlatDHCP とマルチホストの設定向けにドキュメント化されています。重要な点は、radvd を正常に実行されたと、nova-network が考えるようにすることです。設定全体の詳細は、Cybera のブログ記事 “An IPv6 enabled cloud” にあります。

Object Storage の地理的考慮事項

オブジェクトストレージサーバーのグローバルクラスターが、すべてのサポートされているリリースで利用できます。自然災害の発生時に備えて地理的な地域をまたがって確実に複製するために、またユーザーが最も近いデータセンターに基づいてより迅速にオブジェクトにアクセスできるようにするために、これらのグローバルクラスターを導入できるでしょう。各クラスターに 1 つのゾーンを持つデフォルトのリージョンを設定します。しかし、より多くのゾーンを追加して、より多くのゾーンを処理するリングを構築するので、お使いのネットワーク (WAN) が、ゾーン間の追加リクエストとレスポンスの負荷を処理できることを確認してください。詳細は Geographically Distributed Clusters にあるドキュメントを参照してください。