ネスペ勉強メモ6【信頼性】

  • ネスペ試験の個人メモです

冗長化構成

リンクアグリゲーション

スイッチ間のリンク(通信経路)を複数本集約して冗長性を高めることをリンクアグリゲーションという。(アグリゲーションは集約の意味)どれか一本死んでも繋がってるので冗長性が高い。最大8本の物理リンクを集約できる。

リンクアグリゲーションには動的なものと静的なものが存在する。動的なものはLACPを用いて対向スイッチと疎通確認を定期的に行い、LACPフレームが届かなくなったら障害発生と判断する。静的なものはLACPを使わずにリンクダウンした時だけ障害発生と判断する。

LACP(Link Aggregation Control Protocol)
リンクアグリゲーションを正常に動作させるために必要な情報のやりとりを行うプロトコルのこと

障害にはリンクダウン以外の障害があるため、リンクダウン以外の障害発生時は静的なものでは解決できないため、動的なもののほうが障害に強いといえる。

リンクダウン以外の障害パターンとしては、スイッチと端末の先で障害が発生しているパターンなどである。自身のリンク自体は問題ないがその先で障害が発生している場合静的だと検知できない。

リンクアグリゲーション機能は通常同一のスイッチ内、同一のNICチーム内でのみ使用できるが、スタック接続されたL2スイッチ、L3スイッチは論理的に1台のスイッチとみなすことができるため、リンクアグリゲーション機能を有効にできる。

引用元: https://www.infraexpert.com/study/etherchannel2.html

スタック接続
複数のネットワークスイッチ(スイッチングハブ)を専用のポートおよびケーブルを介して連結し、論理的に一台の大きなスイッチとして動作させること。 ラックなどを用いて上に積み重ねるように設置するためこのように呼ばれている。

スパニングツリープロトコル(STP)

経路の冗長化を行うということは言い換えれば、迂回経路を作ることとなるため、ループ構成になってしまう。そのため、ブロードキャストドメインがループ状のネットワークで回るとブロードキャストストームが発生してしまう。

それを防ぐために用いられるのがSTPである。STPでは特定のスイッチの特定のポートを論理的にブロックすることができる。この時やり取りされるフレームをBPDU(Bridge Protocol Data Unit)という。

引用元: https://xtech.nikkei.com/it/article/COLUMN/20060615/241061/

ルータの冗長化

VRRP(Virtual Router Redundancy Protocol)
ルータを冗長化させるプロトコルのこと。VRRPを利用することで同一サブネット内の複数のルータをグループ化して、仮想的な1台のルータのようにみせかけることができる。

各物理ルータは以下のパラメタを有して互いに連携を取る

VRID … 仮想ルータを識別するIDEA
仮想MACアドレス … 仮想IPアドレスへのARP要求に対して返答されるMACアドレス
仮想IPアドレス … 仮想ルータのIPアドレス
優先度 … 1~254を設定する。デフォルトは100、値が大きいほど優先度が高い。仮想IPと物理IPが一致している場合は、そのルータの優先度は自動的に255となり、そのルータのことをオーナー(所有者)と呼ぶ

※優先度は各ルータごとに個別の値を有しているが、他は共通

仮想ルータは1台のマスタルータと1台以上のバックアップルータからなる。マスタルータはあたかも仮想IPとかそうMACを持つルータであるかのようにふるまうもの。バックアップルータはマスタルータがある限りは基本的に動作を行わない。通常Pingを叩いても反応しない(が応答を返す設定にすることもできる)

当たり前だが、仮想ルータはVRIDを変更することでサブネット内に複数稼働させることができる。こうすることで端末ごとに通るルータを指定できるためトラフィック分散に効果的である。

マスタルータは(デフォルト設定だと1秒間隔で)VRRP広告パケットを定期的に送信する。バックアップルータはこれを常に監視しており、VRRP広告パケットが途絶えると、障害発生とみなし新たなマスタルータの選出プロセスに入る。

新しいマスタルータが選出されると、当然マスタルータからVRRP広告パケットが送信され続けるわけだが、このパケットの正体は「仮想MACアドレスを送信元とし、仮想IPアドレスを目標アドレスとするGratuitousARP(自身の問い合わせ)である」であり、このパケットをブロードキャストしている。こうすることでL2SWは新ルータのノードの存在を学習することができる

下記のような状況を考える。

引用元: https://nw.seeeko.com/archives/232729.html

SW31,SW32で仮想ルータを作っており(マスタ:31, バック:32)、経路aで障害が発生した場合である。マスタルータそのものはいきているもののaが死んでいるためトラフィックの負荷分散ができていない。前述した通りマスタルータの切り替えは”VRRP広告が途絶えた時”であるため、SW31が生きている場合は本来なら切り替わらない。

こういった状況の時にVRRPトラッキング(またはVRRPトリガ)を行うことで障害を追跡することができる。これを行うことで、自身のマスタルータの優先度を下げることで新たなマスタルータを選出するといった流れをつくることができる。

サーバの冗長化

負荷分散装置(LB)
振り分けアルゴリズムに基づいてトラフィックを配下のサーバに分散する装置のこと。

