4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【コマンド集】LPIC-3 306 High Availability and Storage Clusters 試験対策まとめ!全トピック解説

4
Posted at

はじめに

スクリーンショット 2026-04-03 23.37.36.png

こんばんは、mirukyです。
本記事はLPIC-3 306: High Availability and Storage Clusters(306-300)の 全トピック・全サブトピック を公式試験要項(Objectives V3.0)に基づいて網羅した試験対策記事です。

LPIC-3 306はLinuxにおける高可用性(HA)クラスタと分散ストレージに特化した最上位資格です。
Pacemaker/Corosync、HAProxy、DRBD、GlusterFS、Cephなど、エンタープライズのインフラ基盤を支える技術が出題範囲となります。

LPIC-3 306 試験概要

項目 内容
試験コード 306-300
試験バージョン V3.0
前提条件 有効なLPIC-2資格を保有していること
問題数 60問
試験時間 90分
合格ライン 500点 / 800点満点(約65%)
出題形式 選択式・複数選択式・穴埋め式
有効期間 5年
受験料 19,800円(税込)(出典:Pearson VUE公式マーケットプレイス)

LPIC-3 の位置付け

① LPIC-1(基礎) → LPIC-2(サーバー構築) → LPIC-3(エンタープライズ・専門領域)
- 300: Mixed Environments
- 305: Virtualization & Containerization
- 306: High Availability & Storage Clusters ← 本記事

試験の中心テーマ

  • HAクラスタ管理:Pacemaker/Corosync、HAProxy、keepalived、LVS
  • HAクラスタストレージ:DRBD、GFS2、OCFS2
  • HA分散ストレージ:GlusterFS、Ceph
  • 単一ノードHA:RAID、LVM、ネットワークボンディング

Topic 361:高可用性クラスタ管理

361.1 高可用性の概念と理論(Weight: 6)

重要用語

用語 説明
HA(High Availability) システムの高可用性。ダウンタイムを最小限にする設計
SLA(Service Level Agreement) サービスの稼働率保証(例:99.99% = 年間約52分のダウンタイム)
MTBF(Mean Time Between Failures) 故障間の平均時間。長いほど信頼性が高い
MTTR(Mean Time To Repair) 修復までの平均時間。短いほど復旧が速い
クォーラム(Quorum) クラスタの過半数ノードが動作していることの確認。スプリットブレイン防止
フェンシング(Fencing) 障害ノードをクラスタから強制排除する仕組み。STONITH
スプリットブレイン(Split Brain) クラスタが分断され、各パーティションが独立して動作してしまう状態
フェイルオーバー(Failover) 障害発生時に別ノードにサービスを自動的に引き継ぐこと
フェイルバック(Failback) 障害復旧後に元のノードにサービスを戻すこと
STONITH(Shoot The Other Node In The Head) 障害ノードを強制的にシャットダウン/リセットする仕組み

クラスタアーキテクチャ

アーキテクチャ 説明
Active/Passive 1台が稼働、1台が待機。フェイルオーバー時に待機ノードが引き継ぐ
Active/Active 全ノードが同時にサービスを提供。負荷分散
ロードバランスクラスタ リクエストを複数ノードに分散。LVS、HAProxy等
フェイルオーバークラスタ 障害時にサービスを自動移行。Pacemaker等
Shared-Nothing 各ノードが独立したストレージを持つ。DRBDで同期
Shared-Disk 共有ストレージを使用。GFS2、OCFS2等

可用性レベル

可用性 年間ダウンタイム
99% 約3日15時間
99.9% 約8時間46分
99.99% 約52分34秒
99.999% 約5分15秒

361.2 ロードバランスクラスタ(Weight: 8)

Weight 8 は 本試験で最も出題比率が高い サブトピックの一つです。

LVS(Linux Virtual Server)

LVSの転送モード

モード 説明
NAT パケットのアドレスを書き換えて転送。リアルサーバーはプライベートIP
DR(Direct Routing) MACアドレスを書き換えて転送。応答はクライアントに直接返す
TUN(Tunneling) IPトンネリングで転送。リアルサーバーが地理的に分散可能

スケジューリングアルゴリズム

アルゴリズム 略称 説明
Round Robin rr 順番に振り分け
Weighted Round Robin wrr 重み付き順番振り分け
Least Connections lc 接続数が最も少ないサーバーに転送
Weighted Least Connections wlc 重み付き最小接続
Source Hashing sh 送信元IPに基づいて固定のサーバーに転送
Destination Hashing dh 宛先IPに基づいて転送

ipvsadm コマンド集

