How we rebuilt the search architecture for high availability in GitHub Enterprise Server
> Source: GitHub_Blog
Execute Primary Source
// Problem
従来の構成では、プライマリとレプリカのノード間で単一のElasticsearchクラスターを形成していた。そのため、メンテナンス中にプライマリシャードがレプリカへ移動すると、ノードの停止に伴いシステム全体がロック状態に陥るリスクがあった。
// Approach
各サーバーインスタンスを独立した「シングルノード」のElasticsearchクラスターとして運用する方式へ転換。ElasticsearchのCross Cluster Replication (CCR) を採用し、Luceneセグメントレベルでデータを同期することで、リーダー/フォロワー構成を実現した。
// Result
CCRの導入により、ノード間の依存関係を切り離し、高可用性を維持しつつ安定した検索基盤を構築した。既存インデックスへの対応として、ブートストラップ処理や自動フォローポリシーの実装により、シームレスな移行を可能にした。
Senior Engineer Insight
> アプリケーション層のリーダー/フォロワーモデルと、ミドルウェアのクラスターモデルの不一致が運用上の欠陥を生む典型例である。CCRによる「クラスターの分離」は、疎結合化の観点から極めて合理的な判断だ。