マジセミドライブ
ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。
OSS情報
2020.01.01
【OSS情報アーカイブ】Corosync
※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。
コンテンツ
「Corosync」とは
概要
Corosync(コロシンク)とは、アプリケーション内に高可用性を実装するための追加機能を備えたグループ通信システムです。Corosync(Corosync Cluster Engine)は、高可用性クラスタ構成の中でクラスタ通信層制御を担当するオープンソースクラスタ基盤としてクラスタ通信フレームワークを提供し、クラスタ構成サーバ間でノードの死活監視を行います。
オフィシャルサイト情報
■オフィシャルサイト
■主要開発元
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イベントは、プロセスがクラスタ内のどのノードに対しても処理を必要とせず、プロセスによって発信されたすべてのメッセージが完了した場合に発生します。
チェックポイント同期アルゴリズム
■チェックポイント
すべてのクラスタにはチェックポイントのグループが含まれており、各チェックポイントには「チェックポイント名」と「チェックポイント番号」が存在します。
「チェックポイント番号」は、クラスタ内のリンクされていないがまだ開いているチェックポイントを一意に参照するために使用されます。
■参照カウント
すべてのチェックポイントには、そのチェックポイントがいつリリースされるかを決定するために使用される参照カウントが含まれています。
このアルゴリズムは、パーティションまたはマージが発生するたびに参照カウント情報を再構築します。
参考元サイト
- corosync.github.io
- GitHub →corosync/corosync
- GitHub →corosync/corosync →Welcome to the corosync wiki
- Wikipedia →Corosync Cluster Engine
※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。
この記事のタグ一覧
フリーワード検索
カテゴリー一覧
アクセスランキング
- 🏆ランク1位🏆
【無料で使える】「 OCR 」ツールまとめ - 🏆ランク2位🏆
【無料で使える】「 ドキュメント管理 」ツールまとめ - 🏆ランク3位🏆
【OSS情報】Python用ASGI Webサーバ実装「 Uvicorn 」 - 🏆ランク4位🏆
【無料で使える】「 プロジェクト管理 」ツールまとめ - 🏆ランク5位🏆
【OSS情報】ディスクイメージング(クローニング)ツール「 Clonezilla 」 - 🏆ランク6位🏆
【無料で使える】「 メール 」ソフトウェアまとめ - 🏆ランク7位🏆
【無料オープンソース】「 リモートアクセス 」ツールまとめ5選 - 🏆ランク8位🏆
【無料で使える】「 翻訳 」ツールまとめ - 🏆ランク9位🏆
【無料で使える】「 マルウェア 」対策ツールまとめ - 🏆ランク10位🏆
【無料で使える】「 エンドポイントセキュリティ 」ツールまとめ