makoto_fujimotoのblog

株式会社進角
代表 藤本信のブログです
どうぞよろしくお願いします

カテゴリ: IT技術

コンピュータの時刻をNTPサーバに問い合わせて自動調整する仕組みは、サーバを初めPC・携帯等の機器でも一般的になってきました。

ちなみにサーバやPCのクロック(時刻)はハードクロックとシステムクロックの二種類ありますが、NTPサーバで自動同期を行ってるのはシステムクロックとなります。しかしこのシステムクロックだけを同期していても不十分な場合があります。

その理由は、万が一サーバに異常が発生して再起動が必要になった場合、OSはブート時に"ハードクロック"を参照してシステムクロックを設定します。この際にハードクロックの時刻がずれていた場合、一時的ですがシステムの時刻が大幅にずれてしまう可能性があります。

システムの時刻ずれがWebサービスやデータベースに及ぼす影響を想像してみてください。

オークションサイトではどうでしょうか?
メールシステムはどうでしょうか?
バッチ処理システムはどうでしょうか?
放送システムはどうでしょうか?
FAシステムはどうでしょうか?
プラント制御システムはどうでしょうか?
勤怠管理システムはどうでしょうか?

いずれも想像したくないデータの不整合障害に発展します。

したがって、サーバ再起動と同時に正確な時刻が設定されるようにするには、NTPでシステムクロックを同期した後、ハードクロックへも常に正確な時刻を設定しておく必要があります。こちらは定期的にcronで実行を行えばよいでしょう。

ちなみにハードクロックを確認・設定するコマンドは以下のようなものがあります。
/sbin/hwclock
/sbin/clock

個人的には「時刻がずれたコンピュータはコンピュータではない」と思っています。そのことにピンとこない人は IT産業には向いていないんじゃないかとさえ思います。

チェックをおススメします

ある程度規模の大きいサイトを運用する際にはサーバの負荷分散を目的としてロードバランサ装置が用いられます。ところがロードバランサの効能については「負荷を軽減してくれる装置」と誤認されているケースがあるようです。

その名の通り、負荷を適切に各サーバに分配してくれる機能が中心の装置ですが、システム全体でみた場合には決して負荷を"軽減"してくれる装置ではありません。

ロードバランサが持つ負荷分散機能は様々な指標の閾値によって設定が可能です。その方式は均等分散、割合分散(アクセス数、帯域)、フィードバック型分散などが選択できる仕様になっています。フィードバック型分散はサーバ毎に負荷状態を検知し負荷が高い場合にはトラフィックの割り当てを他のサーバに振り分けるという高度な機能です。

図らずもロードバランサ管理下のクラスタ(サーバ)が故障してサービスを継続できない障害が発生します。このような状況で故障したクラスタにトラフィックの割り当てを行ってしまうと、タイミングによっては運の悪い利用者のサービス継続が中断してしまいます。このような状況を防止するためにWebサービス等の自動監視を行い、サービスが継続できていないクラスタを自動的に切り離す機能も備えています。

更に高機能なロードバランサはレイヤー7の処理機能を備えています。この機能を用いるとアクセスしてきたURLによってサーバの配分を変えたり、HTTPヘッダ情報から端末の振り分けを行うことが可能です。またショッピングカートなどセッション継続中は同一サーバとの通信を持続させることも重要な役割となっています。

最後に、サーバを複数台構成して負荷分散を行いたい要件があっても、必ずしも高価なロードバランサが必須というわけではありません。一つの解決策としてDNSラウンドロビンという方式があります。これはDNSのゾーン情報に複数のIPアドレスに対して同一のFQDNを割り当てることで、ネームサーバがIPアドレスを巡回して返すという特性を利用して負荷分散します。当然高い付加価値は期待できませんが費用対効果を鑑みた場合に採用されるケースも多くあります。

↑このページのトップヘ