Lesson 6

障害を防ぐ、障害に対応する

Lesson 6 Chapter 1
RAID

サーバーを運営していると、どんなに高性能なコンピュータを使用していたとしても、必ずといっていいほど障害は発生します。 サーバーを構成する機器が故障する場合もあれば、ソフトウェアに問題が発生する場合もあります。 また、レッスン5で学んだサイバー攻撃の被害に合う場合もあります。 そのため、サーバーの運営には、障害が発生してもサービスを継続していくための対策が必要です。

本レッスンでは、サーバーの障害が発生してもサービスを継続する対策、サーバーが停止しても迅速に復旧する対策を学習しましょう。

チャプター1では、データの保存に必要なストレージの障害対策としてRAIDについて学習します。

RAIDとは

RAID(Redundant Arrays of Independent Disks)とは、複数のHDDをひとつのドライブのように見せて、ストレージの冗長化と高速化を図る技術です。
ディスクアレイと呼ばれる記憶装置でRAIDを構成し信頼性や性能を向上させています。

冗長化

冗長化とは、システムに何らかの障害が発生した場合に備えて、予備装置やサブシステムを平常時からバックアップとして運用しておくことをいいます。 障害が発生した場合でも、自動的にサブシステムに切り替わりサービスを維持することを目的とします。

ディスクアレイ

ディスクアレイとは、主にサーバー用の外部記憶装置で、多数のHDDを搭載可能です。 全体のHDDをひとつの記憶装置のように制御するコントローラが内蔵されています。 HDD以外のSSDなども含めて「ストレージアレイ」とも呼ばれます。

RAIDの種類

RAIDには仕組みの違いによりRAID0~6までのレベルが定義されています。 レベルの数字が大きい・小さいで性能のグレードを示しているわけではく、単に仕組みの違いを表しています。
RAIDには、レベル0~6までの7種類と、RAID1とRAID0を組み合わせたRAID10などがあります。
実質的にレベル2・3・4は使用されていないので、それ以外を以下の表でご紹介します。

レベル 内容
RAID 0 ストライピングと呼ばれる技術を使用し、複数のディスクにデータを分散して格納することで読み/書き速度を向上。 冗長性はないので障害が発生した場合はデータを失う。
RAID 1 ミラーリングと呼ばれる技術を使用し、同じデータを2つのディスクに書き込むことで、片方に障害が発生してもデータは失われない。
RAID 5 データを複数のディスクに分散して格納。さらにパリティと呼ばれるデータを復旧するためのデータも複数に分散して格納し、信頼性と効率性を両立。
RAID 6 RAID5では復旧可能なディスクは同時に1台だが、RAID6では同時に2台まで復旧可能にして信頼性を高めている。
RAID 10 2つのディスクに同じデータを書き込み、さらに複数のディスクに分散して格納することにより、高速化と耐障害性を実現。

RAID0は、性能向上が目的のため障害対策としてRAID0を選択することはありません。 他の構成で冗長性を持たせた上で、性能向上を求める場合にRAID0を組み合わせて利用されています。

RAIDレベルの比較

RAIDの各レベルごとの特徴をまとめましたので、以下の表をご覧ください。

比較項目 RAID 0 RAID 1 RAID 5 RAID 6 RAID 10
耐障害性 ×
最低必要HDD数 2台 2台 3台 4台 4台
処理速度 ×
最大容量 全容量 全容量の半分 全容量-1台分 全容量-2台分 全容量の半分

RAID6は2台の故障に耐えられるので、重要なデータを守るにはRAID6が良いことが分かります。 ただし、RAIDを構成してしたとしても、人為的なミスやマルウェア感染などでデータの復旧はできないこともあります。 そういった事態を考慮して、定期的なデータのバックアップは必要になります。
※上記の特徴は、使用する機器により性能に違いがでるため、あくまで目安の情報です。

このチャプターではRAIDを学習しました。次のチャプターではチーミングについて学習しましょう。

Lesson 6 Chapter 2
チーミング

