クローニング(サーバの複製)#

本構成は従来リージョン向けとなります。
東日本/西日本リージョン3での代替方式は、クローニング(サーバの複製)[東日本/西日本リージョン3向け]をご覧ください

要求事項#

  • FJcloud-Oに配備した仮想サーバを、サーバ構築の効率化のために複製したい

対応するデザインパターン概要#

FJcloud-Oでは、配備済の仮想サーバからサーバ複製用の仮想サーバイメージを作成したり、仮想サーバイメージを管理することが可能です。
以下のOSを搭載する仮想サーバより、サーバ複製用のイメージを作成できます。

  • CentOS
  • Red Hat Enterprise Linux
  • Windows

構造(イメージ図)#

image

実装サンプル#

1. 事前作業#

イメージを作成する前に、以下の準備をしてください。

事前準備 内容
イメージ開発用仮想サーバ作成 必要なソフトのインストールとセットアップをしてください。
イメージ開発用仮想サーバのスナップショット取得 イメージ開発用仮想サーバを停止後、スナップショットを取得してください。
イメージ採取用仮想サーバ作成 スナップショットからイメージ採取用の仮想サーバを作成してください。

Note

イメージ採取用の仮想サーバは、この後の作業でサーバの設定が変わってしまうことから、上記の準備のようにイメージ開発用の仮想サーバと分けることを推奨します。

2. イメージ採取用の仮想サーバの設定#

イメージ採取用の仮想サーバに対して、仮想サーバのOSに応じて以下(1)または(2)の作業を実施してください。

(1) OS種別がLinuxのシステムストレージの場合#

スナップショットを採取する仮想サーバのOSが以下に該当する場合のみ、以下の(A)および(B)の作業を実施してください。
下記以外のOSは、該当するネットワーク設定が存在しないため対処不要です。

  • CentOS 6.x(xは数字)
  • Red Hat Enterprise Linux 6.x(xは数字)
(A) write_net_rules の無効化#

以下のファイルを開いてください。

/lib/udev/rules.d/75-persistent-net-generator.rules
上記ファイル内に記載されている以下の行を、コメントアウト(行頭に#を追加)してください。
DRIVERS=="?*", IMPORT{program}="write_net_rules"

(B) /etc/udev/rules.d/70-persistent-net.rulesの削除#

以下のファイルを削除してください。

rm -f /etc/udev/rules.d/70-persistent-net.rules

(2) OS種別がWindowsのシステムストレージの場合#

Windows OSのSysprep手順を実施してください。
Sysprepの詳細は機能説明書をご参照ください。

通常、Windows OSにてSysprepを実施すると、仮想サーバは「停止」状態(SHUTOFF)となります。

3. イメージの作成(API)#

  • イメージ採取用の仮想サーバを停止します。

  • APIでイメージを作成します。
    設定項目(REST API)で生成したAPIに、設定項目(json)を設定し、APIを実行してください。

  • 設定項目(REST API)

項目 設定値例 内容
$VOLUME_ID (生成されたID) イメージ作成の元とする仮想サーバにアタッチしているストレージID(IaaSポータルで確認可能)
  • 設定項目(json)
項目 設定値例 内容
$NAME "demo_vm04" 新規に作成する仮想サーバのイメージ名
$CONTAINER_FORMAT "bare" 作成するイメージのコンテナー形式(bareを指定する)
$DISK_FORMAT "raw" 作成するイメージのディスク形式(rawを指定する)
$FORCE "true" "true" の場合、ストレージが仮想サーバにアタッチしていてもイメージを作成する。
"false" の場合、ストレージが仮想サーバにアタッチしているとイメージを作成しない。
  • 実行API
    curl -X POST -i $BLOCKSTORAGE/v2/$PROJECT_ID/volumes/$VOLUME_ID/action -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"os-volume_upload_image": {"container_format":"'$CONTAINER_FORMAT'","disk_format":"'$DISK_FORMAT'","image_name":"'$NAME'","force":'$FORCE'}}'
    

4. イメージの作成確認(API)#

  • APIでイメージの作成状況を確認します。
    VOLUME_ID で指定したストレージの項目 "status" が "in-use" になれば、作成完了です。

  • 設定項目(REST API)

項目 設定値例 内容
$VOLUME_ID (生成されたID) イメージ作成の元とする仮想サーバにアタッチしているストレージID(IaaSポータルで確認可能)
  • 実行API
    curl -X GET -s $BLOCKSTORAGE/v2/$PROJECT_ID/volumes/$VOLUME_ID -H "X-Auth-Token:$OS_AUTH_TOKEN" -H "Content-Type:application/json" | jq .
    

5. イメージから仮想サーバを作成(IaaSポータル)#

メリット・効果#

本パターンを利用して、仮想サーバのイメージを作成した場合のメリット・効果は以下の通りです。

  • 同じ構成のマシンを効率的に複製可能

注意事項#

  • 本パターンは2015年11月時点のFJcloud-O 従来リージョンで動作検証しています。
  • 仮想サーバイメージを作成する際は、配備されている仮想サーバをあらかじめ停止してください。