マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】Corosync

【OSS情報アーカイブ】Corosync

※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。

「Corosync」とは

概要

Corosync(コロシンク)とは、アプリケーション内に高可用性を実装するための追加機能を備えたグループ通信システムです。Corosync(Corosync Cluster Engine)は、高可用性クラスタ構成の中でクラスタ通信層制御を担当するオープンソースクラスタ基盤としてクラスタ通信フレームワークを提供し、クラスタ構成サーバ間でノードの死活監視を行います。

オフィシャルサイト情報

■オフィシャルサイト

→corosync.github.io →corosync

■主要開発元

Corosyncは、Corosync開発コミュニティが中心となり開発が進められています。

開発コミュニティは「コミュニティ定義のオープンソースクラスターを開発、リリース、およびサポートすること」を目標としています。

■ライセンス情報

Corosyncのライセンスは「BSD license」です。

詳細について、こちらを参照ください。
→GitHub →corosync/corosync →LICENSE

■ダウンロード

→GitHub →corosync/corosync →Releases

■導入事例

Corosyncは以下のプロジェクトで高可用性フレームワークとして使用されています。

・高可用性リソースマネージャソフトウェア「Pacemaker」
・IP-PBXソフトウェア「Asterisk」 など

「Pacemaker」との関係

「Corosync」はクラスタ通信層制御機能を持ちますが、リソース監視/制御機能を持っていません。そのため、リソース監視/制御機能「Pacemaker」と連携させて、クラスタシステムを構成します。

「Pacemaker」は、クラスタリソースマネージャーとも呼ばれ、各種リソース(仮想IP、Web、データベースなどのサービス) の動作状態について監視/制御を行います。

「Corosync」がノード死活監視を行い、ノードがダウンした場合には、「Pacemaker」でリソース制御(ノード切り離し、待機系ノードへのリソース引継ぎ)が実行されます。

「Corosync」と「Pacemaker」は、CentOS6のレポジトリに標準的に組み込まれています。

「Pacemaker」については、こちらの情報も参照ください。
→OSSxCloudNews →オープンソースのクラスタリング/Pacemakerとは

「Heartbeat」との関係

「Heartbeat」とは、「Corosync」と同様なクラスタ通信層制御機能を持つオープンソース製品です。

「Corosync」と「Heartbeat」は排他的で、「Corosync+Pacemaker」あるいは「Heartbeat+Pacemaker」の組み合わせのどちらかを選択する必要があります。

しかし、「Heartbeat」は、メンテナンスのみが行われる状態になってしまっており将来性が危ぶまれているため「Corosync+Pacemaker」が推奨されています。

「Heartbeat」については、こちらの情報も参照ください。
→OSSxCloudNews →オープンソースのクラスタリング/Heartbeatとは

「Corosync」の開発経緯

「OpenAIS」プロジェクト

Corosyncは「OpenAIS」プロジェクトから派生して開発がスタートし、「Service Availability Forum API」を実装するために運営されました。

いくつかのAPIを開発した6年後、「APIを実行するインフラストラクチャを作成する」という難しいタスクに夢中になっていることがわかりました。

「プロセス間通信」「ネットワークプロトコル」「リカバリ同期」「タイマー」「ロギング」「トレース」「その他のコンポーネント」などのインフラストラクチャは、APIを実装するよりも難しいことが判明しました。

「Corosync Cluster Engine」プロジェクト

■プロジェクト設立

「Corosync Cluster Engine」プロジェクトは、クラスタインフラストラクチャが独自のプロジェクトと独自のコミュニティに値するという現実を認識するために設立されました。

プロジェクトは、「OpenAIS」「Pacemaker」「Apache Qpid」を使用した経験を通じて特定したすべてのギャップを満たし、弾力性のあるコンパクトなデザインを作成することを優先しました。

■コードベース統合

プロジェクト進行過程で、さまざまなクラスタインフラストラクチャコミュニティやユーザーを1つのコードベースに統合する試みを行いました。

Corosync実装では、「OpenAIS」のコードの80%を再利用しました。残りの20%は、主にCorosyncのAPIに集中しました。

■Corosyncフィールドの展開

「OCFS2およびGFSファイルシステム統合レイヤー」「CLVM」「Pacemaker」「Apache Qpid」などの他のプロジェクトは、Corosyncのフィールド展開をさらに拡大し、大規模な展開コミュニティを通じてその品質を直接改善しました。

■OpenAIS開発を完全停止

「Corosync 2.x」では、十分にテストされた小規模なコアサービスセットに焦点を当てることを決定し「OpenAIS」の開発を完全に停止しました。

「Corosync」の主な特徴

アーキテクチャ

Corosyncは、ライブラリとサービスエンジン間のクライアント/サーバ通信モデルを使用するエグゼクティブバイナリで構成されています。

サービスエンジンと呼ばれるロード可能なモジュールは、Corosync Cluster Engineにロードされ、Corosync Service Engine内部APIによって提供されるサービスを使用します。