チーミングについて説明する前に「NIC」について説明します。
NIC(Network Interface Card)とは、コンピュータをネットワークに接続する際に必要となる部品です。
従来は有線で接続する「LANポート」の差込口が備わっているタイプを指していましたが、現在では無線LAN等の普及により、通信デバイス全般を指すようになっています。

NICには、ベンダーによりMACアドレスが設定されています。
MACアドレスは全世界で一意のアドレスなので、これによりネットワーク越しでもコンピュータを識別することを可能にしています。

また、NICには物理的に存在するNICの他にも、仮想環境で利用される仮想NICも存在します。 仮想NICには仮想MACアドレスが割り当てられる仕組みです。

チーミング

それでは、ここからチーミングについて説明していきます。
チーミングとは、サーバーなどに構成した複数の物理NICを、論理的なひとつのNICとして扱う技術のことをいいます。 チーミングの設定には、物理NICに対応したドライバーのインストールが必要です。

チーミングには、物理NICの冗長化やネットワークの帯域幅増加、送信時の負荷を分散するといった効果があります。 詳細はこのあとのステップでご紹介します。

チーミングとボンディング

Windows環境では複数のNICを束ねて扱うことを「チーミング」と呼びますが、LinuxOSではBonding Moduleを使用してネットワーク帯域を増強するため「ボンディング」と呼ばれます。 基本的にどちらも同じことを指しますが、本レッスンではチーミングで進めていきます。

チーミングの種類

チーミングの方法は大きく分けて3種類ありますのでご紹介します。

  • フォールトトレランス
  • フォールトトレランスは、物理NICを冗長化するモードです。
    下の画像をご覧ください。
    物理NICの片方を稼働用のプライマリ、もう片方を待機用のセカンダリとして設定し、通常時はプライマリ側だけで通信を行います。 画像のように、プライマリに障害が発生した場合、セカンダリに自動で切り替わることで通信を維持します。 このモードは片方の物理NICだけを使用して通信を行います。

    server-lesson6-2-1

  • リンクアグリゲーション
  • リンクアグリゲーションは、物理NICを冗長化するだけではなく、同時に複数の物理NICを使用して帯域幅を増加させるモードです。
    下の画像をご覧ください。
    1つの通信相手に対しての速度が上がるわけではありませんが、複数の通信を同時に行う場合に有効です。 画像のように、片方の物理NICに障害が発生した場合でも、もう片方の物理NICで通信を継続できます。

    server-lesson6-2-2

  • ロードバランシング
  • ロードバランシングでは、物理NICを冗長化するだけでなく、同時に複数の物理NICを使用して送信の負荷を分散するモードです。
    下の画像をご覧ください。
    見た目はリングアグリゲーションと似ていますが、外部からの受信はプライマリのみで行い、トラフィックの負荷に応じて、送信を複数の物理NICに振り分ける点が違います。 1つの物理NICに障害が発生した場合でも、残りの物理NICで通信を継続できます。

    server-lesson6-2-3

チーミングの3種類をご紹介しましたが、どのモードを使用しても物理NICの1つに障害が発生した場合、もう1つの物理NICで通信できる機能は共通です。

帯域幅

帯域幅とは、ネットワークで一度に通信できるデータ量を表します。 帯域幅が広くなると、一度に通信できるデータ量が増えます。 速度が速くなるわけではないのですが、一度に通信できるデータ量が増えるため、結果的に通信速度は速くなります。

トラフィック

トラフィックとは、一定時間内、または一時的にインターネット上に流れる情報や情報量のことを表します。 「トラフィックが増加した」とは、単純にアクセス数が増加したいう意味ではなく、ある一定時間内にアクセス数が集中し、通信回線を利用しているデータ量が増加したことをいいます。

チーミングはネットワークを冗長化する技術です。 チーミングを行う事で、ネットワークの障害時にも通信を維持し、サービスを継続することが可能になります。

このチャプターではチーミングを学習しました。次のチャプターではUPSについて学習しましょう。

Lesson 6 Chapter 3
UPS

