How we rebuilt the search architecture for high availability in GitHub Enterprise Server

This post details the transition from a clustered Elasticsearch setup to using Elasticsearch's Cross Cluster Replication (CCR) for High Availability (HA) GitHub Enterprise Server. It explains the previous challenges with clustered Elasticsearch, such as primary shard movement to replica nodes causing lock states, and the limitations of previous attempts at search mirroring. The new architecture utilizes independent single-node Elasticsearch clusters with CCR, allowing for controlled data replication of durably persisted data. A sample workflow for bootstrapping CCR, including attaching followers to existing indexes and setting up auto-follow policies, is provided. The post also outlines the necessary steps for administrators to adopt this new HA mode, including obtaining a license and configuring `ghe-config app.elasticsearch.ccr true`.