# 仮想サーバーの追加
ipvsadm -A -t [仮想IP]:[ポート] -s [アルゴリズム]
ipvsadm -A -t 192.168.1.100:80 -s rr                      # ラウンドロビン

# リアルサーバーの追加
ipvsadm -a -t [仮想IP]:[ポート] -r [リアルIP]:[ポート] -m   # NATモード
ipvsadm -a -t [仮想IP]:[ポート] -r [リアルIP]:[ポート] -g   # DRモード
ipvsadm -a -t [仮想IP]:[ポート] -r [リアルIP]:[ポート] -i   # TUNモード

# 重み付き
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -g -w 3  # 重み3
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -g -w 1  # 重み1

# 一覧表示
ipvsadm -L -n                                              # 現在のLVS設定を表示
ipvsadm -L -n --stats                                      # 統計付き
ipvsadm -L -n --rate                                       # レート付き

# ルールの削除
ipvsadm -d -t [仮想IP]:[ポート] -r [リアルIP]:[ポート]     # リアルサーバー削除
ipvsadm -D -t [仮想IP]:[ポート]                            # 仮想サーバー削除
ipvsadm -C                                                  # 全ルール削除

# 設定の保存・復元
ipvsadm-save > /etc/sysconfig/ipvsadm                      # 保存
ipvsadm-restore < /etc/sysconfig/ipvsadm                   # 復元

keepalived

設定例(/etc/keepalived/keepalived.conf)

vrrp_instance VI_1 {
    state MASTER                               # MASTER または BACKUP
    interface eth0                             # VRRPで使用するインターフェース
    virtual_router_id 51                       # VRRPルーターID(同一グループで統一)
    priority 100                               # 優先度(MASTERを高く設定)
    advert_int 1                               # 広告間隔(秒)
    authentication {
        auth_type PASS
        auth_pass secret123
    }
    virtual_ipaddress {
        192.168.1.100/24                       # 仮想IP(VIP)
    }
}