UPS(Uninterruptible Power System)とは、日本語で「無停電電源装置」を意味します。 予期しない停電が発生し電力が断たれた場合や、落雷による過電圧が発生した場合などの電源障害からサーバーを守る重要な役割を担います。

このチャプターではサーバーの電源障害の対策となるUPSについて学習していきましょう。

UPSの機能

電源障害が発生したときにサーバーを守る役割のUPSに、どのような機能があるのか確認しましょう。

  • 停電時の時間稼ぎ
  • 災害時や人為的なミスなどで電力が断たれた場合、UPSでは蓄電していたエネルギーを使用して、一定時間の電力供給を行う機能があります。 長時間の供給は続けることができないため、供給できる間に復旧したり、サーバーなどの機器を適切にシャットダウンすることで、データ破損や機器の故障を防ぎます。

  • 雷サージ対策
  • 「雷サージ」とは、落雷の影響で一時的に発生する異常な過電圧や過電流のことをいいます。 雷サージが発生した場合も、停電のときと同様にデータ破損や機器の故障の原因となります。 UPSは雷サージ保護機能を持っていて、雷サージをブロックすることが可能です。

自動シャットダウン機能

OSにソフトウェアをインストールすることにより、停電が発生した場合、OSに停電を通知して自動でシャットダウンさせることが可能です。 すぐに復電する場合もあるので、機器によっては何分間か様子をみてからシャットダウンするように設定することができます。

優先して守る機器

UPSには蓄積した電力を供給する機能がありますが、容量に制限があるため、全ての機器に電力を供給するのは現実的ではありません。 また、UPSの接続を推奨していない機器もあります。
システムと大切なデータを守るために、優先してUPSに接続するべき機器を確認していきましょう。

前提として、サーバーとデータを格納しているディスクアレイ、それらが動作するために必要な機器には必ず接続しておきます。 それ以外の機器で、UPSに接続するべき機器を優先順位別にまとめましたので、以下の表をご覧ください。

優先順位 接続機器 内容
デスクトップPC、NAS、外付けHDD データを格納しているストレージ系の機器は優先
ハブ、ルータ、ディスプレイ ネットワーク越しにデータの保存が必要な場合は、これらの機器が停止すると保存できなくなるので対象になる
インクジェットプリンタ、スキャナ これらの機器は業務に必要なら対象にする程度
接続不可 レーザープリンター、コピー機、エアコンなど 消費電力が高い機器はUPSの故障に繋がる可能性があるため非推奨

データを格納していたり、そのデータの保存に必要な機器は優先順位が高く、それ以外の機器は優先順位が低くなることが分かります。

UPSが保護できる電源障害

機器によって性能や機能は異なりますが、UPSが保護できる電源障害には以下の表のような種類があります。

種類 内容
停電 災害や人為的なミスなどが原因で、一定時間の電力供給が停止
瞬停
(瞬時停電)
1秒未満の停電
電力会社の送電ルート切替などで発生
瞬低
(瞬時電圧低下)
0.07秒から0.2秒の停電
落雷などの影響で瞬間的に電圧が低下する現象
電圧変動 電圧が上昇・下降すること
負荷電流の変化により電圧が変動する現象
ノイズ 電子機器などから発生する電源波形の乱れのこと
雷サージ 落雷の影響で一時的に発生する異常な過電圧や過電流のこと

UPSはこのように様々な電源障害からサーバーを守る重要な役割を持ちますので、データセンタや金融関連、省庁や病院など、多くのシステムで利用されています。

このチャプターではUPSを学習しました。次のチャプターではクラスタリングについて学習しましょう。

Lesson 6 Chapter 4
クラスタリング

クラスタリングとは、複数のサーバーをネットワークで接続し、全体で1台のサーバーのように見せる技術です。 複数のサーバーで構成されるシステムは、冗長性・安定性を持ち、継続的なサービスを維持することができます。
1つのサーバーで障害が発生しても、別のサーバーで業務を継続することが可能になります。

クラスタリングの目的

