Humanity

Edit the world by your favorite way

GitLab 運用して起こったエラー対処法

tyru.hatenablog.com

tyru.hatenablog.com

の後日録です。

あと、今日ちょうど GitLab の新バージョンが出たようです。

GitLab 8.13 Released with Multiple Issue Boards and Merge Conflict Editor | GitLab

同時に git push した場合のエラー

gitlab.com

自宅サーバをジョブで一斉に yum check-update; yum upgrade -y *1 した後、GitLab の Activity を見てみると設定が push されていないノードがあった。 その際の出力には下記のようなエラーが出ていた。

GitLab: Failed to authorize your Git request: internal API unreachable
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

同時に push されるとよく起こるっぽい。 現在6台のノードを管理していて、その内3台の git push が失敗していた。

ということで冒頭のチケット通りに /etc/gitlab/gitlab.rb を以下のように変更して対処した。

unicorn['worker_processes'] = 2

/etc/gitlab/gitlab.rb を変更した後は gitlab-ctl reconfigure を忘れずに(Omnibus package 版の場合)。

バックアップスクリプトがエラーになる問題

gitlab.com

これは結構以前からエラーになっていた。 チケットの以前の締切は 9/22 だったけど、それが 10/22 (今日)に変更された。 私は上記チケットにもコメントした通り対処したので今でも起きるかは確認してないけど、 チケットがクローズされていないので直ってないはず。

このエラーが起きる条件として、バックアップ先を WebDAV でマウントしたパスに設定したことだった。

gitlab_rails['backup_path'] =  "<WebDAV(davfs2) mounted path>"

これを初期値のパスに戻して(変更した後は gitlab-ctl reconfigure を(ry)、

gitlab_rails['backup_path'] =  "/var/opt/gitlab/backups"

rsync で転送するようにした。

# root で実行
sudo -u git -H gitlab-rake gitlab:backup:create
rsync -rlv -delete /var/opt/gitlab/backups/ /path/to/remote/backup/path/

転送先のディスク容量が溢れないよう --delete を付けているけど、 安全のために転送先のファイルサーバには1か月前までのバックアップを残すとかしてもいいかも。 ただ GitLab を動かしてる VM にあまり容量がないので、ローカルには7日間しか残していない。

# root で実行
sudo -u git -H gitlab-rake gitlab:backup:create
rsync -rlv /var/opt/gitlab/backups/ /path/to/remote/backup/path/
find /path/to/remote/backup/path/ -type f -name '*.tar' -mtime +30 -delete

むしろ転送したらローカルには何も残さない方がいい気がする?(ファイルサーバには30日間残す)

# root で実行
sudo -u git -H gitlab-rake gitlab:backup:create
rsync -rlv /var/opt/gitlab/backups/ /path/to/remote/backup/path/ && rm -f /var/opt/gitlab/backups/*.tar
find /path/to/remote/backup/path/ -type f -name '*.tar' -mtime +30 -delete

*1:ちゃんと運用するなら検証環境をアップグレードした後、一定期間問題が無ければ本番環境をアップグレードした方がいいんだろうけど