2013年6月29日土曜日

clonezillaによるネットワーク越しイメージバックアップ、リストア手順(準備編)

linux上にインストールしたclonezillaを使い、
各サーバのイメージのバックアップ、リストアする手順をまとめておく。

バックアップサーバとは別セグメントにあるサーバを対象にした場合に、
素直にバックアップがとれず頭を抱える部分があった。
少し複雑だが、ゲートウェイを挟んだ環境を前提とし、
その手順を残しておく。


◆ 環境
・バックアップ取得サーバ
ホスト名
 backup101

 IPアドレス
  eth0:192.0.2.1/24
  eth1:未使用


・バックアップ対象サーバ
ホスト名
 server101~103

 IPアドレス
  198.51.100.1/24~198.51.100.3/24


先に書いた通り、バックアップサーバであるbackup101は
バックアップ対象サーバと同じセグメントには存在しない。
ルータを挟んでいる構成になっている前提とする。


インストール手順は割愛。
◆ DRBL(Diskless Remote Boot in Linux)の設定事前作業

L3スイッチ越しのバックアップにリストアはNFSを利用するため、
次のファイルでNFSサーバを指定する。
# vi /usr/share/drbl/setup/files/misc/init.drbl
(略)
    nfsserver=$nfsserver_default
  fi
fi
nfsserver=192.0.2.1

202行目あたりの"nfsserver="にbackup101のeth0のアドレスをふる。



バックアップサーバであるbackup101に仮想的に
バックアップ対象サーバセグメントのIPアドレスを付与する。
# ifconfig eth1 198.51.100.100/24

大事なところなので何度でも書く。
backup101はバックアップ対象サーバと同じセグメントには存在しない。
ルータを挟んでいる。
DRBLの仕様なのか同じセグメントにあることしか想定されていないため、
DRBLの設定ファイルを作るために一時的にバックアップ対象群のIPアドレスをふる。
当然このインターフェースでは通信はできない。



◆ DRBLの設定
drblpushコマンドでインタラクティブに設定を進めていく。
# drblpush -i
(drbl.sf.net のような)DBS ドメインを入力して下さい:
[drbl.name] ENTER ← 気にせずディフォルトのまま

NIS/YP ドメイン名を入力して下さい:
[penguinzilla] ENTER ← 気にせずディフォルトのまま

クライアントホスト名の前半を入力して下さい:
[backup101] server ← server101~103なので

システムで設定されたイーサネットカードが見つかりました: eth0 eth1
このサーバのどのイーサネットポートを DRBL 接続用ではなく
パブリックインターネットアクセス用にしますか?
[eth0] eth0

WAN 接続用に選択したイーサネットポート: eth0
DRBL 環境用のイーサネットポート: eth1

この後マルチキャストに関する警告が出るが
意図通りであればENTERで進む

クライアントの MAC アドレスを収集します!
[y/N] N

これは DRBL サーバのイーサネットネットワークインターフェースに
接続されたクライアント用です。 eth1 ?
[y/N] N

このイーサネットポートに接続された DRBL クライアント用の
IP アドレスの末尾の数字の開始番号(つまり、IP アドレス a.b.c.d の d の最初の数字)を
入力して下さい。 eth1.
[1] 1 ←バックアップ対象サーバは198.51.100.1~198.51.100.3であった

DRBL サーバのイーサネットインターフェースに接続された
DRBL クライアント(学生用 PC)は何台ですか eth1?
[12] 3

DRBL サーバのイーサネットインターフェースに接続されたクライアント用の
IP アドレスを設定します。 eth1 as: 198.51.100.1 - 198.51.100.3
了解 ? [Y/n] Y


DRBL 環境のレイアウト: 
******************************************************
          NIC    NIC IP                    Clients
+-----------------------------+
|         DRBL SERVER         |
|                             |
|   +-- [eth0] 192.0.2.1      +- to WAN
|                             |
|   +-- [eth1] 198.51.100.100 +- to clients group 1 [ 3 clients, their IP 
|                             |            from 198.51.100.1 - 198.51.100.3]
+-----------------------------+
******************************************************

このシステムでは、ディスクレス Linux サービス用に3つのモードがあります:
[0]完全 DRBL モード。各クライアントは専用の NFS ベースの /etc、/var があります。
[1]DRBL SSI(単一システムイメージ)モード。各クライアントは tmpfs ベースの /etc、/var を使用します。
[2]クライアントにディスクレス Linux サービスを提供しません。
[0] 0

このシステムでは、Clonezilla 用の4つのモードを選択できます:
[0] 完全 Clonezilla モード:全クライアントには NFS ベースの個別 /etc, /var があります。
[1] Clonezilla ボックスモード:全クライアントは tmpfs ベースの /etc, /var があります。このモードでは、サーバの負荷と必要なディスク領域が完全 Clonezilla モードと比べて少なくなります。【注意】Clonezilla ボックスモードでは、クライアント設定と設定ファイルは DRBL サーバに保存されません!設定は一度だけ使われて、マシン停止後に消失します!
[2] Clonezilla は不要です。
[3] クライアントの OS(オペレーティングシステム)として Clonezilla Live を使用(テスト用)。
[0] 0

Clonezilla を使用する際、このサーバのどのディレクトリをイメージの保存に使用しますか? 
(絶対パスを使用してください。/mnt, /media, /tmp 下を割り当てないで下さい)
[/backup] /backup ← iback101上に事前にmkdirしておく必要がある

