2017年12月12日

OpenVZにGitLabを入れようとしてハマる

遅ればせながら、ソース管理をSVNからGitへ移行しようと考えてGitクローンであるGitLabを自前で立ち上げることにしました。

社外からのソース管理サーバにアクセスするケースも少なくないので、各社のレンタルVPSを比較して

 ・安価
 ・プラン変更が容易
 ・ディスク容量が拡張可能

だったカゴヤ・ジャパンのVPSであるKAGOYA CLOUD/2のOpenVZを選択。

GitLabのインストールマニュアルでは「recommend at least 4GB of free memory」とありましたが、最初は保証1GB(最大2GB)のミニマムなプランを選択してチャレンジしてみました。
この選択ミスが無駄な1日(・・・いや1日じゃ済まないか・・・)の始まりとなったのです・・・。


***


GitLabの情報をネットで調べてみると「インストールは超簡単」「公式マニュアル通りでOK」「5分で終わる」と導入のしやすさの評価は高かったのですが、実際にOpenVZへインストールしてみると、reconfigureの途中でスクリプトのエラーが発生して postgreSQLのインストールがコケてしまいました。
エラーの内容を見ているとpostgreSQLの処理中に処理結果が帰ってこなくてエラーになっているようでしたので、timeoutのパラメータをいじってみたりしましたが、同様の事例を調べて最終的には

/etc/gitlab/gitlab.rb



# postgresql["shared_buffers"] = "128MB"

のコメントアウトを外してpostgreSQLの共有バッファのサイズ指定を有効にしてから

gitlab-ctl reconfigure

を実行したりして、なんとかインストールは完了。
しかしgitlab-ctrl startを実行してGitLabを起動してブラウザでGitlabの管理ページを開くと500エラーが発生します。たまにならまだしも毎回。

この場合はメモリ不足が発生しているらしく、free -m でメモリの空きをチェックしてみましたがswap領域も確保されていてメモリを使い切ってないように見えました。
推奨以下の環境に強引に突っ込もうとしてるしと考えて、苦労して立ち上げた環境を破棄して、1つ上の 保証2GB(最大4GB)のプランへ変更してみました。
(※ここに至るまでに既に数時間経過している・・・)


OpenVZのプラン変更を数クリックで行って、これで memory allocation error ともおさらば・・・と再セットアップを行ったものの、やっぱり前回と同じ状況(インストールは途中で失敗・パラメータを変更してなんとかセットアップ終了・でも管理画面で直ぐにエラーが出る)になっちゃいます。

若干、発生頻度が下がったかな?くらいの違いしかなくて、

・管理画面を開いてると500エラーとか502エラー
・裏では memory allocation error
・/var/log/gitlab/unicorn/unicorn_stderr.log に fork のエラー
 などなど

ここまで CentOS7 で試していたので CentOS6 に環境を変更し直しても同じでした。
でも、ローカルPCのVMに CentOS7 の環境を作ってそこに GitLab をインストールしてみたら、文字通り5分で立ち上がる・・・。
とすると、インストーラー側の問題ではなくて、OpenVZ側の環境の問題ってことか。


***


・・・経過説明が長くなりましたが、結局のところOpenVZの環境設定で privvmpages というパラメータで「アプリケーションにより割り当てられるプライベートメモリのサイズ」が制限されてるんだけど、ここに引っかかってしまっていたようです。

↓free -m と privvmpages の値の状況。
縦軸のlimitが上限値で、heldが現在値。failcntが失敗回数・・・全然だめじゃん。

20171210.jpg

環境の制約なんで、privvmpagesのパラメータを変えることは不可能。

nginx/postgreSQL/postfix/gitlab・・・利用するアプリケーションそれぞれのメモリ割当をコントロールすればどうにかなるかも知れませんが、手作業で1つ1つ自力でセットアップしていくよりも、VPSサーバを変えたほうが早いです(涙
幸いにしてカゴヤ・ジャパンのOpenVZは日割り料金だから傷は浅くて済むし。


・・・と、休日を潰して苦労したお話でした。


※さくらのVPSでは文字通り5分でインストール終了。とほほ
posted by しげ at 09:23| Comment(0) | Linux | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。