virtual_server 192.168.1.100 80 {
    delay_loop 6                               # ヘルスチェック間隔(秒)
    lb_algo rr                                 # スケジューリングアルゴリズム
    lb_kind DR                                 # 転送モード(NAT/DR/TUN)
    protocol TCP

    real_server 192.168.1.10 80 {
        weight 1
        HTTP_GET {
            url {
                path /health
                status_code 200
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.1.11 80 {
        weight 1
        HTTP_GET {
            url {
                path /health
                status_code 200
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

コマンド集

systemctl start keepalived                    # 起動
systemctl enable keepalived                   # 自動起動有効化
ip addr show                                  # VIPの確認
journalctl -u keepalived                      # ログ確認

HAProxy

設定例(/etc/haproxy/haproxy.cfg)

global
    log /dev/log local0
    maxconn 4096
    daemon

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    timeout connect 5000ms
    timeout client  50000ms
    timeout server  50000ms
    retries 3

frontend http_front
    bind *:80
    default_backend http_back
    stats uri /haproxy?stats                   # 統計画面
    stats auth admin:password                  # 統計画面の認証

backend http_back
    balance roundrobin                         # ロードバランスアルゴリズム
    option httpchk GET /health                 # ヘルスチェック
    server web1 192.168.1.10:80 check weight 3
    server web2 192.168.1.11:80 check weight 1
    server web3 192.168.1.12:80 check backup   # バックアップサーバー

listen mysql_cluster
    bind *:3306
    mode tcp
    balance leastconn
    option mysql-check user haproxy
    server db1 192.168.1.20:3306 check
    server db2 192.168.1.21:3306 check backup

コマンド集

systemctl start haproxy                       # 起動
haproxy -c -f /etc/haproxy/haproxy.cfg        # 設定ファイルの構文チェック
haproxy -f /etc/haproxy/haproxy.cfg -sf $(cat /var/run/haproxy.pid)   # 無停止リロード
# 統計画面: http://[サーバーIP]/haproxy?stats

ldirectord

設定例(/etc/ha.d/ldirectord.cf)

checktimeout=3
checkinterval=10
autoreload=yes
logfile="/var/log/ldirectord.log"

virtual=192.168.1.100:80
    real=192.168.1.10:80 gate
    real=192.168.1.11:80 gate
    scheduler=rr
    protocol=tcp
    checktype=negotiate
    service=http
    request="health"
    receive="OK"

361.3 フェイルオーバークラスタ(Weight: 8)

Weight 8 は 361.2と並んで最も出題比率が高い サブトピックです。

Pacemaker / Corosync アーキテクチャ

① Pacemaker(クラスタリソースマネージャ)

  • リソースエージェント(RA)の種類:OCF / LSB(init スクリプト) / systemd
    ② Corosync(クラスタ通信レイヤー)
  • ノード間のメッセージング・メンバーシップ管理

Corosync 設定(/etc/corosync/corosync.conf)

totem {
    version: 2
    cluster_name: mycluster
    transport: knet
    crypto_cipher: aes256
    crypto_hash: sha256
}

nodelist {
    node {
        ring0_addr: 192.168.1.10
        name: node1
        nodeid: 1
    }
    node {
        ring0_addr: 192.168.1.11
        name: node2
        nodeid: 2
    }
}

quorum {
    provider: corosync_votequorum
    two_node: 1
}

logging {
    to_logfile: yes
    logfile: /var/log/corosync/corosync.log
    to_syslog: yes
}

pcs コマンド集(Pacemaker管理CLI)

クラスタの構築・管理

# クラスタの初期設定
pcs host auth [ノード1] [ノード2]              # ノード認証
pcs cluster setup [クラスタ名] [ノード1] [ノード2]   # クラスタのセットアップ
pcs cluster start --all                        # 全ノードでクラスタ起動
pcs cluster stop --all                         # 全ノードでクラスタ停止
pcs cluster enable --all                       # 自動起動有効化
pcs cluster disable --all                      # 自動起動無効化
pcs cluster destroy                            # クラスタの破棄

# クラスタ状態確認
pcs status                                     # クラスタ全体の状態
pcs status nodes                               # ノード状態
pcs status resources                           # リソース状態
pcs cluster status                             # クラスタサービス状態

# Corosync認証キーの生成
corosync-keygen                                # 認証キー生成

リソースの管理

# リソースの作成
pcs resource create [リソース名] [リソースエージェント] [パラメータ...]
pcs resource create vip ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24
pcs resource create webserver ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf

# リソースの操作
pcs resource show                              # リソース一覧
pcs resource show [リソース名]                 # リソース詳細
pcs resource enable [リソース名]               # リソース有効化
pcs resource disable [リソース名]              # リソース無効化
pcs resource delete [リソース名]               # リソース削除
pcs resource restart [リソース名]              # リソース再起動
pcs resource move [リソース名] [ノード名]      # リソースを特定ノードに移動
pcs resource clear [リソース名]                # 移動制約のクリア
pcs resource cleanup [リソース名]              # リソースエラー状態のクリア
pcs resource update [リソース名] [パラメータ=値]   # パラメータ変更

# リソースグループ
pcs resource group add [グループ名] [リソース1] [リソース2]   # グループ作成

制約(Constraints)

# コロケーション制約(同じノードで動かす/動かさない)
pcs constraint colocation add [リソースA] with [リソースB] score=INFINITY
pcs constraint colocation add webserver with vip INFINITY   # webserverをvipと同じノードに

# 順序制約(起動順序)
pcs constraint order [リソースA] then [リソースB]
pcs constraint order vip then webserver                     # vip→webserverの順に起動

# ロケーション制約(ノードの優先度)
pcs constraint location [リソース名] prefers [ノード名]=[スコア]
pcs constraint location vip prefers node1=100               # node1を優先

# 制約の一覧・削除
pcs constraint list --full                                  # 全制約の表示
pcs constraint remove [制約ID]                              # 制約の削除

フェンシング(STONITH)

# STONITHデバイスの設定
pcs stonith create [デバイス名] [エージェント] [パラメータ...]
pcs stonith create ipmi-fence fence_ipmilan ipaddr=[IPMI IP] login=[ユーザー名] passwd=[パスワード] pcmk_host_list=[ノード名]

# STONITHの管理
pcs stonith show                               # STONITHデバイス一覧
pcs stonith fence [ノード名]                   # 手動フェンシング
pcs property set stonith-enabled=true          # STONITH有効化(本番では必須)
pcs property set stonith-enabled=false         # STONITH無効化(テスト環境のみ)

# クラスタプロパティ
pcs property set no-quorum-policy=ignore       # 2ノード構成でのクォーラム無視
pcs property list                              # 全プロパティの表示

crm コマンド(レガシーCLI)

crm status                                     # クラスタ状態
crm configure show                             # 設定の表示
crm configure edit                             # 設定の編集
crm resource start [リソース名]                # リソース起動
crm resource stop [リソース名]                 # リソース停止
crm node standby [ノード名]                    # ノードをスタンバイに
crm node online [ノード名]                     # ノードをオンラインに

重要ファイル

  • /etc/corosync/corosync.conf :Corosync設定
  • /etc/corosync/authkey :Corosync認証キー
  • /var/lib/pacemaker/cib/cib.xml :クラスタ情報ベース(CIB)

Topic 362:高可用性クラスタストレージ

362.1 DRBD(Distributed Replicated Block Device)(Weight: 6)

DRBDの概念

① ノード1(Primary)← ネットワーク同期 → ノード2(Secondary)
② 各ノードの構成:/dev/drbd0(仮想ブロックデバイス)→ /dev/sda1(実デバイス)

DRBDの動作モード

モード 説明
Protocol A 非同期。ローカル書き込み完了で応答。最も高速
Protocol B 半同期。リモートバッファ到達で応答
Protocol C 同期。リモート書き込み完了で応答。最も安全(推奨)

DRBDのロール

ロール 説明
Primary 読み書き可能。ファイルシステムをマウントする側
Secondary 直接アクセス不可。レプリケーションを受信
Dual-Primary 両ノードが同時にPrimary(クラスタFSが必要)

設定例(/etc/drbd.d/r0.res)

resource r0 {
    protocol C;

    on node1 {
        device /dev/drbd0;
        disk /dev/sda1;
        address 192.168.1.10:7789;
        meta-disk internal;
    }

    on node2 {
        device /dev/drbd0;
        disk /dev/sda1;
        address 192.168.1.11:7789;
        meta-disk internal;
    }
}

コマンド集

# DRBD初期設定
drbdadm create-md [リソース名]                # メタデータの作成
drbdadm up [リソース名]                       # リソースの起動
drbdadm down [リソース名]                     # リソースの停止

# ロール管理
drbdadm primary [リソース名]                  # Primaryに昇格
drbdadm secondary [リソース名]                # Secondaryに降格

# 初回同期
drbdadm -- --overwrite-data-of-peer primary [リソース名]   # 強制同期開始

# 状態確認
drbdadm status                                # 全リソースの状態
drbdadm status [リソース名]                   # 特定リソースの状態
cat /proc/drbd                                # 同期状態の確認(レガシー)
drbdsetup status --verbose                    # 詳細状態

# 設定の適用
drbdadm adjust [リソース名]                   # 設定変更の適用

# スプリットブレイン解決
# Secondary側で実行:
drbdadm disconnect [リソース名]
drbdadm secondary [リソース名]
drbdadm -- --discard-my-data connect [リソース名]
# Primary側で実行:
drbdadm connect [リソース名]

# drbdsetup(低レベルコマンド)
drbdsetup show [デバイス番号]                  # デバイス設定の表示

重要ファイル

  • /etc/drbd.conf :DRBDのメイン設定
  • /etc/drbd.d/ :リソース定義ファイル
  • /etc/drbd.d/global_common.conf :グローバル設定
  • /proc/drbd :DRBD状態(レガシー)

362.2 クラスタストレージアクセス(Weight: 3)

iSCSI

# iSCSIターゲット(サーバー側)
targetcli                                     # targetcli対話式シェル
# /backstores/block create [名前] /dev/sdb
# /iscsi create iqn.2026-03.com.example:storage
# /iscsi/iqn.../tpg1/luns create /backstores/block/[名前]
# /iscsi/iqn.../tpg1/acls create iqn.2026-03.com.example:client

# iSCSIイニシエータ(クライアント側)
iscsiadm -m discovery -t sendtargets -p [ターゲットIP]     # ターゲット検出
iscsiadm -m node --login                                    # ログイン
iscsiadm -m session                                         # セッション一覧
iscsiadm -m node --logout                                   # ログアウト

マルチパス(dm-multipath)

# マルチパス設定
multipath -ll                                 # マルチパスデバイスの表示
multipathd show paths                         # パスの状態表示
systemctl start multipathd                    # multipathデーモン起動

設定例(/etc/multipath.conf)

defaults {
    polling_interval 10
    path_grouping_policy multibus
    path_selector "round-robin 0"
    failback immediate
}

multipaths {
    multipath {
        wwid [デバイスWWID]
        alias mpath0
    }
}

重要ファイル

  • /etc/iscsi/iscsid.conf :iSCSIイニシエータ設定
  • /etc/iscsi/initiatorname.iscsi :イニシエータ名
  • /etc/multipath.conf :マルチパス設定

362.3 クラスタファイルシステム(Weight: 4)

GFS2(Global File System 2)

# GFS2ファイルシステムの作成
mkfs.gfs2 -p lock_dlm -t [クラスタ名]:[FS名] -j [ジャーナル数] /dev/[デバイス名]
mkfs.gfs2 -p lock_dlm -t mycluster:myfs -j 2 /dev/drbd0

# マウント
mount -t gfs2 /dev/[デバイス名] /mnt

# ジャーナル管理
gfs2_jadd -j 1 /mnt                          # ジャーナルの追加(ノード追加時)

# クォータ管理
gfs2_quota list -f /mnt                       # クォータ一覧

# 修復
fsck.gfs2 -y /dev/[デバイス名]                # ファイルシステムチェック(アンマウント状態で)

OCFS2(Oracle Cluster File System 2)

# OCFS2ファイルシステムの作成
mkfs.ocfs2 -N [ノード数] /dev/[デバイス名]
mkfs.ocfs2 -N 2 /dev/drbd0

# マウント
mount -t ocfs2 /dev/[デバイス名] /mnt

# クラスタ設定
o2cb_ctl -C -n [クラスタ名] -o                # クラスタの作成
o2cb_ctl -N -n [ノード名] -c [クラスタ名] -o -i [IP] -p [ポート]   # ノード追加

# 状態確認
mounted.ocfs2 -f                              # マウント状態確認

重要ファイル

  • /etc/cluster/cluster.conf :クラスタ設定(RHEL系レガシー)
  • /etc/ocfs2/cluster.conf :OCFS2クラスタ設定

Topic 363:高可用性分散ストレージ

363.1 GlusterFS ストレージクラスタ(Weight: 5)

GlusterFS アーキテクチャ

① クライアント
② GlusterFS ボリューム(論理的な統合ストレージ)

  • Brick(node1:/data/brick1)
  • Brick(node2:/data/brick2)
  • Brick(node3:/data/brick3)

ボリュームタイプ

タイプ 説明
Distributed ファイルを複数ブリックに分散配置。容量が合算される
Replicated ファイルを複数ブリックにミラーリング。冗長性あり
Striped ファイルをストライピング。大きなファイルのI/O向上(非推奨)
Distributed-Replicated 分散+ミラーリングの組み合わせ
Dispersed イレイジャーコーディング。RAID5/6的な冗長性

コマンド集

# ピア(ノード)管理
gluster peer probe [ノードIP]                 # ピアの追加
gluster peer detach [ノードIP]                # ピアの削除
gluster peer status                           # ピア状態の確認
gluster pool list                             # プール内ノード一覧

# ボリューム管理
gluster volume create [ボリューム名] replica 2 [ノード1]:/data/brick1 [ノード2]:/data/brick2
gluster volume create [ボリューム名] disperse 3 redundancy 1 [ノード1]:/brick [ノード2]:/brick [ノード3]:/brick
gluster volume start [ボリューム名]           # ボリューム開始
gluster volume stop [ボリューム名]            # ボリューム停止
gluster volume delete [ボリューム名]          # ボリューム削除
gluster volume info                           # ボリューム情報
gluster volume info [ボリューム名]            # 特定ボリューム情報
gluster volume status                         # ボリューム状態
gluster volume status [ボリューム名] detail   # 詳細状態

# ボリュームの拡張
gluster volume add-brick [ボリューム名] [ノード]:/data/brick3

# ボリュームのリバランス
gluster volume rebalance [ボリューム名] start
gluster volume rebalance [ボリューム名] status

# ヒーリング(データ修復)
gluster volume heal [ボリューム名]            # ヒーリング開始
gluster volume heal [ボリューム名] info       # ヒーリング状態
gluster volume heal [ボリューム名] full       # 完全ヒーリング

# ジオレプリケーション
gluster volume geo-replication [ローカルボリューム] [リモートホスト]::[リモートボリューム] create
gluster volume geo-replication [ローカルボリューム] [リモートホスト]::[リモートボリューム] start
gluster volume geo-replication [ローカルボリューム] [リモートホスト]::[リモートボリューム] status

# クライアントからのマウント
mount -t glusterfs [ノードIP]:[ボリューム名] /mnt
# /etc/fstab の例:
# node1:vol1  /mnt  glusterfs  defaults,_netdev  0  0

重要ファイル

  • /etc/glusterfs/ :GlusterFS設定
  • /var/lib/glusterd/ :GlusterFSデーモンのデータ
  • /var/log/glusterfs/ :GlusterFSログ

363.2 Ceph ストレージクラスタ(Weight: 8)

Weight 8 は 361.2、361.3 と並んで最も出題比率が高い サブトピックです。

Ceph アーキテクチャ

① クライアント
② RADOS(Reliable Autonomic Distributed Object Store)

  • MON(Monitor):クラスタマップの管理、クォーラム
  • OSD(Object Storage Daemon):データの保存・複製・復旧
  • MDS(Metadata Server):CephFSのメタデータ管理
  • MGR(Manager):モニタリング・ダッシュボード

Ceph のストレージ方式

方式 説明
RADOS Block Device(RBD) ブロックストレージ。VMディスクに最適
CephFS POSIXファイルシステム。共有ファイルストレージ
RADOS Gateway(RGW) オブジェクトストレージ。S3/Swift互換API

コマンド集

クラスタ管理

# クラスタ状態
ceph status                                   # クラスタ全体の状態
ceph health                                   # ヘルス状態(HEALTH_OK等)
ceph health detail                            # ヘルス詳細
ceph -s                                       # ceph statusの短縮形

# モニター管理
ceph mon stat                                 # MON状態
ceph mon dump                                 # MON情報のダンプ
ceph quorum_status                            # クォーラム状態

# OSD管理
ceph osd tree                                 # OSDツリー(トポロジ)
ceph osd stat                                 # OSD統計
ceph osd dump                                 # OSD情報のダンプ
ceph osd df                                   # OSD使用量
ceph osd out [OSD ID]                         # OSDをクラスタから外す
ceph osd in [OSD ID]                          # OSDをクラスタに戻す
ceph osd down [OSD ID]                        # OSDをdownにする
ceph osd crush reweight osd.[OSD ID] [重み]   # OSDの重みを変更

# マネージャー
ceph mgr module enable dashboard              # ダッシュボードモジュール有効化
ceph mgr services                             # マネージャーサービス一覧

プール管理

# プール操作
ceph osd pool create [プール名] [PG数]        # プール作成
ceph osd pool delete [プール名] [プール名] --yes-i-really-really-mean-it   # プール削除
ceph osd pool ls                              # プール一覧
ceph osd pool ls detail                       # プール一覧(詳細)
ceph osd pool get [プール名] size             # レプリカ数の確認
ceph osd pool set [プール名] size [数]        # レプリカ数の変更
ceph osd pool set [プール名] pg_num [PG数]    # PG数の変更
ceph osd pool stats                           # プール統計
ceph df                                       # クラスタ容量
ceph df detail                                # 詳細容量

RADOS操作

# RADOSオブジェクト操作
rados -p [プール名] put [オブジェクト名] [ローカルファイルパス]   # オブジェクト格納
rados -p [プール名] get [オブジェクト名] [出力ファイルパス]      # オブジェクト取得
rados -p [プール名] rm [オブジェクト名]                          # オブジェクト削除
rados -p [プール名] ls                                           # オブジェクト一覧
rados df                                                         # RADOS使用量

RBD(RADOS Block Device)

# RBDイメージ管理
rbd create [イメージ名] --size [サイズMB] --pool [プール名]      # イメージ作成
rbd create myimage --size 10240 --pool rbd                        # 10GBのイメージ
rbd ls [プール名]                                                # イメージ一覧
rbd info [プール名]/[イメージ名]                                 # イメージ情報
rbd rm [プール名]/[イメージ名]                                   # イメージ削除
rbd resize [プール名]/[イメージ名] --size [新サイズMB]           # リサイズ

# RBDのマッピング
rbd map [プール名]/[イメージ名]                                  # デバイスにマップ
rbd showmapped                                                   # マップ済みデバイス一覧
rbd unmap /dev/rbd0                                              # アンマップ

# RBDスナップショット
rbd snap create [プール名]/[イメージ名]@[スナップショット名]
rbd snap ls [プール名]/[イメージ名]                              # スナップショット一覧
rbd snap rollback [プール名]/[イメージ名]@[スナップショット名]   # ロールバック
rbd snap rm [プール名]/[イメージ名]@[スナップショット名]         # スナップショット削除

CephFS

# CephFSの作成
ceph fs new [FS名] [メタデータプール名] [データプール名]

# CephFSの確認
ceph fs ls                                    # ファイルシステム一覧
ceph fs status                                # ファイルシステム状態
ceph mds stat                                 # MDS状態

# CephFSのマウント
mount -t ceph [MON IP]:6789:/ /mnt -o name=admin,secret=[シークレットキー]
# FUSE経由
ceph-fuse /mnt

CRUSH マップ

# CRUSHマップの操作
ceph osd crush dump                           # CRUSHマップのダンプ
ceph osd crush tree                           # CRUSHツリー表示
ceph osd getcrushmap -o [出力ファイル名]      # バイナリ形式でエクスポート
crushtool -d [バイナリファイル] -o [テキストファイル]   # デコンパイル
crushtool -c [テキストファイル] -o [バイナリファイル]   # コンパイル
ceph osd setcrushmap -i [バイナリファイル]    # CRUSHマップの適用

重要ファイル

  • /etc/ceph/ceph.conf :Cephメイン設定
  • /etc/ceph/ceph.client.admin.keyring :管理者キーリング
  • /var/lib/ceph/ :Cephデータディレクトリ
  • /var/log/ceph/ :Cephログ

Topic 364:単一ノード高可用性

364.1 ハードウェアとリソースの高可用性(Weight: 2)

冗長化の対象

対象 冗長化手段
電源 冗長電源ユニット(PSU)、UPS
ディスク RAID
ネットワーク ボンディング/チーミング
CPU/メモリ ホットスワップ(対応ハードウェア)

コマンド集

# ハードウェアウォッチドッグ
cat /dev/watchdog                             # ウォッチドッグデバイス
modprobe softdog                              # ソフトウェアウォッチドッグ
wdctl                                         # ウォッチドッグ情報の表示

# UPS管理(NUT)
upsc [UPS名]                                  # UPS状態確認
upscmd -l [UPS名]                             # 使用可能なコマンド一覧

364.2 高度なRAID(Weight: 2)

コマンド集

# RAID作成
mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sd[abcd]1   # RAID10
mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sd[abcd]1    # RAID6

# RAID状態確認
cat /proc/mdstat                              # RAID状態
mdadm --detail /dev/md0                       # 詳細情報
mdadm --examine /dev/sda1                     # デバイスのRAID情報

# ディスク障害対応
mdadm --manage /dev/md0 --fail /dev/sda1      # ディスクを故障状態にする
mdadm --manage /dev/md0 --remove /dev/sda1    # ディスクの除去
mdadm --manage /dev/md0 --add /dev/sde1       # 新ディスクの追加(リビルド開始)

# スペアディスク
mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sd[abcd]1

# RAID設定の保存
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
update-initramfs -u                           # initramfsの更新(Debian系)

# RAIDの成長(拡張)
mdadm --grow /dev/md0 --raid-devices=4        # ディスク数を増やす
mdadm --grow /dev/md0 --level=6               # RAIDレベルを変更

364.3 高度なLVM(Weight: 3)

コマンド集

# LVMミラーリング
lvcreate --type raid1 -m 1 -L 10G -n [LV名] [VG名]        # RAID1ミラー
lvcreate --type raid5 -i 2 -L 10G -n [LV名] [VG名]        # RAID5

# ミラーの変換
lvconvert --type raid1 -m 1 /dev/[VG名]/[LV名]             # 既存LVをミラーに変換
lvconvert --type linear /dev/[VG名]/[LV名]                 # ミラーを解除

# シンプロビジョニング
lvcreate --type thin-pool -L 50G -n [シンプール名] [VG名]
lvcreate --type thin -V 100G -n [シンLV名] --thinpool [シンプール名] [VG名]
# 物理50GBのプールから論理100GBのLVを作成(オーバーコミット)

# スナップショット
lvcreate -s -L 5G -n [スナップショット名] /dev/[VG名]/[LV名]   # スナップショット作成
lvs                                                             # スナップショット使用率確認
lvconvert --merge /dev/[VG名]/[スナップショット名]              # スナップショットのマージ(復元)

# LVMキャッシュ
lvcreate --type cache-pool -L 10G -n [キャッシュプール名] [VG名] /dev/ssd1
lvconvert --type cache --cachepool [VG名]/[キャッシュプール名] [VG名]/[LV名]

# 状態確認
pvs                                           # PV一覧
vgs                                           # VG一覧
lvs -a -o +devices                            # LV一覧(デバイス付き)

364.4 ネットワーク高可用性(Weight: 5)

ボンディングモード

モード 番号 説明
balance-rr 0 ラウンドロビン。負荷分散
active-backup 1 アクティブ/バックアップ。最も一般的
balance-xor 2 XORハッシュベースの分散
broadcast 3 全スレーブに送信
802.3ad(LACP) 4 リンクアグリゲーション。スイッチ側もLACP対応必要
balance-tlb 5 送信負荷分散。スイッチ設定不要
balance-alb 6 送受信負荷分散。スイッチ設定不要

コマンド集

# nmcli でボンディング設定
nmcli connection add type bond con-name [ボンド名] ifname bond0 bond.options "mode=active-backup,miimon=100"
nmcli connection add type ethernet con-name [スレーブ1名] ifname [インターフェース1] master bond0
nmcli connection add type ethernet con-name [スレーブ2名] ifname [インターフェース2] master bond0
nmcli connection up [ボンド名]

# ip コマンドでボンディング設定
ip link add bond0 type bond mode active-backup
ip link set [インターフェース1] master bond0
ip link set [インターフェース2] master bond0
ip link set bond0 up

# チーミング(teamd)
nmcli connection add type team con-name [チーム名] ifname team0 config '{"runner": {"name": "activebackup"}}'
nmcli connection add type team-slave con-name [スレーブ1名] ifname [インターフェース1] master team0
nmcli connection add type team-slave con-name [スレーブ2名] ifname [インターフェース2] master team0
teamdctl team0 state                          # チーム状態の確認
teamnl team0 ports                            # ポート一覧

# ボンディング状態確認
cat /proc/net/bonding/bond0                   # ボンド状態の詳細

# VRRP(keepalived)
# keepalived.confでVRRPインスタンスを設定(361.2参照)

重要ファイル

  • /etc/sysconfig/network-scripts/ifcfg-bond0 :ボンディング設定(RHEL系)
  • /proc/net/bonding/bond0 :ボンディング状態

出題比率(Weight)ランキング

順位 サブトピック Weight 内容
1 361.2 8 ロードバランスクラスタ(LVS/HAProxy/keepalived)
1 361.3 8 フェイルオーバークラスタ(Pacemaker/Corosync)
1 363.2 8 Cephストレージクラスタ
4 361.1 6 高可用性の概念と理論
4 362.1 6 DRBD
6 363.1 5 GlusterFSストレージクラスタ
6 364.4 5 ネットワーク高可用性
8 362.3 4 クラスタファイルシステム(GFS2/OCFS2)
9 362.2 3 クラスタストレージアクセス
9 364.3 3 高度なLVM
11 364.1 2 ハードウェアとリソースの高可用性
11 364.2 2 高度なRAID

試験対策のポイント

頻出テーマ 暗記チェックリスト

Topic 361:HAクラスタ管理

  • HA用語(クォーラム、フェンシング、スプリットブレイン、STONITH、MTBF、MTTR)
  • クラスタアーキテクチャの種類と特徴
  • ipvsadm のオプション(-A, -a, -g, -m, -i, -s
  • LVSの転送モード(NAT/DR/TUN)の違い
  • keepalivedのkeepalived.confの構造(VRRP + virtual_server)
  • HAProxyのhaproxy.cfgの構造(frontend/backend/listen)
  • pcs コマンド体系(cluster/resource/constraint/stonith/property)
  • Corosyncのcorosync.confの構造
  • リソース制約(colocation/order/location)の設定方法
  • STONITHの設定と有効化

Topic 362:HAクラスタストレージ

  • DRBDのプロトコル(A/B/C)の違い
  • DRBDのロール(Primary/Secondary)管理コマンド
  • DRBDのスプリットブレイン解決手順
  • iSCSIのターゲット/イニシエータ設定
  • マルチパス(dm-multipath)の設定
  • GFS2/OCFS2の作成・マウント手順

Topic 363:HA分散ストレージ

  • GlusterFSのボリュームタイプ(Distributed/Replicated/Dispersed等)
  • gluster コマンド体系(peer/volume/heal/geo-replication)
  • Cephのアーキテクチャ(MON/OSD/MDS/MGR)
  • ceph コマンド体系(status/osd/pool/fs/health)
  • RBDの作成・マッピング・スナップショット
  • CephFSの作成・マウント
  • CRUSHマップの概念

Topic 364:単一ノードHA

  • ボンディングモード(active-backup/802.3ad等)と使い分け
  • nmcli / ip でのボンディング設定
  • 高度なRAID操作(成長・レベル変更・スペアディスク)
  • LVMの高度な機能(ミラー・シンプロビジョニング・キャッシュ・スナップショット)

おわりに

LPIC-3 306は Pacemaker/CorosyncHAProxy/keepalived/LVSCeph がWeight 8で最重要です。この3つで試験全体の約40%を占めます。

加えて、DRBD、GlusterFS、ネットワークボンディングもWeight 5〜6と高く、幅広い知識が求められます。

学習の進め方としては:

  1. 2ノード構成のPacemaker/Corosyncクラスタを構築する(仮想環境推奨)
  2. HAProxy + keepalivedでロードバランサを構築する
  3. DRBDで2ノード間のブロックレプリケーションを実践する
  4. CephクラスタをデプロイしてRBD/CephFSを操作する
  5. GlusterFSでレプリカボリュームを作成・マウントする
  6. ネットワークボンディングの各モードを試す

この記事が合格への一助になれば幸いです。

ここまでお読みいただきありがとうございます。
ではまた、お会いしましょう。

参考リンク

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?