SA.03:可用性の設計

SA.03.1 フェイルオーバークラスタ

重要度:☆☆☆(3)

概要

  • フェイルオーバークラスタによって単一障害点を解消する設計について、解決すべき課題や設計上の注意点、主要な実装を理解している。

詳細

  • フェイルオーバークラスタの目的と基本構成、及び動作原理を理解している。
    • アクティブ・スタンバイ、リソース制御、ハートビート
  • スプリットブレインについて理解している。またこれを解消する方法を理解している。
    • インターコネクト分断
    • フェンシング
    • Quorum に基づくリーダー選出
  • 主要な冗長構成、及びフェイルオーバーを実現する具体的な実装の概要や設計上の注意点を理解している。
    • VIP と VRRP による冗長構成: keepalived
    • Pacemaker/Corosync によるプロセス監視、リソース制御: リソースエージェント、STONITH、IPMI
    • 分散ストレージにおけるフェイルオーバーと復旧
    • 個々のプロトコル・サービスに合わせた冗長設計: DHCP など

SA.03.2 負荷分散と障害の局所化

重要度:☆☆☆☆(4)

概要

  • ロードバランサやメッセージングキューを用いた負荷の分散について、動作方式や制約に基づいて比較できる。
  • 偶発的な障害や部分的な障害をシステム全体に伝播させないための手法を理解している。

詳細

  • ロードバランサの主要な種類と、それぞれの基本的な設定を理解している。
    • L4 ロードバランサ、及びそのパケット転送方式: NAT、Direct Server Return (Direct Routing)、Tunneling、Local Node
    • L7 ロードバランサ、及びその振り分け規準: URI、リクエストパラメータ、HTTPヘッダ
    • 接続スケジューリング: ラウンドロビン、最小接続、最小通信量
    • バックエンドのヘルスチェック
  • 具体的な OSS を用いて負荷分散クラスタの割り当て、スケジューリング、ヘルスチェックを行う。
    • IPVS (LVS)
    • HAProxy
  • DNS ベースの負荷分散 (広域負荷分散) を用いて拠点間の冗長化を設計する。
    • ルーティングポリシー: 重み付きラウンドロビン、最小接続、ジオロケーション、近接アルゴリズム
    • 監視ツールと組み合わせによるルーティングの動的設定
  • メッセージングキューを介した非同期処理によって負荷分散や偶発的なエラーへの対策を行う。
    • 伝達方法: pull 方式、push 方式
    • QoS: At-least-once、Exactly-once、At-most-once
    • エラー検知とリトライ: ack、指数バックオフとジッターを用いたリトライ、デッドレターキュー
  • 部分的な障害をシステム全体に伝播させないための設計パターンを理解し比較できる。
    • タイムアウト、スロットリング、サーキットブレーカー

SA.03.3 データレプリケーションと災害対策

重要度:☆☆☆(3)

概要

  • データレプリケーションによる冗長性確保の仕組みを理解している。
  • 障害や災害時に迅速にサービスを復旧するために、復旧目標に応じて遠隔地へのデータコピーやサブサイトの構成・切替方法を選択できる。

詳細

  • ブロックレベルレプリケーションについて理解し、DRBD を用いてデータを冗長化する。
    • 同期/メモリ同期/非同期レプリケーション
    • マルチノードレプリケーション
    • フェイルオーバーの設計
  • 主要なミドルウェアのレプリケーション機能を知っている。
    • PostgreSQL: ストリーミングレプリケーション、ロジカルレプリケーション
  • バックアップを効率的に取得・管理するための設計を行う。
    • スナップショットを用いた静止点の確保
  • 遠隔地サブサイトの構成と切替方法について、RPO、RTO や実装上の制約、コストを含むトレードオフに基づいて比較できる。
    • データの扱い: バックアップ & リストア、レプリケーション
    • 待機方法: 停止、縮退運転での待機、完全待機
    • 切替方法: 手動切り替え、クラスタリングによるフェイルオーバー