Elasticsearch クラスターと Bitbucket Data Center の併用
Bitbucket Data Center は、コード検索を有効化するためにリモート Elasticsearch インストールに接続する必要があります。コード検索は高可用性のために必要不可欠ではありませんが、Elasticsearch ノードのクラスタを実行しすることで、Bitbucket のコード検索インデックスでの高可用性を実現することができます。このページでは、Bitbucket のアプリケーション ノードに接続されているロード バランサの背後で Elasticsearch ノードのクラスタをデプロイする際のガイダンスを提供します。
Bitbucket Data Center はクラスタの Elasticsearch へのリモート接続を 1 つのみ持つことができます。これは、スタンドアロンの Elasticsearch インストールまたはロード バランサの背後のクラスタ化されたインストールにすることができます。
Bitbucket Data Center では、クラスタ化された Elasticsearch を使用できます。ただし、アトラシアン サポートはその構成に対するサポートの提供は行いません。つまり、アトラシアンではリバース プロキシに関するあらゆるサポートの提供が保証されません。構成でサポートが必要な場合、アトラシアン コミュニティに質問を登録してください。
標準的な Bitbucket Data Center のコンポーネント図
Bitbucket Data Center で使用するための Elasticsearch クラスタのデプロイを検討する前に、Bitbucket Data Center の標準的なインストールについて理解しておくことをおすすめします。「Bitbucket Data Center の要件」ページには、詳細な要件の概要が記載されています。
標準的な Bitbucket Data Center インストールの最小構成としては、次のコンポーネントがそれぞれの専用マシンで用意され、それぞれが高速 LAN で接続されている必要があります (各コンポーネントの詳細な要件を表示するにはリンクをクリックしてください)。
- すべてが Bitbucket Data Center の同じバージョンを実行している Bitbucket アプリケーション ノード
- cookie ベースのセッション アフィニティ ("スティッキー セッション") をサポートするロード バランサ
- ブロックレベルのデータベースを取得できる共有データベース
- 単一のマウント ポイントとして NFS 経由でアクセス可能な共有ファイル システム
- Bitbucket アプリケーション ノードへの単一の接続を持つリモート Elasticsearch ノード
Bitbucket Data Center のコンポーネント図 (Elasticsearch クラスタ x 1)
このコンポーネント図は、ロード バランサの背後で Elasticsearch ノードのクラスタとデプロイした Bitbucket Data Center インストールの構成例を示します。この例では、独自のクラスタで Elasticsearch を実行していると仮定します。
Amazon Elasticsearch サービスと Bitbucket Data Center の併用
Bitbucket Data Center の Elasticsearch クラスタを最も簡単にセットアップおよびデプロイする方法は、Amazon の Elasticsearch サービスを使用することです。アトラシアンでは、AWS Elasticsearch クラスタをセットアップするための直接的なサポートは提供していませんが、Amazon ドキュメント「Amazon Elasticsearch Service (ドキュメント)」を確認うることをおすすめします。
正しいバージョンを使用していることをご確認ください
Data Center はアップグレード予定に対応するため、Bitbucket 6.0 がリリースされるまで、Elasticsearch 2.3 と 5.5 の両方を引き続きサポートします。これ以降、Elasticsearch 2.3 は Data Center でサポートされません。
Bitbucket Data Center でのスタンドアロン Elasticsearch クラスタのセットアップ
AWS の Elasticsearch サービスを使用せずに Elasticsearch ノードのクラスタを自身でセットアップする場合、一般に 2 つ以上の Elasticsearch ノードを持つクラスタをセットアップします。2 つのノードを使用すると、各ノードにレプリカを持たせることができます。これにより、1 つのノードが短期間ダウンした場合、別のノードを修正 / 交換している間に引き続きすべての検索結果を確認できます。耐障害性をさらに向上させる必要がある場合は、クラスタ内のノードの数を増やします。
- Elasticsearch クラスタのセット アップについての Elastic の公式なドキュメント: Elasticsearch - Installation (5.5)。
Elasticsearch クラスタの保護
Elasticsearch クラスタをセットアップしたら、クラスタを保護することが重要です。さまざまな技術を使用してクラスタの Elasticsearch を保護できます。ベーシック認証から開始する場合、有効なユーザー名とパスワードなしでのクラスタへのアクセス試行をブロックするプラグインを Elasticsearch で使用する必要があります。アトラシアンではこのために Buckler という小規模なプラグインを作成しました。
Atlassian の Buckler プラグインで Elasticsearch を保護
For instructions on how to configure Buckler, see the page Install and configure a remote Elasticsearch instance - Step 3: Secure Elasticsearch. Buckler needs to be installed on every node in the cluster. In any case, if you're going to use Amazon's Elasticsearch Service, you must set the AWS region in the bitbucket.properties
file to enable request signing.
Elastic の Shield プラグインで Elasticsearch を保護
Bitbucket は、ベーシック認証を提供する他のプラグイン (Elastic の Shield プラグインなど) を通じた Elasticsearch への認証もサポートします。このプラグインは、アトラシアンでは直接サポートされませんが、ベーシック認証システムを活用して Bitbucket と相互にやり取りできます。
Amazon のリクエスト署名で Elasticsearch を保護
ベーシック認証および AWS のリクエスト署名が、Bitbucket (AWS リクエスト署名 Bitbucket 4.10+) でサポートされています。AWS のリクエスト署名では、AWS Elasticsearch サービスを Elasticsearch クラスタとして使用することができます。これにより、Elasticsearch クラスタを保護し、AWS ec2 内で Bitbucket が実行されているノードの AIM ユーザーからのリクエストのみを許可できます。