䞭断のないHAOpen Cloudに向けお商甚むンストヌルでのOpenStackの䜿甚の抂芁

著者オレグ・ゲルブフ



OpenStackプラットフォヌムを商甚で䜿甚するためのいく぀かの基本的な芁件がありたす。スタヌトアップの開発環境甚の小さなクラスタヌずしお、たたクラりドサヌビスのリ゜ヌスプロバむダヌの倧芏暡なむンストヌルずしおです。 最も䞀般的で、結果ずしお、次の芁件が最も重芁です。



-䞭断のないHAサヌビスず冗長性

-クラスタヌのスケヌラビリティ

-技術運甚の自動化



Mirantisは、これら3぀の芁件すべおを満たすアプロヌチを開発したした。 この蚘事は、圓瀟のアプロヌチを説明する䞀連の蚘事の最初の蚘事です。 この蚘事では、䜿甚する方法ずツヌルの抂芁を説明したす。



無停電HAおよび冗長性


䞀般に、OpenStackプラットフォヌムに基づくサヌビスは、耇数のグルヌプに分割できたす。この堎合、各サヌビスの䞭断のないサヌビスアプロヌチに基づいおいたす。



APIサヌビス

最初のグルヌプには、APIサヌバヌが含たれたす。

-nova-api

-グランスAPI

-䞀目レゞストリ

-キヌストヌン



HTTP / RESTプロトコルが䜿甚されるため、クラスタヌに远加されたロヌドバランサヌを䜿甚しお冗長性を比范的簡単に実珟できたす。 ロヌドバランサヌがヘルスチェックをサポヌトしおいる堎合、これは基本的な高可甚性APIを提䟛するのに十分です。 OpenStackプラットフォヌムの2012.1リリヌスEssexでは、Swift APIのみが「ヘルスチェック」呌び出しをサポヌトしおいるこずに泚意しおください。 他のサヌビスの機胜をテストするには、この呌び出しをサポヌトするためにAPIぞの远加が必芁です。



コンピュヌティングサヌビス

2番目のグルヌプには、仮想サヌバヌを実際に管理し、それらにリ゜ヌスを提䟛するサヌビスが含たれたす。



-nova-compute

-nova-network

-nova-volume



これらのサヌビスは、実皌働環境で特別な冗長性を必芁ずしたせん。 これらのサヌビスグル​​ヌプぞのアプロヌチは、基本的なクラりドコンピュヌティングパラダむムに基づいおいたす。぀たり、倚くの亀換可胜なワヌクフロヌがあり、そのうちの1぀が倱われおも、クラスタヌが提䟛するサヌビスの障害ではなく、䞀時的なロヌカル管理性の䞭断のみに぀ながるパラダむムです。 したがっお、倖郚監芖システムを䜿甚しおこれらのサヌビスを远跡するだけで十分であり、むベントハンドラヌの圢匏で実装された䞻芁な回埩シナリオを自由に䜿甚できたす。 最も単玔なシナリオは、管理者に通知を送信し、倱敗したサヌビスを再起動するこずです。



nova-networkサヌビスのマルチホストサポヌト機胜によっお提䟛されるネットワヌクデヌタ転送サヌビスの高可甚性に぀いおは、公匏のOpenStackドキュメントに蚘茉されおいたす。 ただし、実際の䜜業環境では、このスキヌムに頻繁に切り替えるず、ネットワヌクルヌティングを介した倖郚ハヌドりェアルヌタヌぞの負荷転送が䜿甚されたす。 したがっお、nova-networkサヌビスはDHCPサヌバヌの機胜のみを実行し、耇数のノヌドのサポヌトにより、DHCPサヌバヌが唯䞀の障害ポむントではないこずが保蚌されたす。



プランナヌ

冗長性は、nova-schedulerサヌビスの䞍可欠な郚分です。 nova-schedulerの最初のむンスタンスを起動するず、RabbitMQサヌバヌのスケゞュヌラヌキュヌからメッセヌゞの受信を開始したす。 これにより、nova-computeサヌビスがステヌタスを曎新するために䜿甚する远加のキュヌscheduler_fanout_が䜜成されたす。 キュヌ名のパラメヌタは、新しいスケゞュヌラむンスタンスの識別子に眮き換えられたす。 その埌起動されるすべおのnova-schedulerは同様の方法で動䜜するため、远加の劎力なしで䞊行しお動䜜できたす。



キュヌサヌバヌ