クラスタリングを利用する目的には「拡張性」と「可用性」の2種類があります。

  • 拡張性(スケーラビリティ)
  • 拡張性が目的のクラスタリングは、「ノード」と呼ばれるクラスタリングを構成するコンピュータの数を増やすことにより、処理を高速化させ、性能を向上させることが目的です。

  • 可用性(リダンダンシー)
  • 可用性が目的のクラスタリングは、サービスを稼働させ続けることが目的です。 1つのノードが停止しても、他のノードに処理を引き継ぐことで、システムを停止させないようにします。

クラスタリングの種類

クラスタリングは、拡張性が目的の「HPCクラスタリング」と可用性が目的の「HAクラスタリング」に分かれます。 さらにHAクラスタリングには「フェイルオーバークラスタリング」と「負荷分散クラスタリング」の2種類があります。順に見ていきましょう。

  • HPCクラスタリング
  • 「HPC(High Performance Computing)クラスタリング」は、高い計算能力を目的としたクラスタリングです。 以前のスーパーコンピュータは単一の超高速マシンでしたが、現在では多くのスーパーコンピュータがHPCクラスタリング技術を利用しています。

  • HAクラスタリング
  • 「HA(High Availability)クラスタリング」は、高可用性を目的としたクラスタリングです。 サーバーを複数台使用して、冗長化することにより、障害が発生してもシステムを停止することなく稼働し続ける仕組みです。

    • フェイルオーバークラスタリング
    • フェイルオーバークラスタリングとは、構成するノードを「稼働系」と「待機系」の2つのグループに分けておき、稼働系が故障した場合に待機系に切り替えてサービスを継続します。 単にHAクラスタリングと呼ぶ場合は、フェイルオーバーを指していることが多いです。

      以下の画像をご覧ください。 通常時は稼働系サーバーが稼働していますが、障害が発生してサーバーが故障した場合には待機系サーバーに切り替わります。 尚、自動で切り替わる仕組みを「フェイルオーバー」といい、手動で切り変える方法を「スイッチオーバー」といいます。

      server-lesson6-4-1

    • 負荷分散クラスタリング
    • 負荷分散クラスタリングとは、複数のノードに処理を分散することで、可用性に加えてパフォーマンスの向上も実現します。 フェイルオーバークラスタリングと違い、待機系はなくすべてのノードが稼働系になります。
      負荷分散クラスタリングには、サーバーにソフトウェアをインストールするタイプと、ロードバランサーという負荷分散装置を使用するタイプがあります。
      どちらを使用した場合でも、1台が故障したときは残っているサーバーで通信を維持します。

      以下の画像のように、サーバーにインストールするタイプの場合は、各サーバーにソフトウェアをインストールして、お互いに監視し合いながら負荷分散を行います。 安価に導入できますが、複雑で柔軟な振り分けはできません。
      ロードバランサーという機器を使用した場合は、ロードバランサーがサーバーの状態を監視して、負荷分散を行うことにより、複雑で柔軟な振り分けが可能です。

      server-lesson6-4-2

可用性

可用性とは、システムを障害で停止させることなく、稼働し続ける能力のことをいいます。 可用性を高めた状態を高可用性(High Availability)といいます。

クラスタリングソフトウェア

クラスタリングを構成するには、ソフトウェアのインストールが必要です。 ここでは、障害対策に有効なHAクラスタリングの代表的なソフトウェアを以下の表でご紹介します。

名称 内容
LifeKeeper GUIで操作可能で、フェイルオーバークラスタリングを構成可能
Windows版とLinux版の両方存在
CLUSTERPRO NECが提供している高可用性を追及するフェイルオーバークラスタリング
MSFS Windows Serverに標準で付属しているソフトウェア
フェイルオーバークラスタリングを構成可能
NLB Windows Serverに標準で付属しているソフトウェア
ロードバランサーなしで、負荷分散機能を構成可能
LVS Linux用の無料で使用できるソフトウェア
ロードバランサーなしで、負荷分散機能を構成可能

クラスタリングは、サーバー自体を冗長化できる技術です。 可用性が目的のHAクラスタリングは、基幹業務システムや商用のWebサイトなど多くのシステムで利用されています。 また、拡張性が目的のHPCクラスタリングは、大量の計算処理を行う研究分野や開発現場などで利用されています。

