スペックが足りないときのコツとセキュリティ、情報サイトを弱小マシンで8年半運用し続けた凄腕エンジニアに聞いた運用監視(2/3)

サーバー監視とセキュリティ

前回の続きです。

テニスナビの遍歴とアクセス負荷への対応、情報サイトを弱小マシンで8年半運用し続けた凄腕エンジニアに聞いた運用監視のいろは(1/3)

スペックが足りないときのコツとセキュリティ、情報サイトを弱小マシンで8年半運用し続けた凄腕エンジニアに聞いた運用監視のいろは(2/3)(本記事)

今風の運用についてとその他書ききれなかったこと、情報サイトを弱小マシンで8年半運用し続けた凄腕エンジニアに聞いた運用監視のいろは(3/3)

運用上スペックが足りないときのコツ

1.ハードディスク容量が足りないとき

少ないハードディスク容量でやりくりしていた術を教えてください。

いくらディスク容量が少ないと言っても、ログを消すことは出来ません。諦めてログやコンテンツのバックアップは別HDDに毎回移動させていました。今風にAWSなどのクラウド上で構築することができれば、スケールアウトとかも簡単に出来たんですが、物理サーバー一台で構築したためハードディスクやCPUなどの拡張が簡単ではありませんでした。スペックが足りないのでテストサーバーみたいなのも立てることが出来ませんでした。

具体的にしていたことと言うと、ログデータやバックアップを別HDDに移行していたくらいです。

スケールアウト・・・スケールアウトとは、サーバの数を増やすことで、サーバ群全体のパフォーマンスを向上させること。1台のサーバが仮に10人のユーザしか処理できないとしても、サーバを2台に増やして負荷を分散すれば20人のユーザに対応できる、という理屈である。 – スケールアウトとは|scale out – 意味/解説/説明/定義 : IT用語辞典

2.CPUやメモリが足りないとき

スペック不足で起こったことと対処法を教えて下さい。

CPU使用率がほとんどいつも100%という状況でした。メモリが1G程度しか無いのでしょうがないんですが、常にスワップを使っている状態でしたね。

スワップ・・・ハードディスクなどの補助記憶装置を利用して使用可能なメモリ容量を増やすOSの機能の一つ。ハードディスク上に「スワップファイル」あるいは「スワップ領域」と呼ばれる専用の保存領域を用意して、メモリ容量が不足してきたら現在使われていないプログラム(プロセス)を一時的にスワップファイルに書き出して消去し、占有していたメモリを開放する。 – スワップとは|メモリスワップ|swap – 意味/解説/説明/定義 : IT用語辞典

ウェブアライザーでログを解析していたんですが、テニスナビのサーバーはアクセスの処理に精一杯なので、ログを別HDDに移動してそのデータを別マシンで解析していました。

他にも、バックアップのことがあります。毎日バックアップを取っていたんですが、コンテンツが10G近くになってくると、バックアップが終わるまで非常に時間がかかるようになり、バックアップを取る時間をいつにするかという問題に直面しました。最初は午前1時にバックアップを取っていたのですが、思ったより1時にアクセスが多かったのでバックアップを取る時間を午前4時からに変えました。すると今度は、コンテンツの容量に対してスペックが足りていないので、午前8時になっても終わらないようになりました。午前8時もそれなりにアクセスがあるので、どの時間にバックアップを取り始めればいいかということに悩みました。

これらの対処法は、一言で言うと「耐える」ことですね。色んな工夫をしたかったんですがスペック的に出来なかったので・・・。大きな障害が無かったのは、運が良かったとしか言えないです。しいて言うなら、自分がsshで入れる最低限のリソースは確保して、それ以外はすべてウェブ用に振り分けていたことくらいです。

スペックに余裕があればしたかったことはありますか?

負荷の高いコンテンツは別サーバーに移行とかはやりたかったです。構築した当初からアクセス量が数十倍になり、コンテンツもどんどん重くなっていたので。あとは、監視システムのアラートが上がるとそれに対して何か処理を行うというものも仕込みたかったんですが、これもスペック的に厳しかったです。

セキュリティについて

1.セキュリティ全般

監視をする時にセキュリティに関して何か気をつけていたことはありますか?

最初は、何かの改ざんがあるとアラートを上げるものを入れていましたが、それすらも重かったので諦めました。結局、問題が起こったら1つずつ潰すという運用で、やられてから考えるという方針で行きました。今回はありませんでしたが、やられた場合は、外に被害を拡大させないためにもサーバー自体を落としたほうがいいです。

