概要
前回 Gitlab の各種ロールについて調べました
今回はロールごとにインスタンスを作成して連携する方法を紹介します
環境
- Ubuntu 18.04
- Gitlab-ee 13.7.3
postgres_role と redis_master_role インスタンスの作成
まず PostgreSQL と Redis を管理するインスタンスを作成します
Gitlab の構築
こちらを参考にまずは Gitlab を各インスタンスにインストールしてください
なお postgres_role
を作成する場合は EXTERNAL_URL
を設定しないで作成してください
PostgreSQL に接続する gitlab ユーザのパスワード設定
gitlab-ctl pg-password-md5 gitlab
生成されたパスワードは後で使うのでメモしておきます
設定ファイル変更
PostgreSQL と Redis を起動するための設定をします
外部から接続する想定なので listen_address
や認証情報を設定します
sql_user_password
には先程作成したパスワードのハッシュ文字列を入力してください
また PostgreSQL12 から repmgr が使えないので false にしておきます
vim /etc/gitlab/gitlab.rb
roles ['postgres_role', 'redis_master_role']
repmgr['enable'] = false
postgresql['listen_address'] = '0.0.0.0'
postgresql['port'] = 5432
postgresql['sql_user'] = "gitlab"
postgresql['sql_user_password'] = "335158fc1aa26a831656b369e233217d"
postgresql['trust_auth_cidr_addresses'] = %w(0.0.0.0/0)
redis['port'] = 6379
redis['bind'] = '0.0.0.0'
* gitlab-ctl reconfigure
* gitlab-ctl status
5432 と 6379 が 0.0.0.0 で LISTEN していることを確認しましょう
以下のようにプロセスが起動していることを確認します
run: consul: (pid 24806) 116s; run: log: (pid 24842) 113s
run: logrotate: (pid 24707) 140s; run: log: (pid 24715) 139s
run: node-exporter: (pid 24822) 114s; run: log: (pid 24746) 133s
run: postgres-exporter: (pid 24835) 113s; run: log: (pid 24787) 119s
run: postgresql: (pid 23639) 454s; run: log: (pid 23638) 454s
run: redis: (pid 20593) 1216s; run: log: (pid 20604) 1213s
run: redis-exporter: (pid 24828) 113s; run: log: (pid 24764) 127s
application_role インスタンスの作成
次に Rails アプリが動作するインスタンスを作成します
Gitlab の構築
こちらを参考にまずは Gitlab を各インスタンスにインストールしてください
application_role を設定する
事前に作成した PostgreSQL と Redis に接続します
また起動するロールは application_role
にします
IP の部分は先程作成した postgres_role
と redis_master_role
のインスタンスの IP を指定しましょう
application_role
のみだと nginx が起動しないので nginx は別途有効にします
vim /etc/gitlab/gitlab.rb
roles ['application_role']
nginx['enable'] = true
gitlab_rails['db_username'] = "gitlab"
gitlab_rails['db_password'] = "335158fc1aa26a831656b369e233217d"
gitlab_rails['db_host'] = "192.168.100.11"
gitlab_rails['redis_host'] = "192.168.100.11"
再起動してプロセスの確認をしましょう
8080 が 0.0.0.0 で LISTEN していることも確認します
* gitlab-ctl reconfigure
* gitlab-ctl status
run: gitaly: (pid 103720) 29s; run: log: (pid 103719) 29s
run: gitlab-exporter: (pid 103881) 13s; run: log: (pid 103880) 13s
run: gitlab-workhorse: (pid 103857) 19s; run: log: (pid 103856) 19s
run: logrotate: (pid 98390) 2737s; run: log: (pid 22584) 67534s
run: node-exporter: (pid 23113) 67415s; run: log: (pid 22616) 67528s
run: puma: (pid 103888) 11s; run: log: (pid 103839) 23s
run: sidekiq: (pid 103898) 6s; run: log: (pid 103846) 21s
動作確認
application_role
にアクセスして正常に Gitlab が動作するか確認しましょう
nginx を有効にしているので application_role
インスタンスの IP にアクセスすれば Gitlab が動作しているのが確認できると思います
最後に
application_role
と postgres_role
, redis_master_role
にインスタンスを分けて Gitlab を起動する方法を紹介しました
ロールごとにインスタンスを分けることで冗長化できる他管理も楽になるかなと思います
今回の構成であれば application_role
を増やして LB を追加すればアプリケーションレイヤーのスケールは簡単にできるようになると思います
参考サイト
- https://docs.gitlab.com/omnibus/roles/#gitlab-app-role
- https://docs.gitlab.com/ee/administration/reference_architectures/25k_users.html
- https://hawksnowlog.blogspot.com/2020/04/setup-external-redis-server-with-gitlab.html
- https://hawksnowlog.blogspot.com/2020/04/setup-external-postgresql-server-with-gitlab.html
0 件のコメント:
コメントを投稿