このチャプターではクラスタリングを学習しました。次のチャプターではシステムログ/アクセスログについて学習しましょう。

Lesson 6 Chapter 5
システムログ/アクセスログ

まず、「ログ」とは何かご存じでしょうか?
ログは「記録」のことを指します。 コンピュータの操作履歴や、通信履歴などをコンピュータが自動で記録したものをログといいます。 日々多くのログが生成されていますが、障害に対応するためのログとして、このチャプターでは「システムログ」と「アクセスログ」について学習していきます。

システムログとは

OSの稼働中に発生した重要なできごとを時系列に記録したものを「システムログ」といいます。
このシステムログをUnix系OSでは「シスログ(syslog)」といい、Windowsでは「イベントログ」が同じようなものを指します。 システムログには、コンピュータの起動・終了や、管理者のログイン履歴、ハードウェアの障害やエラー、プログラムの起動・終了など様々な履歴が記録されています。

通常システムログはローカルに保存されるだけですが、このシステムログを収集する「Syslogサーバー」というサーバーがあります。SyslogサーバーではOSだけでなく、ネットワーク機器からのログも収集することが可能です。 詳しく見ていきましょう。

Syslogサーバーの役割

サーバーに障害が発生した際、まず最初に確認しなければならない情報が、サーバーやネットワーク機器のログです。 サーバーやネットワーク機器はログをローカルに保持しています。障害が発生したときに、ひとつひとつのサーバーや機器を確認していくのでは効率が悪いです。 Syslogサーバーは、監視対象のサーバーやネットワーク機器からSyslogプロトコルで転送されてくるログを受信して一元的に管理します。

Syslogプロトコル

SyslogはUnix系のシステムログのことだけでなく、「System Logging Protocol」を略した用語でもあります。 「Syslog」だけでもSyslogサーバーにログを転送するプロトコルを指している場合もありますが、当レッスンではプロトコルを指す場合は「Syslogプロトコル」と表記しています。

一元的に管理しているSyslogサーバーには膨大なログが転送されてきます。受信したログをどのように活用すれば良いのか説明していきます。

ログの整理

Syslogサーバーが受信した膨大なログは、ログメッセージに含まれる「Facility(ファシリティ)」と「Severity(セベリティ)」に基づいて整理することができます。 Facilityは「ログの種類」を表し、Severityは「ログの緊急度」を表しています。
FacilityとSeverityは「RFC 5424」で定義されています。

ログの種類を表すFacilityについて、以下の表に抜粋しましたのでご覧ください。

Numerical Code Facility(ログの種類) 説明
0 kern カーネルから受け取ったメッセージ
※OS関連
1 user ユーザープロセスのメッセージ
※インストールされているアプリケーション関連
2 mail メールシステムからのメッセージ
3 daemon 各種デーモンからのメッセージ
※サービス関連
4 auth セキュリティ/認証サービスのメッセージ
5 syslog syslogサーバーからのメッセージ
6 lpr 印刷システムからのメッセージ
7 news Usenetから受け取ったメッセージ
8 uucp UUCP(Unix to Unix Copy Program)サーバーから受け取ったメッセージ
9 cron タスクスケジューリングサービスである cron と atd から受け取ったメッセージ
10 authpriv セキュリティ/認証サービスのメッセージ
11 ftp FTPサーバーから受け取ったメッセージ
12 ntp NTPサーバーから受け取ったメッセージ
13 security ログ監査のメッセージ
14 console ログ警告のメッセージ
15 solaris-cron スケジューラ・デーモンからのメッセージ
16~23 local0~local7 ※独自の設定が可能

Facilityからは、ログの出力元が分かります。Facilityをみて、どのような状況でログが発生したのかを確認します。 例えば「kern」だった場合は、OS関連のログであることが分かり、「user」だった場合は、アプリケーション関連のログであることが分かります。

ログの緊急度を表すSeverityについて、以下の表に抜粋しましたのでご覧ください。

