2011 年 11 月
Duncan Hardie 著
この記事は、Oracle Solaris Zonesの構成とOracle Solaris 11 の管理に関連した基本的な操作に精通するための情報を提供します。
|
Oracle Solaris 10 では、特定のアプリケーションに適した独立した環境を作成するために、すべてを Oracle Solaris の同じインスタンス上に作成することができる機能をOracle Solaris Zonesテクノロジーによって提供します。複数のシステム上の複数のアプリケーションをホストするために、複数の OS を実行して管理するのではなく、1 つの OS のみを実行、管理し、各アプリケーションをゾーン内に配置します。したがって、複数の OS の管理に時間と資源を費やすことなく、複数のゾーンの管理を実行するだけで済みます。さらに簡単です。
Oracle Solaris 11 は Oracle Solaris Zonesテクノロジーを核とし、Oracle Solaris 11 の主機能とともに Oracle Solaris Zonesを統合しています。たとえば、新しいソフトウェア管理アーキテクチャとの緊密な統合によって、Oracle Solaris 11 と Oracle Solaris Zonesの配備を容易にしています。
Oracle Solaris Zonesは、同じ OS 上で 1 つのアプリケーションをほかのアプリケーションから分離させる機能があるため、ユーザーがログインして Oracle Solaris Zones内で自由に作業することができ、そのゾーンの外には何も影響しない分離した環境を作成することができます。さらに、Oracle Solaris Zonesは外部からの攻撃や内部の悪意あるプログラムに対してセキュリティ強化されています。各 Oracle Solaris Zonesには、CPU、メモリ、ネットワーク、ストレージといった資源を割り当てることのできる、完全なリソース制御環境が含まれています。
システム管理者の場合、すべての Oracle Solaris Zonesを自分で厳重に管理するか、特定の Oracle Solaris Zonesの管理をほかの管理者に任せるか選ぶことができます。コンピュータ環境全体を特定のアプリケーションのニーズに合わせて調整できるこうした柔軟な対応が、すべて同じ OS 内で可能になります。
この手引きでは、3 つの Oracle Solaris Zonesをセットアップします。1 つは開発者向けのテスト環境のホスト (testzone)、そのほかの 2 つは Web 向け (webzone-1 と webzone-2) のアプリケーション用で、すべて並列に単一のシステム上に設定します。
各ゾーンで、ゾーンを使い始めるための簡単な機能について紹介します:
テストゾーンは、Oracle Solaris Zonesテクノロジーの分離機能を使用します。ゾーンをすばやく作成して開発グループに提供することができます。システムのほかの場所から分離された環境で、その開発グループの管理者は独立でシステムを管理することができ、テストエンジニアは必要なパッケージを自由にインストールすることが可能です。また、すべてのシステム資源を仮想化テクノロジーのためでなくアプリケーションに使用できるように、Oracle Solaris 11 の IPS (Image Package System) がいかに Oracle Solaris Zonesを動作させるかについても見ていきます。
最初の Web ゾーン webzone-1 は、オンラインの POS (Point of Sales) Web サーバーを実行する Web 環境をインストールするために使用されます。ここでは、サービスのレベルを保証するために適切な資源を割り当てながら、トランザクションが完了することを確実にできます。Oracle Solaris Zonesテクノロジーは CPU やメモリだけでなく、ネットワーク帯域幅やストレージへのアクセスといった制御も可能にしてくれます。これは、ネットワーク仮想化や ZFS ベースのストレージなど、Oracle Solaris 11 のそのほかのコア機能が緊密に統合されていることによって可能になります。
2 つめの Web ゾーン webzone-2 は、POS 環境内の要求に応答する形で作成されます。追加の Web サーバーは、増加するトラフィックを処理するために、できるだけ早く用意する必要があります。これを実現するために Oracle Solaris Zonesで利用可能な複製機能を使います。複製は、ゴールデンマスター (あるいはテンプレート) が作成され、オリジナルをもとに新しい環境にロールアウトする際にこの分野ではよく使われるテクニックです。Oracle Solaris Zonesテクノロジーを使用すると驚くべき速さでこの機能が実行され、また、これによりディスク領域も大幅に節約できます。複製のプロセスによって、複数の複写環境を、オンデマンドですばやく簡単にロールアウトできるため、クラウド環境で大いに役立ちます。
この記事で説明する手順に沿って進めていくと、図 1 に示すような 3 つのゾーン環境が構成されます。各ゾーンは /zones ZFS データセット上に配置されたファイルシステムを持ち、物理データリンク (ネットワークポート e1000g0) を介して排他的なネットワークに接続されます。Web ゾーンには Apache Web サーバーアプリケーションも含まれます。
図 1.ファイルシステムを /zones 上に持つネットワークポートにアクセスする 3 つのゾーン
注:「グローバルゾーン (global zone)」 はシステムのデフォルトゾーンを表わします。システム全体の管理制御のためにも使用されます。
ゾーン作成に関する作業を理解したところで、実際に目標を達成するための手順を説明します。
図 2 に、使用する設定を一覧します。
図 2.3 つのゾーンとそれぞれの詳細な構成
この記事は、Oracle Solaris Zonesのインスタンスをすばやく動作させ、実行させるために必要となるタスクに注目しています。Oracle Solaris Zonesを作成するためのすべての手順に関する詳細な説明、属性の構成方法などは、「Oracle Solaris Administration: Oracle Solaris Zones, Oracle Solaris 10 Zones, and Resource Management」を参照してください。
ZFS ファイルシステムとネットワークの状態を確認します:
root@global:~# zfs list | grep zones root@global:~# dladm show-link LINK CLASS MTU STATE OVER e1000g0 phys 1500 up -- e1000g1 phys 1500 unknown --
ここでは、ゾーンに関連付けられた ZFS データセットも仮想 NIC デバイスも存在しないことに注意してください。
リスト 1 に示すように、コマンド行を使ってシンプルなテストゾーンを作成するところから始めます。
リスト 1: ゾーンを作成するroot@global:~# zonecfg -z testzone testzone: No such zone configured Use 'create' to begin configuring a new zone. zonecfg:testzone> create create: Using system default template 'SYSdefault' zonecfg:testzone> set zonepath=/zones/testzone zonecfg:testzone> set autoboot=true zonecfg:testzone> set bootargs="-m verbose" zonecfg:testzone> verify zonecfg:testzone> commit zonecfg:testzone> exit
この段階で構成エラーが出るようであれば、「Oracle Solaris Administration: Oracle Solaris Zones, Oracle Solaris 10 Zones, and Resource Management」を参照してください。
ヒント: zonepathにゾーン名が含まれている場合、ゾーンファイルの追跡は非常に簡単です。
この例の場合、ゾーンに testzone と名前を付け、場所はゾーンがインストールされる /zones/testzone を選びました。また、ブート後ゾーンは冗長モードで自動的に起動します。このように設定することで、システムの再起動後に手動でゾーンを開始する必要がなくなり、すべてのサービスが開始されます。
デフォルトですべての Oracle Solaris Zonesは、ネットワークデバイスを自動的に提供する anet と呼ばれる自動VNIC を持つように構成されています (このネットワークデバイス構成の詳細については後述します)。ゾーンがブートされた時に自動的に作成され、シャットダウン時に自動的に破棄されるため、ネットワークデバイスはまだ認識されていません。これは、dladm コマンドで確認することができます:
root@global:~# dladm show-link LINK CLASS MTU STATE OVER e1000g0 phys 1500 up -- e1000g1 phys 1500 unknown --
zoneadm コマンドを使用してゾーンが構成された状態であることを確認できます:
root@global:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - testzone configured /zones/testzone solaris excl
ゾーンが構成されたため、リスト 2 に示すようにインストールを実行します。
Oracle Solaris 11 の Oracle Solaris Zonesは IPS 機能を使って作成されると理解していることは重要です。IPS リポジトリにアクセスが可能なことを確認してください。この例では、 IPS リポジトリへのネットワークアクセスが可能です。IPS に関する詳細については、「Introducing the Basics of Image Packaging System (IPS) on Oracle Solaris 11」を参照してください。
リスト 2: ゾーンをインストールするroot@global:~# zoneadm -z testzone install A ZFS file system has been created for this zone. Progress being logged to /var/log/zones/zoneadm.20111016T114436Z.testzone.install Image: Preparing at /zones/testzone/root. Install Log: /system/volatile/install.6677/install_log AI Manifest: /tmp/manifest.xml.zVaybn SC Profile: /usr/share/auto_install/sc_profiles/enable_sci.xml Zonename: testzone Installation: Starting ... Creating IPS image Installing packages from: solaris origin: http://pkg.oracle.com/solaris/release/ DOWNLOAD PKGS FILES XFER (MB) Completed 167/167 32062/32062 175.8/175.8 PHASE ACTIONS Install Phase 44311/44311 PHASE ITEMS Package State Update Phase 167/167 Image State Update Phase 2/2 Installation: Succeeded Note: Man pages can be obtained by installing pkg:/system/manual done. Done: Installation completed in 110.519 seconds. Next Steps: Boot the zone, then log into the zone console (zlogin -C) to complete the configuration process. Log saved in non-global zone as /zones/testzone/root/var/log/zones/zoneadm.20111016T114436Z.testzone.install
ゾーンは 110 秒でインストールされました。ほかの仮想化技術と比較してもこれは非常に速く、Oracle Solaris Zonesが軽量であるという本質を表しています。
zoneadm コマンドを使用してゾーンの状態を確認することができます:
root@global:~# zoneadm list -iv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - testzone installed /zones/testzone solaris excl
The zonepath must live on a ZFS data set, and it is created automatically when the zone is installed. You can check that by using the zfs
command, as shown in Listing 3.
root@global:~# zfs list | grep zones rpool/zones 368M 844G 32K /zones rpool/zones/testzone 368M 844G 32K /zones/testzone rpool/zones/testzone/rpool 368M 844G 31K /rpool rpool/zones/testzone/rpool/ROOT 368M 844G 31K legacy rpool/zones/testzone/rpool/ROOT/solaris 367M 844G 310M /zones/testzone/root rpool/zones/testzone/rpool/ROOT/solaris/var 57.3M 844G 56.4M /zones/testzone/root/var rpool/zones/testzone/rpool/export 62K 844G 31K /export rpool/zones/testzone/rpool/export/home 31K 844G 31K /export/home
/zones と /zones/testzone データセットが自動的に作成されたことがわかります。ZFS データセット上にOracle Solaris Zonesを持つことで、複製やスナップショットといった機能が有効になり、Oracle Solaris Zonesは ZFS のすべての機能が使えるようになります。
注: testzone のサイズはわずか 368 MB です。Oracle Solaris Zonesは最小限の設置面積を持ち、仮想化技術として Oracle Solaris Zonesがいかに軽量であるかを表しています。
最後の手順は testzone を起動させ実行させるために、ブートしてシステム構成を設定します。
次のコマンドを実行してゾーンをブートし、コンソールにアクセスします:
root@global:~# zoneadm -z testzone boot; zlogin -C testzone
注: zlogin に -C オプションを使用すると、ゾーンコンソールにアクセスできるようになります。コンソールからゾーンに入り、ゾーン内で作業することが可能です。
システム構成ファイルがないため、図 3 に示すようにシステム構成ツールが起動します。
図 3.システム構成ツール
コンピュータ名として testzone と入力します。図 4 に示すように、ネットワーク名を手動で構成するために「Manually (手動)」をハイライトします。F2 を押して続行します。
注: この例では「Automatically (自動)」を選択しませんでしたが、自動を選択するとネットワーク情報を入力する必要はなく、すべて自動的に構成されます。
図 4.手動構成を選択する
図 5 のように、ご使用のネットワークに適したネットワーク設定を入力し、F2 を押して続行します。
図 5.ネットワーク設定を入力する
ここでは DNS の構成は行いませんので (図 6 参照)、F2 を押します。
図 6.「Do not configure DNS (DNS の構成をしない)」を選択する
ここではネームサービスの設定も行いませんので、F2 を押します。
図 7.「None (ネームサービスの設定をしない)」を選択する
図 8 に示すように、該当するタイムゾーンの地域を選択し、F2 を押します。
図 8.タイムゾーンの地域を選択する
図 9 のように、該当する国名を選択して F2 を押します。
図 9.国名を選択する
図 10 のように、該当するタイムゾーンを選択して F2 を押します。
図 10.タイムゾーンを選択する
図 11 のように、ルートパスワード、氏名、ユーザー名、ユーザーパスワードを入力して構成を完了します。完了したら F2 を押します。
図 11.構成を完了する
選択した構成が正しいことを確認できたら、F2 を押して設定を適用します。
図 12.構成を確認する
ゾーンはブートし、間もなくリスト 4 に示すようなコンソールログインが表示されます。
リスト 4: ゾーンブートプロセスからの出力[ system/system-log:default starting (system log) ] [ system/auditd:default starting (Solaris audit daemon) ] [ network/smtp:sendmail starting (sendmail SMTP mail transfer agent) ] [ network/sendmail-client:default starting (sendmail SMTP client queue runner) ] Oct 16 13:13:15 testzone sendmail[8911]: My unqualified host name (testzone) unknown; sleeping for retry Oct 16 13:13:15 testzone sendmail[8913]: My unqualified host name (testzone) unknown; sleeping for retry [ system/console-login:default starting (Console login) ] testzone console login:
これでゾーンにログインする準備が整いました。この例では、エスケープシーケンス「~.」を使用してコンソールを終了します。
ゾーンがブートして稼働中かどうかは、zoneadm コマンドで確認することができます:
root@global:~# zoneadm list -v ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 2 testzone running /zones/testzone solaris excl
前述のとおり、ゾーンがブートした際に VNIC が自動的に作成されました。dladm コマンドを使用して確認することができます:
root@global:~# dladm show-link LINK CLASS MTU STATE OVER e1000g0 phys 1500 up -- e1000g1 phys 1500 unknown -- testzone/net0 vnic 1500 up e1000g0
VNIC は testzone/net0 として表示されていることがわかります。
最後の手順は、作成したゾーンにログインして内容を確認することです。リスト 5 に示すように、zlogin コマンドをグローバルゾーンから実行します。
リスト 5: 作成したゾーンにログインするroot@global:~# zlogin testzone [Connected to zone 'testzone' pts/3] Oracle Corporation SunOS 5.11 11.0 November 2011 root@testzone:~# uname -a SunOS testzone 5.11 11.0 i86pc i386 i86pc root@testzone:~# ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 net0/v4 static ok 10.134.79.241/24 lo0/v6 static ok ::1/128 net0/v6 addrconf ok fe80::8:20ff:fe6f:9645/10 root@testzone:~# dladm show-link LINK CLASS MTU STATE OVER net0 vnic 1500 up ? root@testzone:~# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 400M 843G 31K /rpool rpool/ROOT 400M 843G 31K legacy rpool/ROOT/solaris 400M 843G 341M / rpool/ROOT/solaris/var 58.1M 843G 57.1M /var rpool/export 96.5K 843G 32K /export rpool/export/home 64.5K 843G 32K /export/home rpool/export/home/fred 32.5K 843G 32.5K /export/home/fred root@testzone:~# exit logout [Connection to zone 'testzone' pts/3 closed]
注: zlogin コマンドに -C オプションを付けませんでした。これは、ゾーンへのアクセスにコンソールを使用しないことを意味しています。こうすることで、ゾーンから出る際に単にシェルを終了すれば良いだけになります。
実行結果を確認しておきましょう:
注: testzone からグローバルゾーンの情報を見ることはできません。自分のいるゾーンの属性だけを見ることができます。
testzone が稼働中であることが確認できました。これで、ユーザーログインとパスワードを開発チームの管理者に渡すことができます。開発チームの管理者は、あたかも単一のシステム上で作業しているかのように、チーム用にゾーンの設定を完了することができます。
新しい Oracle Solaris 11 では、Oracle Solaris Zonesはデフォルトで排他的な IP ネットワークリソースとともに自動的に作成されるようになりました。これは、Oracle Solaris Zonesが完全なネットワークスタックにアクセス可能であることを意味し、ゾーン管理者は IP アドレスやルーティング情報などを独自に設定することが許されます。
zonecfg を使用してデフォルトテンプレートで testzone を作成すると (手順 1: Oracle Solaris Zonesの構成の内容)、anet と呼ばれるネットワークリソースが以下のプロパティとともに自動的にゾーン構成に含まれました:
linkname
is net0
lower-link
is auto
mac-address
is random
link-protection
is mac-nospoof
リスト 6 に示すように、zonecfg コマンドを使用するとこの情報を確認することができます。
リスト 6: ネットワークリソースのプロパティを表示するroot@global:~# zonecfg -z testzone info zonename: testzone zonepath: /zones/testzone brand: solaris autoboot: true bootargs: -m verbose file-mac-profile: pool: limitpriv: scheduling-class: ip-type: exclusive hostid: fs-allowed: anet: linkname: net0 lower-link: auto allowed-address not specified configure-allowed-address: true defrouter not specified allowed-dhcp-cids not specified link-protection: mac-nospoof mac-address: random mac-prefix not specified mac-slot not specified vlan-id not specified priority not specified rxrings not specified txrings not specified mtu not specified maxbw not specified rxfanout not specified
anet ネットワークデバイスは自動的に構成されたことがわかります。すでに述べたとおり、このリソースはゾーンがブートしたときに作成され、シャットダウンしたときに自動的に破棄されます。以下のとおり確認することができます。
最初にグローバルゾーンの IP アドレスを確認します:
root@global:~# ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 e1000g0/_a static ok 10.134.79.168/24 lo0/v6 static ok ::1/128
dladm を使用してデータリンクの状態を参照します:
root@global:~# dladm show-link LINK CLASS MTU STATE OVER e1000g0 phys 1500 up -- e1000g1 phys 1500 unknown -- testzone/net0 vnic 1500 up e1000g0
VNIC が e1000g0 (testzone/net0) に接続され、自動的に testzone に作成されたことに注意してください。
testzone にログインしてリンクの状態と IP アドレスを確認し、リスト 7 に示すようにグローバルゾーンに ping を実行します。
root@testzone:~# zlogin testzone root@testzone:~# dladm show-link LINK CLASS MTU STATE OVER net0 vnic 1500 up ? root@testzone:~# ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 net0/v4 static ok 10.134.79.241/24 lo0/v6 static ok ::1/128 net0/v6 addrconf ok fe80::8:20ff:fec4:32bb/10 root@testzone:~# ping 10.134.79.168 10.134.79.168 is alive root@testzone:~# exit logout [Connection to zone 'testzone' pts/3 closed]
Web 向けのアプリケーション用に 2 つ目のゾーン webzone-1 を作成してアプリケーションを追加します。
再度 zonecfg を使って webzone-1 の作成を開始します。ただし今回は、ゾーンのセットアップがいかに簡単にすばやくできるかを示すために、必要最小限の情報としてzonepathを入力します:
root@global:~# zonecfg -z webzone-1 "create ; set zonepath=/zones/webzone-1"
リスト 8 に示すように、zonecfg コマンドを使用してゾーン構成を確認することができます。
リスト 8: 新しいゾーンの構成を確認するroot@global:~# zonecfg -z webzone-1 info zonename: webzone-1 zonepath: /zones/webzone-1 brand: solaris autoboot: false bootargs: file-mac-profile: pool: limitpriv: scheduling-class: ip-type: exclusive hostid: fs-allowed: anet: linkname: net0 lower-link: auto allowed-address not specified configure-allowed-address: true defrouter not specified allowed-dhcp-cids not specified link-protection: mac-nospoof mac-address: random mac-prefix not specified mac-slot not specified vlan-id not specified priority not specified rxrings not specified txrings not specified mtu not specified maxbw not specified rxfanout not specified
これで終了です。少なくとも構成に関しては完了しました。
次に、ゾーンをインストールします。リスト9 に示します。
リスト 9: ゾーンをインストールするroot@global:~# zoneadm -z webzone-1 install A ZFS file system has been created for this zone. Progress being logged to /var/log/zones/zoneadm.20111016T143052Z.webzone-1.install Image: Preparing at /zones/webzone-1/root. Install Log: /system/volatile/install.10393/install_log AI Manifest: /tmp/manifest.xml.Iza4ru SC Profile: /usr/share/auto_install/sc_profiles/enable_sci.xml Zonename: webzone-1 Installation: Starting ... Creating IPS image Installing packages from: solaris origin: http://pkg.oracle.com/solaris/release/ DOWNLOAD PKGS FILES XFER (MB) Completed 167/167 32062/32062 175.8/175.8 PHASE ACTIONS Install Phase 44311/44311 PHASE ITEMS Package State Update Phase 167/167 Image State Update Phase 2/2 Installation: Succeeded Note: Man pages can be obtained by installing pkg:/system/manual done. Done: Installation completed in 108.257 seconds. Next Steps: Boot the zone, then log into the zone console (zlogin -C) to complete the configuration process. Log saved in non-global zone as /zones/webzone-1/root/var/log/zones/zoneadm.20111016T143052Z.webzone-1.install
webzone-1 をブートしてコンソールにログインし、IP アドレスは除いて、testzone で設定した内容と同じ情報を入力します。 IP アドレスは 10.134.79.242 に設定します。
root@global:~# zoneadm -z webzone-1 boot; zlogin -C webzone-1
手順を確認したい場合は、前述の手順 3: システム構成のブートと完了に戻ってください。最後に「~.」エスケープシーケンスを入力してコンソールを終了することを忘れないでください。
これでネットワークに接続された実行可能なゾーンの準備が整いましたので、アプリケーションを追加できます。このゾーンは Web コンテンツサーバーとしての役割があるため、Apache Web サーバーを追加します。
グローバルゾーンから、webzone-1 にログインし、Apache Web サーバーパッケージの状態を確認します:
root@global:~# zlogin webzone-1 [Connected to zone 'webzone-1' pts/3] Oracle Corporation SunOS 5.11 11.0 November 2011 root@webzone-1:~# pkg info /web/server/apache-22 pkg: info: no packages matching the following patterns you specified are installed on the system. Try specifying -r to query remotely: /web/server/apache-22
パッケージはインストールされていません。リスト 10 に示すように、IPS リポジトリに対して -r オプションを使用してリモートでクエリーを実行し、再度確認します。
リスト 10: Apache Web サーバーパッケージを確認するroot@webzone-1:~# pkg info -r /web/server/apache-22 Name: web/server/apache-22 Summary: Apache Web Server V2.2 Description: The Apache HTTP Server Version 2.2 Category: Web Services/Application and Web Servers State: Not installed Publisher: solaris Version: 2.2.20 Build Release: 5.11 Branch: 0.175.0.0.0.1.530 Packaging Date: Wed Oct 12 14:13:31 2011 Size: 9.24 MB FMRI: pkg://solaris/web/server/apache-22@2.2.20,5.11-0.175.0.0.0.1.530:20111012T141331Z
状態は Not installed であることが確認できましたので、Apache Web サーバーをゾーンにインストールします。リスト 11 に示します。
リスト 11: Apache Web サーバーパッケージをインストールするroot@webzone-1:~# pkg install /web/server/apache-22 Packages to install: 3 Create boot environment: No Create backup boot environment: No Services to change: 1 DOWNLOAD PKGS FILES XFER (MB) Completed 3/3 636/636 4.2/4.2 PHASE ACTIONS Install Phase 800/800 PHASE ITEMS Package State Update Phase 3/3 Image State Update Phase 2/2
IPS が必要となるすべての関連ファイルをダウンロードしていることがわかります。依存関係について考える必要はありません。この例では 3 つのパッケージがインストールされています。Apache Web サーバーの状態は pkg info コマンドを使って再度確認することができます。リスト 12 に示します。
リスト 12: Apache Web サーバーの状態を再度確認するroot@webzone-1:~# pkg info /web/server/apache-22 Name: web/server/apache-22 Summary: Apache Web Server V2.2 Description: The Apache HTTP Server Version 2.2 Category: Web Services/Application and Web Servers State: Installed Publisher: solaris Version: 2.2.20 Build Release: 5.11 Branch: 0.175.0.0.0.1.530 Packaging Date: Wed Oct 12 14:13:31 2011 Size: 9.24 MB FMRI: pkg://solaris/web/server/apache-22@2.2.20,5.11-0.175.0.0.0.1.530:20111012T141331Z
今回は状態が Installed として表示されています。おめでとうございます。ゾーンに最初のパッケージが追加されました。
最後のゾーン webzone-2 を作成します。これまでにゾーンを作成した際の手順をそのまま繰り返すことも可能ですが、今回は単純に webzone-1 のようなWeb サーバー環境をもう 1 つ作成しようとしています。再度同じ構成プロセスを実行するのではなく、webzone-1 の複製を作成してみましょう。ゾーン作成のグローバルマスターとして webzone-1 を活用します。
複製したゾーンのシステムプロパティを手動で構成をしなくても済むように、webzone-2 用のシステム ID テンプレートを作成します。webzone-1 内で sysconfig ツールを実行することで作成することができます:
root@global:~# zlogin webzone-1 root@webzone-1:~# sysconfig create-profile -o /root/webzone-2-template.xml
注: sysconfig ツールを使用してプロファイルを作成する場合、出力するファイル名には必ず.xml 拡張子を付けるようにしてください。
画面の指示にしたがって webzone-2 用の正確な情報を入力します (この場合 IP アドレスには 10.134.79.243 を入力することを忘れないでください)。 手順3: システム構成のブートと完了の項で説明したように、構成が完了すると構成ファイルが作成されます。最後にログアウトしてグローバルゾーンに戻ります。
システム構成ツールを終了します。ログは次の場所にあります:
Exiting System Configuration Tool. Log is available at: /var/tmp/install/sysconfig.log root@webzone-1:~# ls webzone-2-template.xml root@webzone-1:~# exit logout [Connection to zone 'webzone-1' pts/2 closed]
注: sysconfig ツールを使用する場合は、ユーザーアカウントの項目に既存のユーザー名を使用することはできません。この例では、fred というユーザー名が使用できなかったため jack を代わりに使用しました。
このファイルは、以降の手順でより使いやすい場所へ移動します。
システム上のグローバルゾーンから、 まず複製を作成するゾーンである webzone-1 を停止する必要があります。 稼働中のゾーンの複製はしないでください。リスト 13 に示すように zoneadm list を実行してゾーンがシャットダウンしていることを確認します。
リスト 13: ゾーンがシャットダウンしていることを確認するroot@global:~# zoneadm list -iv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 2 testzone running /zones/testzone solaris excl 3 webzone-1 running /zones/webzone-1 solaris excl root@global:~# zoneadm -z webzone-1 shutdown root@global:~# zoneadm list -iv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 2 testzone running /zones/testzone solaris excl - webzone-1 installed /zones/webzone-1 solaris excl
ここで、ゾーンの構成を取得して、ほかのゾーン (この場合 webzone-2) を作成するためのマスタープロファイルテンプレートとして使用します:
root@global:~# zonecfg -z webzone-1 export -f /zones/webzone-2-profile
使い慣れたエディタを使用して、リスト 14 に示す内容のファイルを作成します。(zonepathは常に更新する必要がありますが、autoboot による更新も選択しています。)
リスト 14: テンプレートの編集root@global:~# cat /zones/webzone-2-profile create -b set zonepath=/zones/webzone-2 set brand=solaris set autoboot=true set ip-type=exclusive add anet set linkname=net0 set lower-link=auto set configure-allowed-address=false set link-protection=mac-nospoof set mac-address=random set auto-mac-address=2:8:20:f1:e4:b7 end
ここで、すでに作成したシステム構成ファイル (webzone-2-template.xml) をより使いやすい場所に配置します。幸いゾーンのファイルシステムはシャットダウン中にもアクセス可能です:
root@global:~# pwd /root root@global:~# cp /zones/webzone-1/root/root/webzone-2-template.xml /zones root@global:~# ls /zones/webzone-2-template.xml /zones/webzone-2-template.xml
次に、修正された構成を使用してwebzone-2 を作成し (zonecfg を使用します)、さらに webzone-1 の複製を実行します (zoneadm を使用します)。システム構成テンプレートには絶対パスを指定することを忘れないでください。このように複製はすばやく完了します。time コマンドを zonecfg clone コマンドの前に付けることで時間を確認することが可能です。
root@global:~# zonecfg -z webzone-2 -f /zones/webzone-2-profile root@global:/zones# time zoneadm -z webzone-2 clone -c /zones/webzone-2-template.xml webzone-1 A ZFS file system has been created for this zone. Progress being logged to /var/log/zones/zoneadm.20111029T193536Z.webzone-2.clone Log saved in non-global zone as /zones/webzone-2/root/var/log/zones/zoneadm.20111029T193536Z.webzone-2.clone real 0m13.269s user 0m1.740s sys 0m2.716s
webzone-1 の複製には 13 秒しかかかっていないことがわかります。さらに、clone コマンドを使用しているため、ZFS スナップショットの利点も生かされます。 webzone-1 と webzone-2 で使用されるディスク容量をリスト15 で確認してみましょう。
リスト 15: ディスク容量を確認するroot@global:/zones# zfs list | grep webzone rpool/zones/webzone-1 470M 843G 33K /zones/webzone-1 rpool/zones/webzone-1/rpool 470M 843G 31K /rpool rpool/zones/webzone-1/rpool/ROOT 470M 843G 31K legacy rpool/zones/webzone-1/rpool/ROOT/solaris 470M 843G 366M /zones/webzone-1/root rpool/zones/webzone-1/rpool/ROOT/solaris/var 97.8M 843G 57.9M /zones/webzone-1/root/var rpool/zones/webzone-1/rpool/export 96.5K 843G 32K /export rpool/zones/webzone-1/rpool/export/home 64.5K 843G 32K /export/home rpool/zones/webzone-1/rpool/export/home/fred 32.5K 843G 32.5K /export/home/fred rpool/zones/webzone-2 350K 843G 34K /zones/webzone-2 rpool/zones/webzone-2/rpool 316K 843G 31K /rpool rpool/zones/webzone-2/rpool/ROOT 295K 843G 31K legacy rpool/zones/webzone-2/rpool/ROOT/solaris-0 294K 843G 366M /zones/webzone-2/root rpool/zones/webzone-2/rpool/ROOT/solaris-0/var 39K 843G 57.9M /zones/webzone-2/root/var rpool/zones/webzone-2/rpool/export 3K 843G 32K /export rpool/zones/webzone-2/rpool/export/home 2K 843G 32K /export/home rpool/zones/webzone-2/rpool/export/home/fred 1K 843G 32.5K /export/home/fred
Apache Web サーバーを追加した後でも webzone-1 は 470 MBです。さらに、 webzone-1 のコピーである webzone-2 はわずか 350 KB です。このようにディスク容量を大幅に節約することができます。
最後に、webzone-2 をブートし、コンソールを確認します。時折、システム構成が適用されていることがあります。以下のように、ホスト名がテンプレートを使って設定されていることを確認できます。
root@global:~# zoneadm -z webzone-2 boot; zlogin -C webzone-2 [Connected to zone 'webzone-2' console] Hostname: unknown Unconfiguration failed for svc:/system/config-user:default Hostname: webzone-2 webzone-2 console login: ~. [Connection to zone 'webzone-2' console closed]
コンソールを終了する際は忘れずに「~.」エスケープシーケンスを使用してください。
webzone-2 用の .xml テンプレートができました。このテンプレートは簡単にコピーして編集することができるため、ほかの Web ゾーン全体を同じようにすばやく配備することができます。
webzone-2 にログインして、Apache Web サーバーを見てみましょう。リスト 16 に示します。
root@global:~# zlogin webzone-2 [Connected to zone 'webzone-2' pts/3] Oracle Corporation SunOS 5.11 11.0 November 2011 root@webzone-2:~# pkg info /web/server/apache-22 Name: web/server/apache-22 Summary: Apache Web Server V2.2 Description: The Apache HTTP Server Version 2.2 Category: Web Services/Application and Web Servers State: Installed Publisher: solaris Version: 2.2.20 Build Release: 5.11 Branch: 0.175.0.0.0.1.530 Packaging Date: Wed Oct 12 14:13:31 2011 Size: 9.24 MB FMRI: pkg://solaris/web/server/apache-22@2.2.20,5.11-0.175.0.0.0.1.530:20111012T141331Zゾーンを最初から作成した時とは異なり、webzone-1 に追加した Apache Web サーバーパッケージがすでに配備されています。この複製の手法は、すべての追加パッケージと構成が正しく設定された状態で「マスター」ゾーンが作成されている場合によく使われる方法です。正しく設定されたマスターゾーンは、必要に応じて新しく、類似した環境として複製することができます。
root@webzone-2:~# ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 net0/v4 static duplicate 10.134.79.243/24 lo0/v6 static ok ::1/128 net0/v6 addrconf ok fe80::8:20ff:fe7a:7b0f/10
注: システムのインストールサービスの一部として、Oracle Solaris 自動インストーラでも既製のゾーンを作成する手法を提供しています。
この記事では、Oracle Solaris Zonesの作成、インストール、ブート、構成について見てきました。いかに ZFS データセットが自動的に作成され、ネットワークが自動的に設定されるかについても紹介しました。最後に、IPS を使用して Oracle Solaris Zonesにアプリケーションを追加し、ゾーンを複製する方法について解説しました。
そのほかの情報については以下を参照してください:
Revision 1.0, 11/03/2011 |