振り分けサーバに分ける際にはアクセス元のIPアドレスを通知する目的で、HttpヘッダフィールドのXFF(X-Forwarded-For)が定義される。

またLBは定期的に死活監視(ヘルスチェック)を行う。配下サーバが死んでいる場合はそのサーバには振り分けを行わない。

サーバ冗長化という点からLBとDNSラウンドロビンを比較すると、LBは死活監視ができる点がポイントである。DNSラウンドロビンはそういった機能はないものの比較的に簡単に実装できるのがメリット

死活監視(ヘルスチェック)の方式には「レイヤ3方式」「レイヤ4方式」「レイヤ7方式」などがある。レイヤ3方式はping(ネットワーク層)、レイヤ4方式はTCPコネクション(トランスポート層)、レイヤ7方式はアプリケーションコマンド(アプリケーション層)でチェックする。

負荷分散アルゴリズムにもいくつか種類がある。

  1. ラウンドロビン … 均等振り分け

  2. 比重 … あらかじめサーバに比重を設定

  3. 優先度 … あらかじめ優先度を設定

  4. 最短レスポンス時間 … 最もレスポンスが速いサーバに振り分ける

  5. 最小コネクション数 … 最もコネクション数が少ないサーバに振り分ける

DSR(Direct Server Return)
LBを通過して配下サーバに行った後、またLBを経由して応答パケットを投げるとLBの負荷が高くなるので、送信元端末に直接返して上げる仕組み。しかしながら、送信元端末はLBに対してSYNパケットを投げているので、配下のAPサーバから応答パケットが行くとそのままでは整合性がとれないため「シーケンス番号」と「確認応答番号」を合わせる必要がある。

3ウェイハンドシェイクさえ繋がってしまえば後はそのサーバ間でやりとりするだけでOK

LB配下のサーバーはクライアントにLBを通っていることを認識させてはいけないため、応答パケットの送信元のIPアドレスはLBのIPアドレスになるという点も注意

セッション維持のため近年ではCookieを用いたステートフルな通信が広く行われている。ステートフルな通信の場合は一つのセッションが継続している間は同じアプリケーションサーバにアクセスする必要がある。もちろんLBもこれに対応しておりこの機能のことをセッション維持機能という。

セッション維持には様々な方法があり「配下サーバとLBの間でのみやり取りされる独自Cookieを用いる」「HTTPプロトコルを解析してCookie内容からセッションIDを識別する」などがある。この時後者の方法だとHTTPSによる暗号化通信の場合は一度復号化してCookieを取得する必要がある。この機能のことをTLSアクセラレーション機能という。

また、負荷分散装置配下のサーバでセッションクラスタリングを行っている場合は前述したセッション維持機能を使う必要はない。具体的な仕組みとしては配下のサーバ間でセッション情報を共有しておりどちらのサーバにとんでもセッションが維持できるようになっている。

クラスタシステム

仮想コンテナを複数立てて冗長化を図る….やつのサーバ版。基本的には仮想コンテナ部分と同じ。ハートビートパケットをやりとりすることで障害を検知して切り替える。ストレージに関してはサーバとは別の箇所に共有ストレージを設けてそこを見に行くことで同じデータを管理できる。

フェールオーバー時の振る舞いに関しても同じで仮想IPアドレスを互いに共有しており、障害発生時は仮想IPを引き継ぐ。当然引き継ぐとクライアントのARPテーブルがずれるため、GARPパケットを送ってARPテーブルの更新を図る。

ハートビートパケットのやりとりに失敗するとスタンバイ側は誤ってアプリケーションを起動してしまう。このような事態を避けるためハートビートパケットの通信はデータトラフィックが流れる経路とは別経路で行うべきである。このように両者のサーバーがアクティブ状態になってしまうことをスプリットブレインシンドロームという。(脳が分割してアクティブ状態的な?)

回線の冗長化

複数のインターネット回線を利用することで信頼性向上とトラフィック分散を実現する手法のことをマルチホーミングという。マルチホーミング装置の機能としては「ルート障害検知機能」「負荷分散機能」「NAT機能」「DNS機能」などがある。

NICの冗長化

NIC(Network Interface card)の略

引用元: https://www.miraiserver.ne.jp/column/about_nic/

複数のNICを論理的にひとつに束ねる技術のことをNICチーミングという。NICチーミングの構成はアクティブ/スタンバイ構成(障害が発生したらもう片方が起動)かアクティブ/アクティブ構成(両方起動しておいて障害が発生した即時で変更)のいずれか。
※アクティブ/アクティブはリンクアグリゲーションで動かす

NICのフェールオーバーでアクティブに切り替わる方法は主に3つある。

  1. NICチーミングでリンクダウンを検知しつつ、リンクステートトラッキング機能を装備したL2SWを使用する

  2. チーミングしているNICからARP要求パケットを定期的に発行して接続性を監視する方法

  3. チーミングしているNICからブロードキャストパケット(ビーコン)を定期的に送信して監視し合う方法

※リンクステートトラッキング機能とは上位リンクに障害が発生すると、下位リンクを強制的にダウンさせる仕組みのこと

この記事が気に入ったらサポートをしてみませんか?