Numerical Code Severity(ログの緊急度) 説明
0 emerg 緊急事態。システムが不安定
1 alert 危険な状態
2 crit 致命的なエラー
3 err 一般的なエラー
4 warning システムからの警告
5 notice システムからの重要な通知
6 info 一般的な情報
7 debug デバッグ情報

Severityからは、ログの緊急度や重要度が分かります。緊急性が高いものは早急な対応が必要と判断できます。 Severityは、ログ監視ツールを使用して「err」以上ならアラートを通知するなどに利用できます。 ※ログ監視については、レッスン7-4で解説します。

RFC

RFCとは、インターネット技術の標準化などを行うIETFが発行している技術仕様などについての文書群です。

シスログのイメージ

シスログは出力元により表示形式が異なりますが、以下のようなイメージで出力されます。

Date
(日時)
Facility
(ログの種類)
Severity
(ログの緊急度)
Host Name
(送信先コンピュータ)
Message
(内容)
2022-1-27 14:58:22 user debug 192.168.1.1 test message

上記は分かりやすい例ですが、実際はもっと情報量が多く判別には慣れが必要です。
障害が発生したときには膨大な量のログが転送されてきます。重要なログを見逃さないように、FacilityやSeverityとMessageを利用してログをフィルタリングすることで、重要なログかどうかを判別していきます。

アクセスログとは

アクセスログとは、対象のサーバーに対して、誰が、いつ、どこから通信を行ったかの履歴を記録したログです。 Webサーバはもちろん、プロキシサーバー、メールサーバーなど、アクセスできるサーバーにはログが記録されています。
システムログはOSが記録するログですが、アクセスログは基本的にソフトウェアが記録するログです。 例えば、WebサーバーでApacheを使用していた場合、アクセスログを記録するのはOSではなくApacheです。
※Windows系OSの場合、標準で梱包されているサービスもあるため、OSで記録していることもあります。

アクセスログの必要性

障害発生時に、アクセスログはどのように利用されるのかを確認していきましょう。
まず、サーバーに記録されるアクセスログには次のようなものがあります。

  • 訪れた時間
  • 通信元のIPアドレス/ポート番号
  • 通信先のIPアドレス/ポート番号
  • 操作履歴

プロキシサーバーでは、認証ユーザー名やクライアントに送信したデータサイズなど、さらに多くのアクセスログが記録されています。

訪れたユーザーが何をしたのかすべて記録されます。 そのため、障害が発生した場合、発生した時間の前後で何があったのか調べることができます。 障害時だけではなく、情報漏洩があった場合の追跡調査にも役立ちます。 アクセスログの取得を周知することでも、内部からの不正なアクセスを抑止する効果も期待できます。
このように、アクセスログは障害対策だけでなくセキュリティ対策としても重要な情報を記録しています。

アクセスログの取得方法

アクセスログはソフトウェア側で記録するログであるため、各ソフトウェアごとに保存場所が異なります。 ソフトウェアが保存している場所で直接ログを閲覧するだけなら必要はないのですが、システムログと同じようにSyslogサーバーに転送する場合にはソフトウェアごとに設定が必要です。

Syslogサーバーを提供するソフトウェア

本チャプターの最後に、Syslogサーバーを提供するソフトウェアを以下の表でご紹介します。

名称 種類
syslog-ng Unix系サーバーOSで動作するオープンソースのソフトウェア
柔軟で拡張性の高いシステムロギングアプリケーション
rsyslog Unix系サーバーOSで動作するオープンソースのソフトウェア
ローカルやリモートサーバーのログを管理するデーモン
Kiwi Syslog Server Windows用のSyslogサーバー
ログ受信、保管、転送、アラートなど、必要機能がひとつにまとまったソフトウェア

障害が発生したときの原因究明や情報漏洩の予防、追跡調査などにログの解析は必須です。 最初は何を示しているのか分かりづらいですが、ポイントを押さえて見慣れていけば理解できるようになります。

以上、本レッスンではサーバーの「障害を防ぐ、障害に対応する」を学習しました。 次のレッスンではサーバーの監視について学習していきましょう。