Apacheなどのパッケージも当初は定期的にアップデートする予定でした。しかし、スペックが低いことに加え、依存関係を多く持つコンテンツがいくつかありました。つまり、何かのパッケージをアップデートするとなるとサイトを大幅リニューアルしなければならない可能性がありました。

このように、各種ソフトウェアのバージョンアップがコンテンツ側の都合で出来なかったので、重要なセキュリティホールがあった場合は、それを潰す独自パッチを作って適用していました。

2.最新情報のキャッチアップ

セキュリティ方面は情報が毎日のように更新される世界だと思うのですが、どのようにして最新情報を手に入れていますか?

セキュリティ系のニュースサイトを毎日見て、自分に関わるものは重点的に確認しています。自分に関わるものは、セキュリティーホールの検証を自分で行うところまでやっています。日々たくさんのセキュリティーホールが見つかるので、自分と関係ないものは諦めて見ないことにしています。自分でセキュリティーホールの検証をすることで、その脆弱性に対して攻撃された時にどのようなログが出るのかが分かります。もちろんログが出ない時も多いですが、自分で手を動かしてどういう脆弱性があるのかを確認しておくことは重要だと思います。

セキュリティホール・・・脆弱性についての俗表現である。 脆弱性は、コンピュータソフトウェアの欠陥(バグ、不具合、あるいはシステム上の盲点)のひとつで、本来操作できないはずの操作(権限のないユーザが権限を超えた操作を実行するなど)ができてしまったり、見えるべきでない情報が第三者に見えてしまうような不具合をいう。 – セキュリティホール – Wikipedia

これは何故か分かりませんが、季節ごとに脆弱性が見つかるものもありますね。夏はbindの脆弱性が見つかったりとか。bindの脆弱性が見つかると夏だな〜とか思います。(笑)

3.物理と仮想

物理サーバーと仮想サーバーで監視の仕方が変わったりということはありますか?

物理で監視できることは仮想でも監視できます。ただ、逆は言えません。仮想ならではの監視があります。

大きなものは、ハイパーバイザーの監視です。それぞれの仮想サーバーは他のインスタンスが増えたかどうかが分かりません。なのでハイパーバイザーの監視をすることが必要になるのですが、Nagiosで監視するとなると色々とややこしい問題が起きます。具体的には省略させてもらいますが、AWSやAzureなどサービスによって仕様が違ったりします。テーブルストレージを叩いてログを見るといったことが必要になることもあります。

ハイパーバイザー・・・コンピュータの仮想化技術のひとつである仮想機械(バーチャルマシン)を実現するための、制御プログラムである。仮想化モニタや仮想化OSと呼ばれることもある。直訳すると「上位の管理者」となる。アプリケーションソフトウェアから見て、オペレーティングシステム(OS、特にカーネル)の事をスーパーバイザと呼び、そのシステムコールをスーパーバイザ・コールとも呼ぶが、仮想機械の場合はOSを更に上位の制御プログラムが管理するため付けられた名称とされる。 – ハイパーバイザ – Wikipedia

AWS・・・ Amazon Web Services(アマゾン ウェブ サービス、AWS)とは、Amazon.com により提供されているクラウドコンピューティングサービス(ウェブサービス)である。 – Amazon Web Services – Wikipedia

Azure・・・Microsoft Azure(マイクロソフト・アジュール)は、マイクロソフトのクラウド プラットフォーム (PaaS/IaaS) である。マイクロソフトのデータセンターにあるクラウド プラットフォームで、アプリケーションとデータをホストしている。アプリケーションの動作環境(Microsoft Azure)と、Windows Azure AppFabric(旧名称は.NET Services。クラウドのミドルウェア サービス)、SQL Database(クラウドのRDB)を提供する。 – Microsoft Azure – Wikipedia

テニスナビの遍歴とアクセス負荷への対応、情報サイトを弱小マシンで8年半運用し続けた凄腕エンジニアに聞いた運用監視のいろは(1/3)

スペックが足りないときのコツとセキュリティ、情報サイトを弱小マシンで8年半運用し続けた凄腕エンジニアに聞いた運用監視のいろは(2/3)(本記事)

今風の運用についてとその他書ききれなかったこと、情報サイトを弱小マシンで8年半運用し続けた凄腕エンジニアに聞いた運用監視のいろは(3/3)