GitHub Enterprise Serverの検索基盤をCCRで刷新

従来の課題と背景

Elasticsearchクラスタ構成の限界
HA構成でシャード移動によるロック状態発生
レプリカ停止時に復旧不能なデッドロック

CCRによる新アーキテクチャ

各ノードを独立した単一ノードクラスタに変更
Cross Cluster Replicationでデータ複製
Luceneセグメント永続化後に安全に複製

導入方法と今後の展開

バージョン3.19.1から利用可能
2年かけてデフォルト化を予定
詳細を読む

GitHubは、GitHub Enterprise Serverの検索基盤をElasticsearchのCross Cluster Replication(CCR)を活用した新アーキテクチャに刷新したことを発表しました。検索機能はIssues、リリース、プロジェクトなど多くの機能の基盤となっています。

従来のHA構成では、プライマリとレプリカをまたいでElasticsearchクラスタを構築していました。この方式ではElasticsearchがプライマリシャードをレプリカに移動させることがあり、メンテナンス時にレプリカを停止するとデッドロック状態に陥る深刻な問題がありました。

新アーキテクチャでは、各Enterprise Serverインスタンスが独立した単一ノードのElasticsearchクラスタとして動作します。CCRにより、Luceneセグメントに永続化されたデータのみを複製するため、データの整合性と耐久性が大幅に向上しています。

導入にあたっては、既存インデックスへのフォロワー接続を行うブートストラップ処理と、新規インデックス向けの自動フォローポリシーの設定が必要です。フェイルオーバーやインデックス削除、アップグレード用のカスタムワークフローも新たに開発されています。

利用開始にはGitHubサポートへの連絡とライセンス取得が必要で、設定変更後にバージョン3.19.1以降へのアップグレードで移行が完了します。現時点では任意ですが、今後2年以内にデフォルトのHA方式として標準化される予定です。