自宅ラック勢が語るおうちクラウド運用経験談

この記事は、CyberAgent 22 新卒 Advent Calendar 2021の19日目の記事です。

目次

概要

本記事では、自宅でサーバーやネットワーク機器を運用する筆者が、普段の運用をどのように行っているかを紹介します。
また、後半では運用していく中で発生したトラブル経験などを紹介します。

サーバーとは

サーバーと言われてどのようなものを想像するでしょうか。
一般的に、自宅サーバーなどと言われると自宅に中古のデスクトップPCなどを用意してサーバーとして運用するような形を想像する方が多いと思います。
しかし、コンピューターにはサーバー用に設計されたものが存在します。
これらはデータセンターなどで運用され、サイズ等が規格化されておりラックサーバーなどと呼ばれています。
また、これを搭載するための専用のラックが存在しており、ユニット数(U)でいくつかの種類があります。このラックを使用することで、上方向へ積み上げてサーバーを設置することが可能になります。
ラックサーバー自体は当然、一般家庭に設置することを想定したデバイスではありませんから、静音性より冷却性能の方が重要です。そのため、基本的に静音性とは無縁です。

(サーバーラックに搭載されたラックサーバーの例)

自宅サーバーを運用するメリット

では、デスクトップPCなどを使用する場合を含め自宅でサーバーを運用するメリットは何でしょうか。
まず一つ目は、学習機会を得られるということです。
AWSやGCPといったパブリッククラウドを利用するのと違い、自宅でサーバーを運用するには、物理レイヤーからすべて自分で設計や構築を行う必要があります。
パブリッククラウドが普及した近年では、手間が掛かる事から嫌厭されがちですが、学習することに重点を置けば、より多くの学習機会が得られるというメリットがあると言えます。
その中では、ネットワークに関する知識のほか、ハードウェアに関する知識も必要となります。そして、こういったレイヤーの知識は経験も重要です。この経験は、実際に運用していく中で原因切り分けなどを実施することで身に付く部分が多い分野でもあります。

もう一つは、シビアにコストを気にする必要が無くなるということです。
パブリッククラウドでは、インスタンスの起動時間や通信量による課金でコストが掛かります。例えば、パッケージを再インストールしたい場合などに、追加でコストが発生するわけです。(ローカルにキャッシュされている場合を除く)
つまり、何かを試すたびにコストが少しずつ掛かっていきます。
しかし、自宅サーバーであれば初期投資こそ掛かるものの、継続的なランニングコストは基本的には電気代のみです。
少なくとも通信量による従量課金は気にする必要はなくなるでしょう。また、24時間運用を前提としていれば、何か検証したい項目が出てきたとしてもスペックさえ余裕があれば自由に検証することができます。
ある意味定額で使えますから、従量課金を気にする必要がなくなります。

そして、パブリッククラウドでは手が出せないよなスペックのサーバーを使用することが出来るというメリットもあります。
月数万~数十万円するような構成のサーバーを、自宅サーバーであれば自由に、それも複数台使うことが出来ます。
また、Proxmoxなどを導入する事によって、簡単に仮想化基盤を構築することが出来ます。

なぜラックサーバーなのか

大きな理由の一つは、管理面です。
サーバー用に設計されたマシンでは、BMCと呼ばれるICチップが提供する管理機能が充実しています。この管理機能は、サーバー上で動作するOS等に関係なく、ネットワーク経由で電源の操作やコンソール画面の確認に加えてメモリやCPUなどのステータスやログなども確認することができます。
このような管理機能が存在することで、ネットワーク経由での管理がしやすくなります。

もう一つは、24時間365日動作し続けることが前提となっているハードウェアのため、耐久性が非常に高いことです。
加えて、ECCメモリと呼ばれるエラー訂正機能のあるメモリを使用しているため、長時間の安定した動作が期待できます。

機材選定と設計

サーバーを運用するうえで、機材の選定と設計は重要です。
筆者の環境では、機材選定時に下記の項目を重視しています。

  • 消費電力
  • 冷却ファンが発する騒音が許容範囲内か
  • CPUやメモリなどの性能
  • 拡張性や搭載可能なストレージの種類(サーバーの場合)
  • 使用可能なプロトコルやL2,L3でのパケット処理性能(ネットワーク機器の場合)

自宅でサーバーを運用する際に気を付けなければならないことは、消費電力や冷却ファンが発する騒音です。
高スペックなサーバーを運用する際は消費電力を気にしておく必要があります。
また、私のようにラックサーバーを使用する場合、多くのラックサーバーは掃除機レベルの騒音を出すため、自身の生活や近隣への影響がないか注意をしておく必要があります。

また、サーバーを使用する目的に応じてCPUやメモリなど、必要な性能を決めておく必要があります。
私の場合は基本的に仮想化基盤として使用することがほとんどです。そのため、ある程度の計算資源を持つサーバーを複数台用意して運用しています。

加えて、拡張性も重要です。
例えば、10GbE以上の高速なネットワークを構築する場合、それらの通信に必要なNIC(=ネットワークインターフェースカード)を搭載可能か確認しておく必要があります。
また、SASやU.2といったSATA以外の接続規格を持つストレージ製品を使用する場合、それらが接続可能であるか調査しておく必要があります。

(100GbEを検証したときの記事

ネットワーク機器では、使用可能なプロトコルやL2, L3でのパケット処理性能を調査しておく必要があります。
比較的安価なネットワーク機器の場合、OSPFは使用可能だがBGPは使用できないといったように、使用可能なプロトコルに制限があるケースがあります。
また、L3でのルーティング性能に限界がある場合もあります。このあたりについて、事前に調査し目的を果たせるデバイスであるかを確認したうえで入手しています。

(40GbEスイッチを検証したときの記事

構築と運用

ラックサーバーはとても重く20kg ~ 40kgの重量がある製品が多いです。
そのため、床面の耐荷重やダメージについて考慮しておく必要があります。また、重量物ですので設置の際にも注意が必要です。
私の場合、構造用合板を敷くことで荷重分散と床面へのダメージ軽減を図っています。

また、運用面においても定期的なメンテナンスは重要です。
特に物理レベルでは、埃の除去やケーブル等に過度な力が掛かっていないかなどをチェックし、事故や障害を未然に防ぎます。

現在のおうちクラウド

筆者の現在の自宅環境では、下記のような構成を運用しています。

  • サーバー8台
  • 合計352vCPU
  • 合計1.3TBメモリ
  • Enterprise SSD 20TB~

これらのサーバーはLACPによって冗長化された10GbE以上のネットワークで接続されています。
また、OpenStackをベースとする仮想化基盤として使用しており、ストレージとしてSSDを採用することでVMを快適に使用できるようにしています。
また、これだけの計算資源を持つ環境ですので、高スペックなVMを沢山建てることが出来ています。

トラブル&事件集

筆者が自宅サーバーを運用する中で経験したトラブルや事件について、抜粋して一部紹介します。

サーバー発煙事件

運用中に突然サーバーが停止し、電源の再投入を実施したところメモリのVRMと思われる部分が焼損した事件です。
半導体チップの焼ける匂いが部屋に充満した事件で、改めて安全管理について検討するきっかけとなった事件でした。
当時はヒヤヒヤしました。今だから笑って話せる事件です。

過去のまとめ

ファームウェアにバグはつきもの

プログラムは、規模が大きくなればなるほどバグが発生するリスクが高まります。ファームウェアのバグによる影響を受けたケースは何件かありますが、特に厄介だったのが特定のパケットの一部だけ破損する問題でした。
この問題は、PPP(PPPoE)パケットのうち、上りパケットだけが破損するというもので、ファームウェアをダウングレードすることで解決しました。
しかし、パケットの一部だけが破損するという厄介な状況であったため、当初はそもそもパケットが破損しているという事にたどり着くのに時間がかかったうえ、設定等を疑った為解決に時間を要した問題でした。(当時該当するバグの情報がなかった)

リンクが上がらない

SFPコネクタを使用したネットワーク接続では、対向機器との相性問題に遭遇することがしばしばあります。
特にDAC(=Direct Attach Cable)では問題が顕著に発生します。
こういった、規格上は接続可能であるのに実際にはうまく使用できないケースは、物理層では多々発生します。

パケットロスト事件

この問題は、特定の経路を通るパケットが40%程度ロストするといった問題でした。
原因は、光ファイバーでの光の受光強度が高すぎたため、物理レベルでデータが壊れることでした。
当初はMTUなどの設定を疑っていたのですが、各パラーメーターを見ているうちにFCS(=Frame Check Sequence)エラーが多発していることに気付き、光モジュールの組み合わせを変更することで解決しましたが、物理レベルでのパケット破損を初めて経験した出来事でした。

(SFP+ 光モジュール)

さいごに

筆者が自宅サーバーを運用する中で感じたメリットを踏まえて、ラックサーバーを導入した理由や運用について紹介しました。
思ったより文字ばかりになってしまったなと思っているところですが、どこにあるか分からない需要にマッチしていれば幸いです。
最後までお読みいただきありがとうございました。

About

インフラエンジニア
主に作業ログ

About Me

Recent Posts