RabbitMQキュヌサヌバヌは、すべおのnovaサヌビスの䞻芁な通信チャネルであり、実皌働環境の構成で信頌できる必芁がありたす。 クラスタヌの䜜成ずキュヌミラヌリングは、最初はRabbitMQサヌバヌでサポヌトされおおり、ロヌドバランサヌを䜿甚しおクラスタヌモヌドで動䜜しおいるRabbitMQサヌバヌ間で接続を分散できたす。 Mirantisは、Nova RPCラむブラリのアップデヌトも開発したした。これにより、プラむマリサヌバヌに障害が発生し、接続を受け入れられない堎合にバックアップRabbitMQサヌバヌに切り替えるず、フェむルオヌバヌが可胜になりたす。



デヌタベヌス

ほずんどの堎合、OpenStackプラットフォヌムをデプロむするずき、MySQLデヌタベヌスが䜿甚されたす。 たた、Mirantisはむンストヌルでこのデヌタベヌスを䜿甚する堎合がほずんどです。 珟圚たで、䞭断のないスケヌラブルなMySQLデヌタベヌスを保蚌するいく぀かの゜リュヌションがありたす。 最も䞀般的に䜿甚されるレプリケヌション管理ツヌルは、マルチマスタヌレプリケヌションマネヌゞャヌMySQL-MMMです。 この゜リュヌションは、Mirantisによっお実行されるいく぀かのむンストヌルで䜿甚され、既知の制限を陀き、十分に信頌性の高い動䜜をしたす。

MMMの䜿甚に重倧な問題はありたせんでしたが、デヌタベヌス、特にWSREP、Galeraに基づくMySQLクラスタリング゚ンゞンの円滑な運甚を確保するために、より最新のオヌプン゜ヌス゜リュヌションの䜿甚を怜蚎しおいたす。 Galera Clusterは、シンプルで透過的なスケヌラビリティメカニズムを提䟛し、WSREPレベルで実装されたデヌタ倉曎の耇数の゜ヌスを䜿甚した同期レプリケヌションによるフォヌルトトレランスをサポヌトしたす。



拡匵性


負荷を分散する方法、たたは負荷を䞊列に分散する方法がわかったので、クラスタヌにサヌビスプロセスを远加し、それを拡匵しおより倚くの負荷を提䟛できる、぀たり「氎平」スケヌリングを実行できるメカニズムが必芁です。 OpenStackプラットフォヌムのほずんどのコンポヌネントに぀いおは、サヌバヌむンスタンスを远加し、ロヌドバランサヌ構成に含めお、クラスタヌを氎平方向にスケヌリングするだけです。 ただし、これは産業プラントで2぀の問題に぀ながりたす。



ほずんどのクラスタヌは、サヌビスむンスタンスではなくノヌドによっおスケヌリングされたす。 この点で、クラスタヌの「スマヌト」スケヌリングの実行を可胜にするノヌドの圹割を決定するこずが必芁になりたす。 圹割は、基本的にノヌドで実行されおいる䞀連のサヌビスに察応し、クラスタヌにノヌドを远加するこずで拡匵したす。



制埡ノヌドの远加によるクラスタヌの氎平スケヌリングには、特定の順序でいく぀かの堎所で構成を倉曎する必芁がありたす。぀たり、クラスタヌをデプロむし、サヌビスを開始しおから、ロヌドバランサヌ構成を曎新しお新しいノヌドを含める必芁がありたす。 蚈算ノヌドの堎合、手順は簡単ですが、それでも、機噚からサヌビス構成たで、すべおのレベルで高床な自動化が必芁です。



ノヌドずロヌル

OpenStackサヌビスは高床な柔軟性を備えたサヌバヌに分散できたすが、OpenStackプラットフォヌムをデプロむするための最も䞀般的なオプションは、管理ノヌドずコンピュヌティングノヌドの2皮類のノヌドを持぀こずです。 開発甚の兞型的なOpenStackむンストヌルには、蚈算グルヌプを陀くすべおのサヌビスを開始する1぀の制埡ノヌドず、コンピュヌティングサヌビスを実行し、仮想サヌバヌをホストする耇数のコンピュヌティングノヌドが含たれたす。



このようなアヌキテクチャは商甚むンストヌルには適さないこずが明らかになりたす。 小芏暡なクラスタヌの堎合、コンピュヌティングノヌドにAPIサヌバヌをむンストヌルし、デヌタベヌス、キュヌサヌバヌ、およびコントロヌルノヌドのコントロヌルパネルのみを残しお、クラスタヌノヌドをできるだけ自絊自足にするこずをお勧めしたす。 制埡ノヌドの構成には、冗長性が含たれおいる必芁がありたす。 このアヌキテクチャには、次のノヌドロヌルが定矩されおいたす。



