AWS Route53で場所を認識したGitリモートURL
GitLabユーザーに、自動的に最も近いGeoサイトを使用する単一のリモートURLを提供することができます。これは、ユーザーが移動しても、より近いGeoサイトを利用するためにGitの設定を更新する必要がないことを意味します。
これは、Git Push リクエストをセカンダリサイトから プライマリサイトに自動的にリダイレクト((HTTP) )またはプロキシ((SSH) )することができるからです。
この説明ではAWS Route53 を使っていますが、Cloudflare のような他のサービスを使うこともできます。
前提条件
この例では、すでにセットアップされています:
-
primary.example.com
Geoプライマリサイトとして。 -
secondary.example.com
Geoセカンダリーサイトとして。
git.example.com
サブドメインを作成し、自動的にリクエストを誘導します:
- ヨーロッパからセカンダリサイトへ。
- その他の拠点からプライマリサイトへ
どのような場合でも
- 独自のアドレスでアクセスできる GitLab のプライマリサイト。
- GitLabセカンダリサイト。
- あなたのドメインを管理するRoute53 Hosted Zone。
Geo_プライマリサイトと_ _セカンダリサイトを_まだセットアップしていない場合は、Geoセットアップ手順を参照してください。
トラフィック ポリシーの作成
Route53 Hosted Zoneでは、トラフィックポリシーを使用してさまざまなルーティング設定を行うことができます。
-
Route53のダッシュボードに移動し、Traffic policiesを選択します。
-
Create traffic policy]を選択します。
-
ポリシー名]フィールドに
Single Git Host
を入力し、[次へ]を選択します。 -
DNS タイプは
A: IP Address in IPv4 format
のままにします。 -
接続先…を選択し、ジオロケーションルールを選択します。
- 最初のロケーションは
Default
のままにしておきます。 - 接続先…を選択し、新しいエンドポイントを選択します。
-
Type
value
を選択し、<your **primary** IP address>
と入力します。 - 2つ目の「場所」は、
Europe
を選択します。 - 接続先…を選択し、新しいエンドポイントを選択します。
-
Type
value
を選択し、<your **secondary** IP address>
と入力します。 -
Create traffic policy]を選択します。
-
ポリシーレコードの DNS 名を
git
で入力します。 -
ポリシーレコードの作成]を選択します。
たとえば、git.example.com
、Geo サイトへのトラフィックをジオロケーション別にディストリビューションする単一ホストのセットアップに成功しました!
Git clone URL が特別な Git URL を使うように設定します。
ユーザーが初めてリポジトリをクローンする際には、通常 Git リモート URL をプロジェクトページからコピーします。デフォルトでは、これらの SSH や HTTP の URL は現在のホストの外部 URL に基づいています。たとえば
git@secondary.example.com:group1/project1.git
https://secondary.example.com/group1/project1.git
をカスタマイズできます:
- SSH リモート URL をカスタマイズして、場所を認識する
git.example.com
を使用することができます。これを行うには、ウェブノードのgitlab.rb
でgitlab_rails['gitlab_ssh_host']
を設定して、SSH リモート URL ホストを変更します。 - HTTP リモート URL は、Custom Git clone URL for HTTP(S) で示したとおりです。
Git リクエストの振る舞いの例
上記の設定手順を踏むと、Git リクエストの処理がロケーションを意識したものになります。リクエストに対して
- ヨーロッパ以外では、すべてのリクエストはプライマリサイトに送られます。
- ヨーロッパ内では
- HTTP:
-
git clone http://git.example.com/foo/bar.git
はセカンダリサイトに向けられます。 -
git push
は最初にセカンダリに誘導され、自動的にprimary.example.com
にリダイレクトされます。
-
- SSH:
-
git clone git@git.example.com:foo/bar.git
はセカンダリに向けられます。 -
git push
は最初にセカンダリに送られ、セカンダリは自動的にリクエストをprimary.example.com
にプロキシします。
-
- HTTP: