個人ブログの冗長化の一考

サーバ

概要

私がこの個人ブログを冗長化するべく検討した多くの内容を紹介していきたいと思います。
非常に長い内容となっておりますので、結論を最後にまとめていますので飛ばしてそこから読んで頂いても問題ございません。

個人ブログを開設し、”見れない時間”が発生しないようにしたいとするならば、あなたならどうしますか?

もちろん、オンラインサービスに頼ってオプションが必要なら契約しまくり、高額な月額費を払う手もありますが、個人で物理サーバを置いて安く運営してみたい!そう思った私がたどった思考(妄想)の旅を一緒に楽しんでいただければ幸いです。異論やコメント等は随時募集しています!

続きを読む: 個人ブログの冗長化の一考

冗長化の検討内容

ある日、スマホの通知を見るとZabbixのWebサーバ監視エラーのメールが届いていた。
家に帰宅してサーバにディスプレイをつなぎ、マウスを動かしても反応なし。
フリーズしていたようだ。
強制再起動してみると、ハードディスクのエラーチェックが勝手に走り、エラーの表示。
なるほど、ハードディスクの故障のようだ。

この問題に対処するにあたって、ハードディスクを交換してバックアップから復旧するだけで良いのだが、根本対策したいものだ。そこで、RAIDを検討することにした。

サーバとして使っているのは古い自作デスクトップPCだが、マザーボードの説明書を読むとRAIDに対応しているようだ。ハードディスクを2本買って、RAID1にすることが一つの選択肢となる。しかし、RAID1だと、例えば2TBのHDDを2台買っても、得られるのは2TBだけである。しかも、買い足すならば、また2台買って2TB得られるだけとなる。2TB4本で4TB。何かもったいない。

RAID5であれば、2TBのHDD4本で6TB得られるし、さらにHDDの台数を増やしてもRAIDによって犠牲となる容量は抑えられる。よって、RAIDカードの購入を検討することにした。

RAIDカードは例えばRocket 640Lという製品を買えば、RAID5の構築ができるので候補にあがる。これなら、SATAIIIの口が4口あり、RAID5もできるし、なんならBYOD構成も可能のようだ。
ここで、ふと思ったのがこのカードが壊れた場合、すべてアクセス不能になることだ。
いや、それどころか、電源もメモリもすべて冗長化する必要がある。
安いデスクトップPCも良い加減、変え時なのでサーバ自体の冗長化を検討することにした。

サーバの新調を検討するにあたり、現在のサーバ構成を確認する。

個人自宅サーバの内部構成(一部抜粋)

全てのコンポーネントが冗長化されたFTサーバは中古でもまだ高く、電気代も馬鹿にならない。まず考えられるのが使い慣れたVMware ESXi・vCenterのHA構成の検討だ。しかし、最低限の要件として、リソースたっぷりのサーバを2台とwitness(監視)用にサーバが1台が必要となる。Proxmoxでやるならば、リソースたっぷりのサーバ3台となる。ここまでやるならば、NASの導入も検討したいところだ。これも冗長化が必要となる。そうすると、接続用ネットワーク機器の冗長化も検討したくなる。

ぼくがかんがえた、さいつよ構成

ここまですれば、完璧だ。ハードウェアの候補としては、IntelのNUC、NUC12DCMi7が良い候補となりそうだ。ハーフラック買って全て納めるのであれば、ラッキング可能で電気代も安そうなサーバ、SUPERMICRO 5019D-FTN4 AMD EPYC 3251も良さそうだし、VMware準拠で安心したいのであれば、SUPERMICRO SYS-5028D-TN4Tも選択肢となる。NASも適当にTeraStationは2台買えば安くフェイルオーバーができそうだ。詳しくは見ていないが、SMB/CIFSかNFSとして接続出来るとのこと。ネットワークは”たすきがけ”なネットワークを目指して無駄に(LANケーブルの増設と設定だけだし)可用性を重視すれば強い。

ここまでのハードウェアを揃えるとなると初期費用が馬鹿にならないことがわかる。
また、電気代が安いハードウェアを中心に検討しているとはいえ、正直厳しい。
ここでまた、ふと気付く。
外部との接続をする、ルータやインターネット回線の冗長化が出来ていないことに!
単一障害点は無くすべきです。よって、インターネット回線とルータの冗長化も検討する。
調べてみると、Yamahaのルータを使った冗長化が良さそうだ。回線も非常時の副回線であれば安く契約する方法もありそうだ。いやまてよ、リージョンの冗長化も検討が必要か。

お風呂に入り、最初にすべきだったが技術者の性で出来ていなかった、禁じられたテーマを考える。

冗長化にここまでお金かける必要があるのか

実はZabbix、WSUS、LDAPは故障しても数秒で自動復帰させる必要がない。Zabbixは2つ以上の同時障害を考慮しないのであれば問題ないし、オンラインサービスを使う手もあるようだ。WSUSも常時の稼働は不要、LDAPはキャッシュで少しは凌げる。PCパーツショップに走るか予備PC、つまりコールドスタンバイで対応可能な範囲と判断した。よって、ウェブサーバのことだけを検討すれば良いことになる。

結論

冗長化することにより、ダウンタイムを減らしたいのはウェブサーバだけで良く、そこまでのリソースは不要だ。

リソースがあまり必要ないのであれば、クラウドサービスおよび専用レンタルサーバを利用する事も選択肢となる。しかし、上方ではApache Web ServerとMySQLしか記載していないが、実はHTTPS Proxy、IPSも搭載している。このように、オプションサービスを増やしていくと、クラウドサービスを個人契約するにはまだまだ高額になりそうだ。また、サービス提供終了やデータに対する業者の信頼性の問題も個人的に気になってくる。

それならば、とりあえずラズパイ(メモリ8GB)を2台購入し、自宅と実家に置いてデータの同期が取れれば、リージョン冗長化まで出来て非常にコスパが良い。Linuxオンリーな構成となるため、ESXiを入れる必要もなくなり、運用を楽にするためのアプリ仮想化だけで良い。ラズパイにDockerとdocker-composeを入れるだけで十分となり、構成がシンプルになる。環境としても、実家は都合良く別用途で固定IPとなっており、自宅も千円ちょっとで固定IPを契約すれば、さくらのクラウド様のGSLBを契約して月額550円、電気代も安くて自分の好き勝手に出来る環境を目指すのが良いかもしれない。まずはラズパイ1台買って性能に問題が出ないか、まずは使ってみることにした。

最終構成

将来、リソース増強が必要になったらラズパイのクラスター化か、専用サーバへの置き換えか、レンタルサーバへの移行を再検討することになりそうだ。

※なお、筆者はこの後、使っていた野良DockerイメージがARMに対応していないものが多くあることに気付き、泣きながら自分でイメージから作ることになります。

本記事に対するコメント、意見、指摘、アドバイス等は本記事へのコメントやTwitter経由で頂けると私が泣いて喜びます。

コメント

タイトルとURLをコピーしました