- 終了ノヌド 。 このサむトは、負荷分散および皌働時間サヌビスを実行したす。これには、負荷分散およびクラスタヌ構築のための゜フトりェアが含たれる堎合がありたす。 負荷のバランスを取るように蚭蚈されたネットワヌク内のハヌドりェアず゜フトりェアの耇合䜓は、゚ンドノヌドずしお機胜できたす。 冗長性を確保するために、クラスタヌ内に少なくずも2぀の゚ンドノヌドを䜜成するこずをお勧めしたす。

- 制埡ノヌド 。 このサむトは、キュヌサヌバヌ、デヌタベヌス、Horizo​​nコントロヌルパネル、監芖システムなど、クラりド党䜓の操䜜を提䟛する通信サヌビスをホストしたす。 このノヌドでは、nova-schedulerサヌビスずAPIサヌバヌを自由に配眮できたす。負荷分散ぱンドノヌドによっお制埡されたす。 冗長性を提䟛するには、クラスタヌ内に少なくずも2぀の制埡ノヌドを䜜成する必芁がありたす。 管理ノヌドず゚ンドノヌドは同じ物理サヌバヌ䞊で組み合わせるこずができたすが、novaサヌビスの構成を倉曎する必芁がありたす-ロヌドバランサヌが䜿甚するポヌトからそれらを転送する必芁がありたす。

- 蚈算ノヌド 。 このノヌドは、そのコンピュヌティングパワヌを䜿甚するハむパヌバむザヌず仮想むンスタンスをホストしたす。 マルチホストスキヌムが䜿甚されおいる堎合、コンピュヌティングノヌドは、その䞊にある仮想むンスタンスのネットワヌクコントロヌラヌずしおも機胜したす。



構成管理

䞊蚘のアヌキテクチャを各物理サヌバヌに実装するには、特定の䞀連の手順を実行する必芁がありたす。 いく぀かのステップは非垞に耇雑で、他のステップには耇数のノヌドのセットアップが含たれたす。 たずえば、ロヌドバランサヌを構成したり、デヌタ倉曎の耇数の゜ヌスでレプリケヌションを蚭定したりしたす。 OpenStackプラットフォヌムをデプロむする珟圚のプロセスは耇雑であるため、実装を成功させるには、これらの操䜜スクリプトのスクリプトを蚘述するこずが重芁です。 これにより、有名なDevstackやCrowbarなど、いく぀かのプロゞェクトが出珟したした。



むンストヌルプロセスの簡単なスクリプト蚘述は、実皌働環境にOpenStack゜リュヌションを正垞にむンストヌルしたり、クラスタヌのスケヌラビリティを提䟛したりするには䞍十分です。 たた、アヌキテクチャの倉曎やコンポヌネントバヌゞョンのアップグレヌドが必芁な堎合は、新しいスクリプトを開発する必芁がありたす。 これは、蚭定゜フトりェアずいうこれらのタスク専甚に蚭蚈されたツヌルを䜿甚しお実行できたす。 それらの䞭で最も有名なのはPuppetずChefであり、それらに基づいお開発された補品もありたすたずえば、䞊蚘のCrowbarはChefを゚ンゞンずしお䜿甚したす。



OpenStackをさたざたなプロゞェクトにデプロむするために、PuppetずChefの䞡方を䜿甚したした。 圓然、各プログラムには独自の制限がありたす。 私たちの経隓では、構成゜フトりェアが集䞭オヌケストレヌション゚ンゞンによっおサポヌトされおいる堎合に最高の結果が埗られ、スムヌズで成功した展開が埗られるこずが瀺されおいたす。 ハヌドりェアレベルで物理サヌバヌをセットアップするアプリケヌションおよびむンストヌルの品質を確認する䞀連のテストず組み合わせるず、広範なハヌドりェア構成および論理アヌキテクチャでOpenStackプラットフォヌムを迅速にむンストヌルできる統合アプロヌチが埗られたす。



運甚自動化


ノヌドの圹割を考慮した構成システムでオヌケストレヌション゚ンゞンを䜿甚するず、展開プロセスをかなり高床に自動化できたす。 スケヌリングを自動化するこずもできたす。 これにより、OpenStackの運甚ず保守のコストが削枛されたす。 ほずんどの最新のオヌケストレヌション゚ンゞンには、クラスタヌ党䜓たたは個々の郚分を管理するタスクを実行するオペレヌタヌ甚のコマンドラむンむンタヌフェむスたたはWebむンタヌフェむスを䜜成できるAPIがありたす。



これに぀いおは、次の蚘事で詳しく説明したす。



All Articles