Hyper-Vを利用したシンクライアントな開発環境へ完全に移行しました
もうすこし様子をみてからにしようかとも思いましたが、 この週末の間にプログラムの動作確認用の環境を3つ更新しないといけなくなりましたので、 ついでに、ローカルで動かしていたメインの開発環境を全てリモートへ移行させちゃいました。
始まりはGW
思い返せばGWが全ての始まりでしょうか。
GWをまるまるつぶしてWindows Serverを研究し、 ほとんど触ったこともなかった状態から セットアップして簡単な管理ができるようになったのが二か月前。
Windows Serverがこんなに高機能なサーバ製品だったとは目から鱗の体験でした。
VMの管理が面倒くさい
もともとローカルのMacBookProにVMWare Fusion を入れ、複数のWindowsを 切り替えながら開発を行う体制にはしていたのですが、バックアップや VMの移行の煩雑さをどうにかしたいなと思ってました。
決め手はHyper-Vレプリカ
それが、Windows Serverに標準装備されているHyper-Vで、VMの管理や 手軽に差分レプリケートできることを知り、まぁこれしかないなとなりました。
構成など
プライマリサーバ
- Xeon E52630 2.3GHz (6コア) x 2 つまり 論理24コア
- メモリ128GB
- システム用 SAS 600GB x 2 RAID1 つまり 600GB
- データ用 Fusion-IO 300GB
- データ用 SAS 600GB x 4 RAID5 つまり1800GB
- Windows Server 2012 R2 DataCenter
という構成で、OSと各VMの共有フォルダとしてRAID1の600GBのストレージ、VMの仮想ディスク置き場としてFusion-IO 300GB + RAID5の1800GBな記憶域階層を割り当てています。
レプリカサーバ
の5年落ちのサーバを適当にもらってきて使用。 ディスクさえ元気ならCPUやメモリは適当でいいんです。
運用
これら2台のHyper-Vサーバを用意し、 プライマリのサーバにゲストのVMをたくさんいれて、Windowsならリモートデスクトップ、Linuxならsshで潜る形となります。
上の方でも書きましたが、バックアップではなく、5分間隔でレプリカサーバに対して各VMの差分データを送信し、万一の障害にそなえる形としています。
ソースコードは別にSubversionやGitできちんと管理されていますし、開発環境なので5分前のデータが消えたくらいなんともないというスタンスです。
また、障害時にはレプリカサーバでVMを起動して、そちらで作業を行うことも可能なのですが、そういう状態になったら必要なVMをローカルのWindows10のHyper-Vで動かすことになるんじゃないかなと思ってます。
のりこえた数々のタスク
- VMWare から Hyper-V 形式へのVMの変換方法の調査
- プライマリサーバ用のハードの準備とOSセットアップ
- レプリカサーバ用のハードの準備とOSセットアップ
- クライアント用のPCの準備と設定
- Hyper-Vレプリカを行うための証明書の準備
こうやってみると大したことはしてないですが、仕事の合間というか仕事のためのテストもかねて、なんだかんだで2ヵ月かかりました。
これでMacBookのSSDが飛んだら開発環境の再構築が面倒だなって不安がなくなりました。
VMのバックアップってたいてい100GB以上の仮想ディスクをまるごとコピーするしかなくて、バックアップが億劫になるんですよ・・・
リモートのVMでのビルドもローカルと同じ程度の速度はでていますし、わりと違和感なく操作もできます。
今この記事を書いているメールや雑務用のVMも、開発系VMとは完全に別物としてリモートにあり、クライアント側で複数のリモートデスクトップを切り替えながら使っています。
コンテナにデータ自体も保持させて、それごと保全でいいやという考えなら、 Windowsのコンテナにしちゃうのもいいかもしれませんね? こちらもどうなっていくのか楽しみです。