2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitLab に Network Load Balancer を導入

Last updated at Posted at 2023-10-11

はじめに

前回、GitLab に Let's Encrypt で SSL を設定。 で GitLabサーバーにSSLを導入しました。
ここでは ロードバランサー(NLB) を導入したいと思います。
また、今回は SSL もロードバランサーへ移すため、AmazonLinux2023 に GitLab をインストール からこちらの作業を行っても大丈夫です。

事前作業

今回の作業を行う前に以下の準備をしておきます。

セキュリティグループ の作成

NLB用に以下の設定で作成しておきます。

  • gitlab-nlb
タイプ プロトコル ポート ソース
HTTPS TCP 443 0.0.0.0/0

ACM による SSL証明書 の作成

NLB で利用する SSL証明書 を ACM を使って用意しておきます。

バックアップ

現在の状態にいつでも戻せるようにバックアップを取っておきましょう。

バックアップ
$ sudo cp -pi /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb_yyyymmdd

構成

今回は以下のような構成になります。
スクリーンショット 2023-10-11 17.21.59.png

ロードバランサーの作成

今回作成するロードバランサーはNLBになります。

ターゲットグループの作成

  • EC2 > ターゲットグループ > ターゲットグループの作成
項目
ターゲットタイプの選択 インスタンス
ターゲットグループ名 gitlab-nlb
プロトコル TCP, ポート:80
IP アドレスタイプ IPv4
VPC GitLabのインスタンスと同じVPC

ヘルスチェック

項目
ヘルスチェックプロトコル HTTP
ヘルスチェックパス /users/sign_in

スクリーンショット 2023-10-06 14.08.29.png

ターゲットの登録

  • GitLabインスタンスをチェックして 保留中として以下を含める をクリック
    スクリーンショット 2023-10-06 14.12.06.png
  • ターゲットを確認 で指定したインスタンスが追加されていること確認
    スクリーンショット 2023-10-06 14.12.39.png
  • ターゲットグループの作成 をクリック

ロードバランサーの作成

  • EC2 > ロードバランサー > ロードバランサーの作成
  • ロードバランサータイプ で Network Load Balancer を作成

基本的な設定

項目
ロードバランサー名 gitlab-nlb
スキーム インターネット向け
IP アドレスタイプ Ipv4

スクリーンショット 2023-10-06 14.26.02.png

ネットワークマッピング

項目
VPC GitLabのインスタンスと同じVPC
マッピング ap-northeast-1a, ap-northeast-1c, ap-northeast-1d
- サブネット パブリックサブネットを選択(デフォルトVPCの場合は全てチェックでOK)
- IPv4 アドレス AWS によって割り当て済み

スクリーンショット 2023-10-06 14.31.06.png

セキュリティグループ

事前に作成した gitlab-nlb を指定
スクリーンショット 2023-10-06 14.35.42.png

リスナーとルーティング

項目
プロトコル TLS
ポート 443
デフォルトアクション gitlab-nlb

スクリーンショット 2023-10-06 14.45.18.png

セキュアリスナーの設定

項目
セキュリティポリシー情報 ELBSecurityPolicy-TLS13-1-2-2021-06(推奨)
デフォルトの SSL/TLS 証明書 ACMで用意したSSL証明書を指定
ALPN ポリシー None

スクリーンショット 2023-10-06 14.45.40.png

セキュリティグループの変更

GitLabに付与しているセキュリティグループの設定を以下に変更します。

タイプ プロトコル ポート ソース
SSH TCP 22 接続元IP
HTTP TCP 80 gitlab-nlbのSecurityGroup

Elastic Load Balancer 経由へ切り替え

現在、EC2へアクセスができる状態になっていたと思いますが、これをELB経由にしたいと思います。

編集
$ sudo vim /etc/gitlab/gitlab.rb

GitLab に Let's Encrypt で SSL を設定 を行った後の場合、以下のような差分が出ると思います。

修正差分(GitLab に Let's Encrypt で SSL を設定)
$ sudo diff -y --suppress-common-lines /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb_yyyymmdd
 nginx['listen_port'] = 80				      |	# nginx['listen_port'] = nil
 nginx['listen_https'] = false				      |	# nginx['listen_https'] = nil
# letsencrypt['auto_renew'] = true			      |	 letsencrypt['auto_renew'] = true
# letsencrypt['auto_renew_hour'] = 21			      |	 letsencrypt['auto_renew_hour'] = 21
# letsencrypt['auto_renew_minute'] = 30 # Should be a number  |	 letsencrypt['auto_renew_minute'] = 30 # Should be a number o
# letsencrypt['auto_renew_day_of_month'] = "*/7"	      |	 letsencrypt['auto_renew_day_of_month'] = "*/7"

ここでは、インスタンス側で有効にしていた Let's Encrypt を無効にしています。
また、nginx[] のところは NLB では HTTPS で受けて、 EC2 側では ポート80 で受けるための設定になります。

もし、AmazonLinux2023 に GitLab をインストール からこちらを実施した場合は以下のような差分が出ると思います。

修正差分(AmazonLinux2023 に GitLab をインストール)
$ sudo diff -y --suppress-common-lines /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb_org 
external_url 'https://sample.hengjiu.jp'		      |	external_url 'http://ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.
 nginx['listen_port'] = 80				      |	# nginx['listen_port'] = nil
 nginx['listen_https'] = false				      |	# nginx['listen_https'] = nil

ELBでSSLを利用するため外部URLに https://<独自ドメイン> を設定します。
また、nginx[] のところは NLB では HTTPS で受けて、 EC2 側では ポート80 で受けるための設定になります。

修正したら、 gitlab-ctl reconfigure します。

reconfigure
$ sudo gitlab-ctl reconfigure
[xxxx-xx-xxT14:40:27+00:00] INFO: Started Cinc Zero at chefzero://localhost:1 with repository at /opt/gitlab/embedded (One version per cookbook)
Cinc Client, version 17.10.0
Patents: https://www.chef.io/patents
Infra Phase starting
~~~
Running handlers:
[xxxx-xx-xxT01:52:15+00:00] INFO: Running report handlers
Running handlers complete
[xxxx-xx-xxT01:52:15+00:00] INFO: Report handlers complete
Infra Phase complete, 20/851 resources updated in 01 minutes 53 seconds
gitlab Reconfigured!

gitlab Reconfigured! が確認できれば更新完了です。

DNS の設定

ドメイン(sample.hengjiu.jp) を NLB と紐付けます。
今回は Route53 でドメイン管理しているので Alias 設定を行います。

確認

ブラウザからアクセスできれば完了です。

おわりに

今回は過去の記事の続きとして作業しましたが、この構成にする場合は EC2 インスタンスはプライベートネットワークに配置した方が良いと思います。
スクリーンショット 2023-10-11 17.25.15.png
その場合、SSHが直接できないためセッションマネージャ経由などで作業するなどして構築してください。

その他の GitLab に関する投稿

GitLab に関する記事は他にも投稿しているのでよければ読んでもらえたら嬉しいです。

参考

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?