対象ネットワーク

Corosyncは「UDP/IPネットワーク」および「InfiniBandネットワーク」で動作するように設計されています。

バイナリ版はリリースせず

Corosyncは製品ではなくプロジェクトであり「ソースコードやドキュメントを作成し欠陥を修正すること」を目的としています。

例えば、OSディストリビューターの場合、安定版としてリリースする特定のバージョンのソースコードに対してベースラインを作成し、それぞれのプロジェクトまたは製品からバイナリとして利用できるようにする必要があります。このバイナリ配布方法により、OSベンダーはOSの他の部分との良好な統合品質を得ることができます。

しかし、この方法を実践すると、上記の目的が薄れてしまうため、Corosyncプロジェクトではバイナリ版をリリースしていません。

「Corosync」の主な機能

Corosyncは、以下の4つのC言語アプリケーションプログラミングインターフェース機能を提供します。

プロセスグループ通信

仮想同期を持つ閉じたプロセスグループ通信モデルは、複製された状態マシンの作成を保証します。

可用性マネージャー

可用性マネージャーは、処理が失敗した場合にアプリケーションプロセスを再起動する機能を提供します。

メモリ内データベース

メモリ内データベースは「情報の変更通知設定」「取得や受信」する機能を提供します。

クォーラムシステム

クォーラムシステムは、「クォーラム(分散システムにおいて分散トランザクションが処理を実行するために必要な最低限の定足数)」が達成または失われたときにアプリケーションに通知します。

「Corosync」の動作アルゴリズム

同期アルゴリズム

■概要

同期アルゴリズムは、Corosyncのすべてのサービスに使用され、システムの状態を同期します。

同期アルゴリズムには4つのイベントがあります。

これらのイベントは、実際にはサービスハンドラのデータ構造に登録されている関数に該当し、ネットワークがパーティション分割またはマージされるたびに同期システムによって呼び出されます。

■initイベント

initイベント内で、サービスハンドラはプロセスイベントで使用される一時的な状態変数を記録する必要があります。

■processイベント

processイベントは同期実行を担当します。

このイベントは完了したかどうかに関する状態を返します。

processイベントは、processで返されるreturn変数によって要求された場合、同期サービスによって再度呼び出されます。

■abortイベント

同期中にプロセッサ障害が発生するとabortイベントが発生します。

■activateイベント

activateイベントは、プロセスがクラスタ内のどのノードに対しても処理を必要とせず、プロセスによって発信されたすべてのメッセージが完了した場合に発生します。

チェックポイント同期アルゴリズム

■チェックポイント

すべてのクラスタにはチェックポイントのグループが含まれており、各チェックポイントには「チェックポイント名」と「チェックポイント番号」が存在します。

「チェックポイント番号」は、クラスタ内のリンクされていないがまだ開いているチェックポイントを一意に参照するために使用されます。

■参照カウント

すべてのチェックポイントには、そのチェックポイントがいつリリースされるかを決定するために使用される参照カウントが含まれています。

このアルゴリズムは、パーティションまたはマージが発生するたびに参照カウント情報を再構築します。

 

参考元サイト

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

この記事のタグ一覧

おすすめの記事

【トレンド解説】米国における「 生成AI活用 」最新動向📈

トレンド解説

2024.05.07

【トレンド解説】米国における「 生成AI活用 」最新動向📈

「米国における 生成AI活用 最新動向」について解説しています。生成AIは日本企業にも多くの可能性をもたらし、「デスクワークの効率化」や「業務の自動化推進」に貢献しています。生成AIを理解し、活用することが、グローバルな競争力を高める鍵となります。

経営活動に活用できる 原価管理 を実現するには? 〜製造業の現実的な課題に向き合い、現場視点から改善する原価管理手法の必達プロセスをご紹介〜

ウェビナーまとめ

2024.05.15

経営活動に活用できる 原価管理 を実現するには? 〜製造業の現実的な課題に向き合い、現場視点から改善する原価管理手法の必達プロセスをご紹介〜

2024年3月12日に三菱電機ITソリューションズ株式会社とアットストリームパートナーズ合同会社の共催で、組立加工製造業向けのセミナー「なぜか高くなる原価を管理する 不確実性の時代を乗り切るためのコスト戦略とは」が開催されました。本セミナーでは、製造業における原価管理の現状と改善手法について深く掘り下げ、経営活動への具体的な活用方法を提示しました。今回は、その講演の要点をお伝えします。

【ChatGPT探訪】「 無限議論 」〜最強スタンド考察〜🤔

ChatGPT探訪

2024.05.07

【ChatGPT探訪】「 無限議論 」〜最強スタンド考察〜🤔

マジセミSNSに投稿した 【担当者A】の「 無限議論 」〜最強スタンド考察〜💬 を記事化したものです。 ChatGPTに課金していないみなさんにも、 AI同士の議論をお楽しみいただけます👍 ※原稿テキストを放り込むだけで、 ジョジョ風イラストを作成してしまう生成AIがすごくないですか?