トップ «前の日記(2015/04/05 (日) ) 最新 編集 RSS feed

HsbtDiary


2015/04/06 (月) [長年日記]

曇のち雨

社内の GitHub Enterprise を OpenStack に移行した

勤務先のペパボでは GitHub Enterprise(GHE) を全社員使っていて、コードやアイデアや作業記録をすべて集約するようにしているのだけど、全社員となると導入した当初に用意したリソースではどうしても厳しくなってきた。さらに使用していた VirtualBox は GHE 2.x シリーズはサポート対象外となってしまい、未来に向けてなんとかしなくてはいけないということでなんとかした。

取りうる選択肢としては、AWS にのせるとか ESXi をインストールしてその上にのせるなどがあったのだけど、弊グループでは大規模な OpenStack 基盤の運用ノウハウがあるということと、ペパボでもアプリケーション・サーバーは積極的に OpenStack の上に載せていくという動きがある(と言っても動きを作っている一人ではある)ので、OpenStack の上に構築することにした。

OpenStack は AWS のリージョンそのものを作れる仕組みと理解すると早いと思う。ざっくりつまむと以下の通り。

  • インスタンスタイプとか、AZとかも全部定義して使う。なので vCPU だけすげー増やすとか、メモリだけ増やす、ということが出来る
  • API はプログラマブルに IaaS を使うのに必要なものはだいたい揃っている、今 fog とか使ってあれこれするツールを作ってる
  • client は python の pip 経由でだいたいインストールできる、credential は ENV から読む(やめたい)

ネットワークであるとか、hypervisor のバランシングルールみたいな奴は自分たちで作るのは AWS に比べると面倒ではあるけど、面白い部分でもあるので頑張るって感じ。

で、GHE だけどアプライアンス製品ということもあって、旧バージョンの 11.x シリーズからのマイグレートも全部用意されていて、ガイドの手順にしたがってすすめるだけで構築自体は特に問題なく完了した。マイグレートのページをブラウザから開くと unicorn worker 経由で rake db:migrate を実行する様は圧巻だった。

どちらかというとマイグレートよりも、OpenStack で GHE を動かすというのがすげー辛かった。

  • GHE はインスタンスの root volume を 80 GB を用意せよとガイドに書いてあるけど、実際には 82GB くらい確保しないとエラーメッセージもなく起動途中に突然死という状態になった。しょうがないので compute node の母艦にログインして KVM のエラーメッセージを見るなどして原因の切り分けなどをしていた。
  • OpenStack の Neutron(ネットワークコンポーネント) で作った IP の自動割当が動かなくて、GHE 起動後のシリアルコンソールから static IP の設定をしないとつながらない
  • Cinder(ブロックストレージ) を用意して /dev/vdc に割り当てないとセットアップを実行することができない。最初、Cinder を用意していなくて、temporary volume (/mnt とかに割り当てられて、terminate しないと消えないやつ)を使ってやろうとしていたけど、/dev/vdc 決め打ちで死んだ。しょうがないので Cinder も用意してなんとか進めることができた。

そんなこんなで苦労した GHE ですが、事前に何回もマイグレートテストしたり、手順もばっちり用意していたこともあってロールバックすることなく無事 2.1.5 が社内で稼働することになった。ものすごく快適。

α7s Ver 1.21 にアップグレードした

レンズアップデートが動かない不具合が修正されたらしく本体のアップグレードの後に持っている FE レンズもそれぞれ V2 にアップグレード完了した。便利。