自宅サーバはいいぞ
これは, TUT Advent Calendar 2022 14日目の記事です.
昨日の記事はsh00t(.er)さんの「レイマーチングことはじめ」でした.
はじめに
はじめまして. 今年, 豊橋技術科学大学(Toyohashi University of Technology; TUT) に入学した, B1の DDlia です. よろしくお願いします.
まずは, 簡単に自己紹介をさせていただきます.
- 名前: DDlia
- 所属: 情報・知能工学系(3系)
- 出身: 北海道札幌市
- サークル: コンピュータクラブ(TUT-CC), 総合文化部音楽技術部門(TechnoTUT)
北海道には4つの高専(旭川, 函館, 苫小牧, 釧路)があるので技科大には北海道から来ている人はそこそこ多いんですが, B1やB2だとレアだと思います(B1, B2は愛知県/静岡県出身の人が多い). 今年のB1は北海道出身は2人らしいです.
今回は私が今年の3月から運用を始めた自宅サーバ関連について記事にしようと思います. ちなみに, 大学内でこの自宅サーバが噂になってるらしく, 初対面の先輩に「自宅でサーバやってる人」と言うと大体「あ~あの噂の」と返ってきます.
自宅サーバのいいところ
どうして自宅サーバとかいう面倒くさいことをしてるんだ, AWSやGCPなどのクラウドを使えばいいじゃないかと思われると思います.しかし, 実際に自宅サーバを運用しているのはそこにいくつか利点があるからです.
1つ目は料金面です. AWSやGCPでは計算時間やネットワーク転送量に応じて, 従量課金がされます. 私は学生でかつ, アルバイトもしていないので資金面に余裕がありません. 従量課金という不確定な出費は怖いのです. また, クラウド破産という言葉を聞いたことがあるかもしれません. このような従量課金のサービスを使っていて, DDoS攻撃などを受けたり, 設定ミスで仮想マシンが動きっぱなしになったりすると, 計算時間やネットワーク転送量が跳ね上がり高額の利用料を請求されます.
2つ目は技術的なノウハウを蓄積できることです. AWSやGCPなどのクラウドサービスでは, 管理画面でポチポチクリックするだけで仮想マシンを作成できますが自宅サーバではそうもいきません. サーバだけでなくネットワーク周りも全て自力で構築する必要があります. これらの作業はクラウドサービスでの仮想マシンの作成と比較すると大変ですが, サーバやネットワークに関する知識を得ることができます.
3つ目は単純にロマンです. L2スイッチのランプの点滅とかいいですよね. ずっと眺めていられます.
きっかけ
実は受験生時代に間近でMinecraftサーバの運用をしているところを見る機会がありまして, 受験が終わったら自宅サーバをやってみたいな~と思っていました.
そこで、合格発表前(良い子はちゃんと中期日程, 後期日程に向けてお勉強しましょう!)に2台のデスクトップPCを購入しました. 有識者(@ddPn08さんや@launchpencilさん, いつもお世話になっています, ありがとうございます) にいろいろお聞きしながらDebianをインストールし, Minecraftサーバの運用を開始しました.
ネットワークに関しては勢いで2021年の秋くらいにNECのIX2105というVPNルータを購入して, NECの公式マニュアルを見ながらポチポチ触ってました. 良くないね, 受験生はちゃんと勉強しましょう.
こんな経緯がありまして, サーバと一緒に札幌から豊橋へ引っ越し運用していくことになったわけです.
構成
札幌に1台, 豊橋に5台のサーバを設置しています. 豊橋にある5台のうちの4台は, Proxmox VEというものをつかってクラスタリングしています. また, 豊橋のルータはOracle Cloud Infrastructure(OCI)と拠点間VPN接続を行なっており、自宅サーバとクラウドVMを簡単に接続することができます.
最近になって, 札幌に置いてあるサーバと疎通が取れなくなりました. 電源を引き抜かれたか, 故障な感じがあります. 年末の帰省で障害対応ですね……
ちなみに, 毎晩このサーバたちと添い寝[*3]して暮らしています. 8日目に も さんの「豊橋技科大宿舎限界突破マニュアル」という記事がありましたが, 私の部屋は一体どのレベルに当てはまるんですかね? 気になって夜しか眠れません.
サーバについて
仮想化
Proxmox VEというものをつかってクラスタリングしている, と書きましたが少しここらへんについて説明します.
Proxmox VEというのはDebianをベースにした仮想化プラットフォームのことです. そもそも仮想化とはなんぞや, となるわけですが簡単に言うとパソコンの中で仮想的なパソコンを動かす技術のことです. 一見すると大変面倒くさいことをやっているように思えますが, これはちゃんとした利点があります.
まず, サーバ台数を少なくすることができます. 1台のサーバにたくさんの仮想的なサーバを詰め込めるので大量のパソコンを並べる必要がなくなります. 他には, ライブマイグレーション機能が挙げられます. これは非常に凄い機能で, コンピュータの中で動いているVM(仮想マシン)を停止せずに他のコンピュータに移動させることができます. 例えば, 一時的に1台のコンピュータを停止してメンテナンスを行いたいがサービスは停止させたくない, といった場合に役に立ちます.
仮想化アプライアンスとしては, VMware ESXiやHyper-Vが有名ですが, Proxmox VEは無料で様々な機能が使える上, VMとLXCというLinuxコンテナをWeb UIを通して簡単に扱うことができます.
サーバ仮想化の恩恵として, 気になるソフトウェアや技術を気軽にサクッと試すことができるという点が挙げられます. なにかやりたいことが出てきたらサクッと仮想マシンなりコンテナなりを立てていろいろ弄ることができます. 他の重要なソフトウェアが動いている環境とは完全に隔離されていますので, 仮にやらかしても問題ありません. 気に入らなかったり, 上手くいかなければ消し去ることもできます. これは検証環境として非常に優秀です.
ラックマウントサーバ
豊橋に5台あるサーバのうちの2台はラックマウントサーバーです. いわゆるモノホンのサーバです. 民生用とは全然違います. CPUがIntel Xeonという, 民生用のIntel Coreシリーズとは別系統のシリーズが載っていたり, メモリもECCメモリというエラー訂正が可能なものが載っていたりします. メモリスロットもいっぱいあるのでいっぱい挿せます! ストレージ周りもハードウェアRAIDといって一般的な民生用のRAID[*5]とは違ったガチガチのが使えます.! その代わりとんでもない凄い音が鳴ります. また, 面白い機能があってこういうエンタープライズなサーバーにはBMC (Baseboard Management Controller)というICチップが載っています. これはコンピュータ自体とは別に完全に独立して動作するもので遠隔から電源のON/OFFをしたり, BIOSを変更したりすることができます.
ネットワークについて
日本電気(NEC)製のIX2215というルータを使っています. これは, 業務用のVPNルータで基本的にコマンドラインで設定する必要があるのですが, 民生用機器ではできないような非常に高度なことができます.
transixとPPPoE
技科大宿舎ではNTTメディアサプライが提供する, DoCANVASというインターネット接続サービスが使えます. 基本的には, transixというIPv4 over IPv6の一種のDS-Lite(任天堂ではない)による接続方式が使えます. transixでは, キャリアグレードNAT (CGN) と言って, プロバイダ側の設備でネットワークアドレス変換を行い1つのグローバルIPアドレスを複数人で共有するためポート開放を行う事ができません. ポート開放を行なうことができないと, インターネット側から自宅のサーバーへ通信することができません.
そこで, グローバルIPオプションというものを契約してPPPoE接続による動的/固定グローバルIPを取得するか, ngrokやCloudflaredといったトンネリングツールを利用すると, インターネット側から通信できるようになります.
ただしまだ問題があって, DoCANVASではPPPoE接続をするとtransixでの接続に比べて非常に通信速度が遅いのです. 入居当初にPPPoE接続のみを試してみましたが20~30Mbps程でした. これはtransixでの接続(100Mbps~300Mbps, 速いとき)と比較して非常に低速です.
そこで, 普段の通信はtransixの方に流しつつNEC IXのポリシーベースルーティング機能によりサーバのポート開放を要する通信のみPPPoEの方に流すことで, ポート開放をしつつ快適なインターネット接続環境を実現しています.
Oracle Cloud InfrastructureとのVPN接続
Oracle Cloudにも仮想マシンがあるわけですが, クラウドVMと自宅サーバー間の通信をどうしようかという話になってきます. 特にMinecraftサーバにおいては, プロキシサーバはOracle Cloudに, ゲームサーバは宅内にあります. そこで, Oracle Cloudと自宅ネットワークを拠点間VPN接続して, プロキシサーバとゲームサーバを接続しています. このあたりの設定方法については, コンピュータクラブのとよぎぃ通信 Vol.9に書きましたので, 興味がある方は読んでみてください.
おわりに
9ヶ月ほど自宅サーバを運用してきたことによってLinuxに関する知識やコンピュータに関する新たな知見を得られたように思います. 今後は6月頃に挫折したKubernetesやBGPに関してなど, より新たな知らない分野にも手を出していきたいと考えています. 最近テクノ部の方の部室にXDJ-XZという新たな機材が導入されまして, PRO DJ LINKという面白い機能がついています. ネットワーク越しにXDJ-XZから曲のBPMや波形など, いろいろな情報を読み出すことができるというすごいやつ(適当)です. これを使って何か面白いことをしてみたいですね.
明日の記事は, 五煎目の紅茶さんの「三重県桑名市から技科大まで愛知横断通学してみた」です.