クライアントマシンにスワップパーティションか書き込み可能なファイルシステムが
あるハードディスクがある場合、スワップパーティションを使用するか、
書き込み可能なファイルシステムにスワップファイルを作り、
クライアントがより多くのメモリを使えるようにしますか?
(このステップはこのハードディスク中のどのデータも破壊しません)
[Y/n] Y

スワップスペースの最大サイズ(MB)はいくつですか?
[128] 128

クライアント起動後に使用するクライアントのモードはどれですか?
1: グラフィックモード(X Window System) (デフォルト),
2: テキストモード
[1] 2

セキュリティ強化の為、サーバからコピーした同じ root のパスワードを使用する代わりに、
クライアントの root パスワードを設定しますか?
[y/N] N

セキュリティ強化の為、クライアント用に pxelinux のパスワードを設定し、クライアント起動時、開始用のパスワード入力が要るようにしますか?
[y/N] N

クライアント用に起動プロンプトの設定をしますか?
[Y/n] Y

クライアントの起動プロンプトタイムアウト秒は(0.1秒単位。秒数を10倍して下さい)?
[70] 70

クライアント起動時、PXE メニュー用のグラフィカル背景を使用しますか?
[y/N] N

エイリアスインターフェースの使用により、
各クライアントは 2 つの IP アドレスを持てます。
片方は、DRBL サーバに接続するクライアント用のプライベート IP アドレスで、
もう片方はスイッチから WAN に直接接続するクライアント用のパブリック IP です。
クライアントのパブリック IP アドレスを設定しますか?
[y/N] N

DRBL クライアントにターミナルモードを実行するオプションがあるようにしますか?
つまり、クライアントにリモートディスプレイ実行させたい場合(サーバの資源をかなり使います)、
y を答えて下さい。
[y/N] N

DRBL サーバを NAT サーバとしますか? no の場合、DRBL クライアントはインターネットにアクセス出来ません。
[Y/n] n

もしあれば、古い既存の DRBL クライアントの設定を保持しますか?
[Y/n] n

サーバで実行中のカーネルは次をサポートしています: NFS over TCP!
Enter キーを押して継続してください…
ENTER

システムにファイルを導入する準備が整いました!
続けますか?
[Y/n] Y



◆ DRBLの設定事後作業
eth1を無効にする。
eth1は設定ファイルを作成するために
一時的に割り当てたに過ぎない。
# ifdown eth1



◆ DHCPの設定
dhcp用コンフィグの編集をする。
# vi /etc/dhcp/dhcpd.conf

①、②、③の赤字が修正、追加項目である。
backup101が実際に所属しているサブネットの設定
backup101の自セグメントにはバックアップ対象は存在しないので
設定は不要である。必要最小限書いておけばいいだろう。

(変更前)
subnet 192.0.2.0 netmask 255.255.255.0 {
    option subnet-mask  255.255.255.0;
    option routers 192.0.2.1;
    next-server 192.0.2.1;

    pool {
      range 192.0.2.1 192.0.2.1;
    }
}

(変更後)
subnet 192.0.2.0 netmask 255.255.255.0 {
}


② バックアップ対象サブネットの設定
subnet 198.51.100.0 netmask 255.255.255.0 {
    option subnet-mask  255.255.255.0;
    option routers 198.51.100.254; ← バックアップ対象セグメントのGW
    next-server 192.0.2.1; ← backup101の実IPアドレス

    pool {
      # allow members of "DRBL-Client";
      range 198.51.100.1 1928.51.100.3;
    }
}


③ 各クライアントのMACアドレスのエントリーを追記
host server101 {
        fixed-address 198.51.100.1;
        hardware ethernet 2c:76:8a:4e:cd:7b;
}
2、3号機も追記する。


dhcpdを再起動する。
# service dhcpd restart

(注意)
dhcpdのバージョンによってはdhcpdが参照する設定ファイル内に、
仮想NICが登録されることがある。
これは何度も述べたように一時的に用意したものなのですでにダウンさせている。
dhcpdが起動しないかもしれないため、消しておくこと。
/etc/sysconfig/dhcpd
DHCPDARGS="eth1"



◆ NFSの設定
クライアントがPXEブートで起動するときに使用するfstabを修正する。
以下のようなファイルができているはずである。
これはserver101の例である。
# vi /tftpboot/nodes/198.51.100.1/etc/fstab

以下のようなnfsのマウントポイントの前半部分には
backup101のeth1に一時的にふったIPアドレスが書かれている。
backup101の実アドレスに変更する。
(変更前)
198.51.100.100:/tftpboot/node_root  /  nfs  nolock,ro,soft,nfsvers=3,tcp,,defaults  0 0

(変更後)
192.0.2.1:/tftpboot/node_root  /  nfs  nolock,ro,soft,nfsvers=3,tcp,,defaults  0 0



◆ 経由するルータの設定
DHCPサーバの検索にはIPブロードキャストが使用される。
同一セグメントであれば問題ないが、今回のようにルータを経由する場合は
ルータの設定の見直しも必要である。
ルータは、ブロードキャストを転送しない。
ブロードキャストパケットを特定のサーバにユニキャストするためには
経由するルータにdhcpを通す設定を入れておかなければならない。

バックアップサーバのIPアドレス:192.0.2.1
バックアップ対象サーバのセグメント:Vlan-Interface1

・ciscoの例
ip helper-address 191.0.2.1

hp系ルータ系の例
dhcp enable
dhcp relay server-group 1 ip 191.0.2.1

interface Vlan-interface1
  dhcp select relay
  dhcp relay server-select 1



以上で準備は終わりである。
次回実際にバックアップとリストアを実施する。