サーバーをCentOS 8にアップデートしました
RHEL 8がリリースされたのが去年の9月。もうすぐリリースから半年だし、安定してきただろうと思って自宅サーバーをCentOS 8にアップデートしました。
CentOS 7で運用していたこのサーバーに切り替えてから1年ちょっと経ち、色々と改良したいところがあったので、今回CentOS 8をクリーンインストールして環境を構築し直しました。
なので、これを機にちょっと自宅サーバーの紹介をしたいと思います。
サーバーを立てる前の環境
この自宅サーバーを立てたのにはもちろん理由があります。
古いWindowsパソコン
僕は基本Macを使っているのですが、Windowsが必要になる場面は度々あります。そんな時は、Macを使い始める前に使ってたDellのStudio 15というノートパソコンを引っ張り出して使ってました。MacのSSDを圧迫させたくなかったので、MacにWindowsを入れなかったからです。
アプリ公開用に立てたWebサーバー
スマホアプリを公開したことのある人は分かると思いますが、アプリをストアに載せるにはサポートページを必ず用意しなければいけません。僕がアプリ公開していた初期の頃はHTMLで直接書いたページを、その後はWordpressで簡単に立てたブログを、あまり使ってなかった2010年製のMac miniで運用していました。ですが、だんだん更新も億劫になってそのままに、Let's encryptの自動更新もうまく動かず、最後はやばい状態でしたね。だってアプリの審査の時に動いてればそれで良かったから。
ルーターの簡易NAS
これまたMacのSSDを圧迫させたくなかったので、あまり使わないけど残しておきたいファイルはルーターのUSBポートに繋いだ2TBのHDDに保存していました。ちなみに、このルーターはTP-LinkのArcher C9で今でも家の無線LANで使ってますが、NASの速度がUSB3.0 + 1GBase-T対応なのに10MB/s程度しか出なくてなんとかしたいと思ってました。
Qiitaに記事をいくつか書いていた
この頃、Qiitaへの記事投稿を始めていました。そんな最中、Qiitaに記事を投稿するべきではない、Qiitaに記事を投稿しても一銭にもならないっていうQiitaの記事を読んで、まあそうだよな〜って思ってました。
スペック
というわけで、これらをなんとかするために作ったのが現在のサーバー。なので
- Windowsが動く
- Wordpressが動く
- 長時間安定動作する
- HDDを積める
という条件のもと、
- Ryzen 5 2600
- ベース 3.2GHz、ターボ 3.6GHz
- 6コア12スレッド
- DDR4 2400MHz 16GB x2
- 合計32GB
- Unbuffered ECC
- ASRock X470 MASTER SLI
- Intel SSD 760p 256GB x2
- Linux用とWindows用に2つ
- 500W 80+ PLATINUM ATX電源
以上のパーツを揃え、あとは
- WD 2T HDD
- WD 4T HDD
- ATI Radeon HD 5450
- ミドルタワーケース
元々あったものと後々追加したものを合わせれば現在の状態になります。ゲームするわけじゃないからGPUはただCentOSのコンソールさえ見えればよかった。
ちなみに、ECCメモリはなるべくサーバーが落ちずに稼働し続けて欲しいので、おまじない程度の気持ちで入れてます。効果の程はよく分かってません。
旧構成
以前の構成はこんな感じ。Windowsをホストにして、その上にWordpressサーバーの構築もできたんだけど、そもそもWindowsが長時間安定稼働するとは思えなかったので、ホストはCentOSにして、KVM上にWindowsをインストールして使ってました。
そして、このサーバーを立てた頃は全然Wordpressについて詳しくなかったので、Wordpress環境を構築するのに一苦労だった。そこで、Wordpressの環境はVM上に構築しておけば、サーバーの移行の際とかWordpress環境の再構築せずに使いまわせると考えてこの構成に。
ただし、旧Webサーバーをしばらく残していたり、開発・テスト用のVMを任意で立てて使っていたりと、運用したいWebサーバーはWordpressだけではなかったので、ホストにNginxを置いてリバースプロキシにしてました。
dnsmasqはLAN内からでも通常のURLを使ってWordpressにアクセスするために必要。smbdはファイルサーバーですね。
新構成
WordpressやMariaDBについてもだんだん分かってきて、Wordpressの環境構築の方法が分かってきたこの頃、VMに置いてるのはかえって管理の手間があって面倒になってきたのと、サーバーの応答時間が遅いのが少し気がかりだった。
そこで、高速に動くWordpress環境を目指してこの形に。この記事執筆時点ではまだ調整が済んでないのでそこまで速くはなってないけど、調整次第ではApacheよりも大幅に処理可能なリクエストを増やせます。まあ1日150〜200程度のこのサイトじゃあんまり意味ないけどね。
ここの設定が終わったら、CentOS 8上のNginx + php-fpmでWordpressを動かす記事書こうと思います。
あと、図には書いてないけど今回SELinuxを有効化して運用しています。CentOS 7の頃はSELinuxに悩まされ続けて嫌になったのでオフにしてましたが、今回はがんばりました。とっても厄介でしたね。
Windows
普段使いのWindowsとして運用するため、KVM上で動かしてます。Windowsのアプリを使いたくなった際にRDPで遠隔操作する形です。
最近のRDPはかなり快適に動くので、LAN内からなら遠隔操作でも普通に作業ができます。というか外出先でも回線が速いところだと、画面の解像度を少し落とすだけで全然使える。
そしてこいつにはCPUを2/3の4コア8スレッド、メモリを半分の16GB割り当ててます。サーバーソフトウェアが現状そんなにCPU食わないからね。そうしたら、VM上でCINEBENCHを動かした結果が2016年モデルの15インチMacbook Proよりも高かったのは衝撃だった。
とまあ、現状は快適に使えてるのですが、これの構築はとても苦労した。というのも、高速動作させるためNVMeのSSDをPCIパススルーを使って直接VMに割り当てるということをしたためです。
PCIパススルーはVMでGPUを使えるようにするためによく使われるもので、Linus Tech Tipsとかではお馴染みですよね。それをSSDに使えば高速なNVMe SSDを直接VMで扱えるようになります。
ただ問題だったのが、今回利用したIntel SSD 760pにバグがあるらしく、IOMMUを使うとエラーが出たこと。こいつを使うにはQEMUのソースコードを修正しなきゃいけないらしく、自前ビルドしたQEMUをlibvirtで使うのにてこずりました。
まあそのおかげで、この通り
VMでも高速SSDの恩恵がそのまま得られます。
Samba
以前TimeMachineの記事書きましたけど、その時から構成は変えてないですね。
有線LANで接続しているiMacから測定すると約880Mbpsと、かなりの速度が出てます。理論値が1000Mbps = 125MBpsなのでいい数字。というか、サーバーのHDDより速いので、キャッシュが効いてますねこれ。大容量のファイルとか、元からHDDにあるファイルの読み込みはこれより落ちるはずです。
まとめ
以上、簡単なサーバーの紹介でした。レンタルサーバーとかAWSって楽で便利なんだけど、触ってて楽しさがないというか、ロマンがないというか。
自作PCのパーツ考えている時とか、システム構成考えるのって結構楽しくて、自分の好きなように構築できる自宅サーバーはサーバーレスにはない魅力があります。もしこの記事を読んで自宅サーバーに興味が湧いたり、参考になったら嬉しいです。
コメント