Duncan Hardie、Pavel Anni共著
このラボでは、Oracle Solarisを使用して多層アプリケーション環境をセットアップし、"Cloud in a box"(パッケージ化したクラウド)を効率よく構築することによって、非常に優れたクラウド環境を実現する方法について説明します。
2013年11月公開
|
クラウド環境には、優良なクラウドを構築するための鍵となるいくつの考慮事項と機能があります。これらは、次の5つの主要領域に分類されます。
Oracle Solarisによって非常に優れたクラウド環境を構築できることを示すために、このラボでは、多層アプリケーション環境のセットアップ方法について説明します。このラボでは、上記の各主要領域について説明しながらパッケージ化したクラウドを効率よく構築します。
最終的な環境は、Oracle Solaris Zoneに含まれるWordPressブログによって構成されます。このアプリケーション環境は、Webサーバーおよびデータベースによってサポートされます。
Oracle Solaris 11は、クラウドを中心として設計されており、Oracle Solaris 11の主要な機能がクラウドと統合されています。このラボでは、この点についても学習します。
このラボでは、以下のことが前提となっています。
Oracle VM VirtualBox環境に含まれるOracle Solaris 11インスタンスで作業を行います。Oracle Solaris 11インスタンスは、このラボに関するかぎり、ベアメタル・インストールとして扱うことができます。
ouser
Oracle123
solaris11
演習 | タイトル | 学習内容 |
---|---|---|
1 | システムの構成とネットワークのセットアップ |
|
2 | ストレージ・レイヤーの構成 |
|
3 | Webレイヤーの構成 |
|
4 | データベース・レイヤーの構成 |
|
5 | アプリケーション・レイヤーの構成 | WordPressブログ・アプリケーションを構成してインストールします。 |
6 | ゾーンの監視 | ps 、prstat 、およびzonestat を使用してシステム・アクティビティを監視します。 |
7 | リソース管理の実行 |
|
8 | 可用性の確保 |
|
9 | 環境の保護 | 不変ゾーンを作成してテストします。 |
このラボを終了すると、2つのゾーンの作成が完了します。一つは標準インストールから、もう一つはクローニングから作成されます。ネットワークの構成とそれらのゾーンへのアプリケーションの追加も完了し、ユーザー独自のブログを提供します。これにより、アプリケーション、ミドルウェア、およびデータベースの3層で構成される環境が実現されます。
ラボ終了時の構成は、図1のようになります。
図1:完成した環境のレイアウト
注:このラボでは、"大域ゾーン"という用語は、そのシステム用のデフォルトのゾーンを指します。このゾーンは、システム全体の管理制御にも使用されます。
以上で、これから行う作業を理解できたと思います。ここからは、演習において、目標を達成するための正確な手順を、コマンドラインの例を含め、順番に説明します。
このラボの全体を通じて、使用する設定の早見表として図2を参照してください。
図2:設定の早見表
ここでは、システムの設定を見ておきます。これにより、ラボでの作業の進行による相違を確認できます。
まず、システムの現在の構成を見てみましょう。
システムにログインします。
user: ouser password: Oracle123
Q:なぜ、root ではなくouser としてログインしたのですか。 |
A:Oracle Solaris 11では、root は、ユーザーではなく"ロール"と呼ばれるものになっているためです。 |
ターミナル・ウィンドウを開きます。ラボの残りの部分では、root
になるほうが便利なため、ここで、その操作を行いましょう。
ouser@solaris:~$ su - Password: solaris11 Oracle Corporation SunOS 5.11 11.1 September 2012 root@solaris:~#
最初に、ZFSファイル・システムの設定を確認しましょう。
root@solaris:~# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 15.3G 13.0G 4.90M /rpool rpool/ROOT 4.17G 13.0G 31K legacy rpool/ROOT/solaris 4.17G 13.0G 3.79G / rpool/ROOT/solaris/var 284M 13.0G 220M /var rpool/VARSHARE 54K 13.0G 54K /var/share rpool/dump 1.03G 13.1G 1.00G - rpool/export 5.19M 13.0G 32K /export rpool/export/home 5.16M 13.0G 32K /export/home rpool/export/home/ouser 5.13M 13.0G 5.13M /export/home/ouser rpool/repository 9.02G 13.0G 9.02G /repository rpool/swap 1.03G 13.1G 1.00G -
ファイル・システムの現在の状態をメモしておいてください。この情報は、後で必要になります。
次に、ネットワークを見てみましょう。Oracle Solaris 11には、頻繁に使用することになる新しいコマンドがあります。それは、ipadm
とdladm
です。
ipadm
を使用すると、リスト1のように、IPスタックが表示されます。このシステムのインタフェースとIPアドレスを確認しましょう。
root@solaris:~# ipadm show-if IFNAME CLASS STATE ACTIVE OVER lo0 loopback ok yes -- net0 ip ok yes -- root@solaris:~# ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 net0/v4 static ok 192.168.1.222/24 lo0/v6 static ok ::1/128
リスト1
リスト1で、このシステムにループバック・インタフェース(lo0
)とネットワーク・インタフェース(net0
)があることが示されていることに注意してください。これらのインタフェースの両方にIPv4アドレスが割り当てられています。また、net0
にIPv4アドレスが静的に割り当てられていることも分かります。
では、リスト2のように、dladm
コマンドを使用して、データリンク・レイヤーを確認しましょう。
root@solaris:~# dladm show-link LINK CLASS MTU STATE OVER net1 phys 1500 unknown -- net0 phys 1500 up -- root@solaris:~# dladm show-vnic root@solaris:~# dladm show-etherstub
リスト2
リスト2で、このシステムに2つの物理ネットワーク・インタフェースがあり、VNICやetherstub(これらについては後で説明します)がないことに注意してください。
Q:なぜnet1 はリスト1のipadm コマンドでは表示されなかったのでしょうか。 |
A:IPアドレスが割り当てられていなかったためです。 |
これで、ストレージ・レイヤーをセットアップする準備が整いました。
ZFSの作成と管理に必要なすべての手順について詳しくは、Oracle Solaris 11.1の管理:ZFSファイルシステムを参照してください。
ZFSファイル・システムのステータスを確認します。
root@solaris:~# zfs list | grep zones root@solaris:~# zfs list | grep mydata
注:いずれかのゾーンに関連付けられているZFSデータセットや、mydata
用のZFSデータセットは存在しません。
ZFSデータセットをすべてのゾーンrootディレクトリに格納します。このデータセットは、rootプールで作成され、/zones
にマウントされます。では、この作業を行いましょう。
root@solaris:~# zfs create -o mountpoint=/zones rpool/zones
ここで、作成されたものを確認しましょう。
root@solaris:~# zfs list rpool/zones NAME USED AVAIL REFER MOUNTPOINT rpool/zones 31K 13.0G 31K /zones root@solaris:~# ls /zones
実際にはこの手順を実行する必要はありません。この手順は、ゾーンを作成すると実行されます。しかし、ここでは、データセットの作成とそのマウント・ポイントの指定が非常に容易であることを確認するために行いました。
MySQLデータ・ファイルを格納する個別のファイル・システムも作成します。これは、後で、データベース・ゾーンに割り当てられます。これにより、データベース・ゾーン管理者が、このデータセットを個別に管理して、たとえば、その圧縮および重複排除パラメータを変更したり、スナップショットを作成したりすることが可能になります。
root@solaris:~# zfs create rpool/mydata root@solaris:~# zfs list rpool/mydata NAME USED AVAIL REFER MOUNTPOINT rpool/mydata 31K 13.0G 31K /rpool/mydata
ここでは、Webレイヤーを作成します。これには、ネットワークのセットアップ、ゾーンの作成とインストール、アプリケーションのゾーンへの追加が含まれます。ネットワークの構成から始めましょう。
現在使用中のOracle Solarisインスタンスは、2つの内部ネットワークによって構成されています。これらのネットワークとそのIPアドレスは、dladm
およびipadm
コマンドを使用して確認できます(演習1のリスト1およびリスト2で行った作業と同様)。
root@solaris:~# dladm show-link LINK CLASS MTU STATE OVER net1 phys 1500 unknown -- net0 phys 1500 up -- root@solaris:~# ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 net0/v4 static ok 192.168.1.222/24 lo0/v6 static ok ::1/128
次に、webzone
とdbzone
が相互に通信できるようにするために内部ネットワークを作成します。これを行うには、etherstubを使用します。このetherstubは、各ゾーン専用のVNICを使用して(それらのVNICの作成後に)接続されます。
Q:etherstubとは何ですか。 |
A:etherstubは、システム管理者によって管理される疑似イーサネットNICです。物理リンクを経由するのではなくetherstubを経由するVNICを作成できます。etherstubを経由するVNICは、システムの物理NICに依存しないものになります。etherstubを使用することにより、システム内の他の仮想ネットワークからも外部ネットワークからも分離されたプライベート仮想ネットワークを構築できます。簡単に言うと、etherstubは、内部ネットワーク・スイッチと考えることができます。 |
では、etherstubを作成しましょう。
root@solaris:~# dladm create-etherstub vswitch0 root@solaris:~# dladm show-etherstub LINK vswitch0
ここで、最初のVNICを作成します。これは、vswitch0
に関連付けます。
root@solaris:~# dladm create-vnic -l vswitch0 webint0 root@solaris:~# dladm show-vnic LINK OVER SPEED MACADDRESS MACADDRTYPE VID webint0 vswitch0 40000 2:8:20:de:f4:40 random 0
webzone
の構成webzone
を構成してインストールする必要があります。また、その後に、ネットワークをセットアップし、このゾーンにアプリケーションを追加する必要があります。
まず、作成するゾーンの構成情報を入力しましょう。デフォルトでは、作成するゾーンに関して指定する必要があるのは、ゾーン名とゾーンパスだけです(ゾーンパスは、ゾーンrootが配置される場所です。この情報を保持するZFSデータセットのrpool/zones
を作成したことを思い出してください)。ただし、今回は、VNICのwebint0
にも追加する機会があります。
root@solaris:~# zonecfg -z webzone Use 'create' to begin configuring a new zone. zonecfg:webzone> create create: Using system default template 'SYSdefault' zonecfg:webzone> set zonepath=/zones/webzone zonecfg:webzone> add net zonecfg:webzone:net> set physical=webint0 zonecfg:webzone:net> end zonecfg:webzone> verify zonecfg:webzone> commit zonecfg:webzone> exit
Q:verify とcommit は、どのようなコマンドですか。 |
A:zonecfg のこれらのコマンドは、情報が正しいことを確認して、その構成をコミットします。ゾーン構成情報を編集する際は、これらのコマンドを使用することを推奨します。 |
webzone
のインストールwebzone
の構成は完了しましたが、まだインストールされていません。この時点でインストールすることもできますが、ここでインストールした場合は、最初の起動後にそのゾーンにログインして、ホスト名、タイムゾーン、rootパスワードなどのシステム・プロファイルを作成する必要があります。これを実現する別の方法として、インストール前にプロファイルを作成することができます。これにより、最初の起動後にすぐにゾーンを使用できるようになります。また、この方法により、その後のゾーン作成も自動化できます。
root@solaris:~# sysconfig create-profile -o /root/webzone-profile.xml
表示されるダイアログ・ボックスに、以下のパラメータを入力します。
コンピュータ名:webzone
ネットワーク接続:None
(後でゾーン内からネットワークを構成します)
タイムゾーン:該当するタイムゾーンを選択(ヒント:国を選択する際は、たとえばUnited StatesのUといったように、最初の文字を入力します)
rootパスワード:solaris11
ユーザーの実際の名前:Zone User
ユーザーID:zuser
ユーザー・パスワード:oracle1
これら以外はデフォルトのままにして、[F2]キーまたは[ESC]+[2]キーを押して続行します。
ここで、ゾーンをインストールしましょう(完了するまでに数分かかります)。
root@solaris:~# zoneadm -z webzone install -c /root/webzone-profile.xml Progress being logged to /var/log/zones/zoneadm.20130812T145306Z.webzone.install Image: Preparing at /zones/webzone/root. AI Manifest: /tmp/manifest.xml.ZnaOeg SC Profile: /root/webzone-profile.xml Zonename: webzone Installation: Starting ... Creating IPS image Startup linked: 1/1 done Installing packages from: solaris origin: http://192.168.1.222/ DOWNLOAD PKGS FILES XFER (MB) SPEED Completed 183/183 33556/33556 222.2/222.2 328k/s PHASE ITEMS Installing new actions 46825/46825 Updating package state database Done Updating image state Done Creating fast lookup database Done Installation: Succeeded Note: Man pages can be obtained by installing pkg:/system/manual done. Done: Installation completed in 1096.528 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/root/var/log/zones/zoneadm.20130812T145306Z.webzone.install
インストールが完了したら、webzone
を起動して、そのコンソールにログインできます。
root@solaris:~# zoneadm -z webzone boot; zlogin -C webzone [Connected to zone 'webzone' console] Loading smf(5) service descriptions: 116/116 Hostname: webzone webzone console login: zuser Password: oracle1 Oracle Corporation SunOS 5.11 11.1 September 2012
ここで、"~.
"を使用してコンソールを終了しましょう。
zuser@webzone:~$ exit logout webzone console login: ~. [Connection to zone 'webzone' console closed]
webzone
のネットワークのセットアップここで、webzone
ネットワークをセットアップし、zlogin
を使用してもう一度ログインしなおす必要があります(リスト3を参照)。-C
オプションを使用しないこと、つまりコンソールに接続しないことに注意してください。また、root
ロールを使用して直接接続することに注意してください。ここでもまたipadm
およびdladm
コマンドを使用して、最初のネットワーク設定のクイック・チェックを実行します。
root@solaris:~# zlogin webzone [Connected to zone 'webzone' pts/3] Oracle Corporation SunOS 5.11 11.1 September 2012 root@webzone:~# ipadm NAME CLASS/TYPE STATE UNDER ADDR lo0 loopback ok -- -- lo0/v4 static ok -- 127.0.0.1/8 lo0/v6 static ok -- ::1/128 root@webzone:~# dladm LINK CLASS MTU STATE OVER webint0 vnic 9000 unknown ? net0 vnic 1500 up ?
リスト3
またIPアドレスは構成していませんが、使用可能なデータリンクが2つあります。zonecfg
を使用してインタフェースを1つしか構成していないのに2つあるのは、2つ目のネットワーク・インタフェース(net0
)が自動的に構成されるためです。zonecfg
を使用してネットワークを何も構成していなくても、自動データリンクのnet0
は構成されます。
ここで、このゾーンのIPインタフェースを構成しましょう。外部との通信用にインタフェースが1つ必要ですが、これにはnet0
を使用します。静的IPアドレスを割り当てます(ただし、ここで必要に応じてDHCPも使用できることに注意してください)。
root@webzone:~# ipadm create-ip net0 root@webzone:~# ipadm NAME CLASS/TYPE STATE UNDER ADDR lo0 loopback ok -- -- lo0/v4 static ok -- 127.0.0.1/8 lo0/v6 static ok -- ::1/128 net0 ip down -- --
IPスタックとしてnet0
と表示されていますが、まだIPアドレスはありません。では、IPアドレスを割り当てましょう。
root@webzone:~# ipadm create-addr -T static -a 192.168.1.225/24 net0 net0/v4 root@webzone:~# ipadm NAME CLASS/TYPE STATE UNDER ADDR lo0 loopback ok -- -- lo0/v4 static ok -- 127.0.0.1/8 lo0/v6 static ok -- ::1/128 net0 ip ok -- -- net0/v4 static ok -- 192.168.1.225/24
ここで、新しく作成したネットワーク上の大域ゾーンに対してpingを実行しましょう。
root@webzone:~# ping 192.168.1.222 ping: sendto Network is unreachable
大域ゾーンへのpingは成功しないため、ルーティング・テーブルが正しいかどうかチェックしましょう。
root@webzone:~# netstat -nr Routing Table: IPv4 Destination Gateway Flags Ref Use Interface -------------------- -------------------- ----- ----- ---------- --------- 127.0.0.1 127.0.0.1 UH 2 0 lo0 192.168.1.0 192.168.1.225 U 3 1 net0 Routing Table: IPv6 Destination/Mask Gateway Flags Ref Use If --------------------------- --------------------------- ----- --- ------- ----- ::1 ::1 UH 2 0 lo0
ルーティングも正しく構成されています。
この問題は、実際にOracle Solarisの"デフォルト・セキュリティ保護"機能によって発生します。この機能により、手動で作成されたネットワーク・インタフェースに厳格なファイアウォールが適用されます。前のシステム構成手順で静的ネットワークを割り当てた場合にはこの問題が発生しないことに注意してください。
では、設定を調べて、ファイアウォール・サービスを無効にしましょう。ラボの外部で、セキュリティ・ポリシーに従うために、いくつかのルールを実装することに注意してください。
root@webzone:~# ipfstat -io block out log all pass out quick on lo0 all pass out quick proto udp from any to any port = bootps block in log all pass in quick on lo0 all pass in quick proto udp from any to any port = bootpc root@webzone:~# svcadm disable svc:/network/ipfilter root@webzone:~# ping 192.168.1.222 192.168.1.222 is alive
リスト4のように、webzone
とdbzone
の間の内部通信用にネットワークを構成することによって、webzone
のネットワークのセットアップを完了しましょう。
root@webzone:~# ipadm create-ip webint0 root@webzone:~# ipadm create-addr -a local=10.0.3.10/24 webint0/v4 root@webzone:~# ipadm NAME CLASS/TYPE STATE UNDER ADDR lo0 loopback ok -- -- lo0/v4 static ok -- 127.0.0.1/8 lo0/v6 static ok -- ::1/128 net0 ip ok -- -- net0/v4 static ok -- 192.168.1.225/24 webint0 ip ok -- -- webint0/v4 static ok -- 10.0.3.10/24
リスト4
リスト4で、今度はipadm
コマンドを異なる形式(static
ではなくlocal
)で使用していることに注意してください。
また、WordPressのインストール用にホスト名を/etc/hosts
に追加する必要があります。
root@webzone:~# echo '10.0.3.10 webzone' >> /etc/hosts root@webzone:~# echo '10.0.3.11 dbzone' >> /etc/hosts root@webzone:~# cat /etc/hosts # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # Internet host table # ::1 webzone localhost 127.0.0.1 webzone localhost loghost 10.0.3.10 webzone 10.0.3.11 dbzone
webzone
へのパッケージの追加webzone
インストールの最後の手順は、パッケージの追加です。個別のパッケージ・セットをwebzone
とdbzone
にインストールすることもできますが、簡素化するために、AMP(Apache、MySQL、PHP)パッケージのフルセットをwebzone
にインストールし、その後にwebzone
をクローン化してdbzone
を作成します。pkg
コマンドを使用します。パッケージの依存関係はすべて構成済みであり、1つの簡単なコマンドを使用するだけで必要な作業がすべて完了することに注意してください。
root@webzone:~# pkg install amp Packages to install: 45 Mediators to change: 1 Create boot environment: No Create backup boot environment: No Services to change: 2 DOWNLOAD PKGS FILES XFER (MB) SPEED Completed 45/45 4351/4351 93.7/93.7 845k/s PHASE ITEMS Installing new actions 5844/5844 Updating package state database Done Updating image state Done Creating fast lookup database Done
インストールされた内容を確認しましょう。
root@webzone:~# pkg list *apache* NAME (PUBLISHER) VERSION IFO web/server/apache-22 2.2.22-0.175.1.0.0.24.0 i-- web/server/apache-22/module/apache-dtrace 0.3.1-0.175.1.0.0.24.0 i-- web/server/apache-22/module/apache-fcgid 2.3.6-0.175.1.0.0.24.0 i-- web/server/apache-22/module/apache-php5 5.2.17-0.175.1.0.0.18 i-r web/server/apache-22/module/apache-php52 5.2.17-0.175.1.0.0.24.0 i-- root@webzone:~# pkg list *php* NAME (PUBLISHER) VERSION IFO web/php-52 5.2.17-0.175.1.0.0.24.0 i-- web/php-52/extension/php-apc 3.0.19-0.175.1.0.0.24.0 i-- web/php-52/extension/php-idn 0.2.0-0.175.1.0.0.24.0 i-- web/php-52/extension/php-memcache 2.2.5-0.175.1.0.0.24.0 i-- web/php-52/extension/php-mysql 5.2.17-0.175.1.0.0.24.0 i-- web/php-52/extension/php-pear 5.2.17-0.175.1.0.0.24.0 i-- web/php-52/extension/php-suhosin 0.9.29-0.175.1.0.0.24.0 i-- web/php-52/extension/php-tcpwrap 1.1.3-0.175.1.0.0.24.0 i-- web/php-52/extension/php-xdebug 2.0.5-0.175.1.0.0.24.0 i-- web/php-common 11.1-0.175.1.0.0.24.0 i-- web/server/apache-22/module/apache-php5 5.2.17-0.175.1.0.0.18 i-r web/server/apache-22/module/apache-php52 5.2.17-0.175.1.0.0.24.0 i-- root@webzone:~# pkg list *mysql* NAME (PUBLISHER) VERSION IFO database/mysql-51 5.1.37-0.175.1.0.0.24.0 i-- database/mysql-51/library 5.1.37-0.175.1.0.0.24.0 i-- database/mysql-common 0.5.11-0.175.1.0.0.24.0 i-- library/apr-util-13/dbd-mysql 1.3.9-0.175.1.0.0.24.0 i-- web/php-52/extension/php-mysql 5.2.17-0.175.1.0.0.24.0 i--
残りの作業は、Webサーバー・サービスを起動して、その動作を確認することだけです。
root@webzone:~# svcadm enable apache22 root@webzone:~# svcs apache22 STATE STIME FMRI online 9:12:18 svc:/network/http:apache22
Oracle Solarisデスクトップで、Firefoxブラウザを開いて、アドレス行にwebzone
のIPアドレス(192.168.1.225)を入力します。"It works!"というメッセージが示されたページが表示されます。
これで、webzone
の作成および構成は完了です。次に、それをクローン化してdbzone
を作成する必要があります。これを行うには、まず、webzone
を停止する必要があります。
root@webzone:~# exit logout [Connection to zone 'webzone' pts/3 closed] root@solaris:~# zoneadm -z webzone shutdown root@solaris:~#
次に、データベース・サーバー・ゾーンを作成します。このゾーンをインストールする代わりに、既存のゾーンをクローン化して、時間とディスク領域を節約します。前の演習のように、ネットワークをセットアップし、構成とプロファイルを作成してから、インストールの代わりにクローニング操作を実行する必要があります。
dbzone
VNICの構成データベース・ゾーンを、webzone
に内部的にのみ接続させます。このため、前に作成して仮想スイッチに接続される仮想NICを作成します。
root@solaris:~# dladm create-vnic -l vswitch0 dbint0 root@solaris:~# dladm LINK CLASS MTU STATE OVER net1 phys 1500 unknown -- net0 phys 1500 up -- vswitch0 etherstub 9000 unknown -- webint0 vnic 9000 up vswitch0 dbint0 vnic 9000 up vswitch0
dbzone
の構成このゾーンは、アプリケーションのデータベース部分として動作するため、dbzone
と呼ぶことにします。この構成では、ゾーンを配置する場所へのパス(/zones/dbzone
)とゾーンのネットワーク・インタフェース(dbint0
)を設定します。また、このラボの最初に作成したデータセット(rpool/mydata
)をゾーン内部で使用できるように割り当てます。
root@solaris:~# zonecfg -z dbzone Use 'create' to begin configuring a new zone. zonecfg:dbzone> create create: Using system default template 'SYSdefault' zonecfg:dbzone> set zonepath=/zones/dbzone zonecfg:dbzone> add net zonecfg:dbzone:net>set physical=dbint0 zonecfg:dbzone:net> end zonecfg:dbzone> add dataset zonecfg:dbzone:dataset> set name=rpool/mydata zonecfg:dbzone:dataset> end zonecfg:dbzone> verify zonecfg:dbzone> commit zonecfg:dbzone> exit
次に、dbzone
のゾーン・プロファイルを作成しましょう。
root@solaris:~# sysconfig create-profile -o /root/dbzone-profile.xml
表示されるダイアログ・ボックスに、以下のパラメータを入力します。
コンピュータ名:dbzone
ネットワーク接続:None
(後でゾーン内からネットワークを構成します)
タイムゾーン:該当するタイムゾーンを選択(ヒント:国を選択する際は、たとえばUnited StatesのUといったように、最初の文字を入力します)
rootパスワード:solaris11
ユーザーの実際の名前:Zone User
ユーザーID:zuser
ユーザー・パスワード:oracle1
これら以外はデフォルトのままにして、[F2]キーまたは[ESC]+[2]キーを押して続行します。
dbzone
のインストール新しく作成したプロファイルによってゾーンをインストールする代わりに、今回は、webzone
をクローン化してdbzone
を作成します。
root@solaris:~# zoneadm -z dbzone clone -c /root/dbzone-profile.xml webzone Progress being logged to /var/log/zones/zoneadm.20130812T195010Z.dbzone.clone Log saved in non-global zone as /zones/dbzone/root/var/log/zones/zoneadm.20130812T195010Z.dbzone.clone root@solaris:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - webzone installed /zones/webzone solaris excl - dbzone installed /zones/dbzone solaris excl
この場合、インストールにかかる時間が大幅に短縮され、元のゾーンをコピーするだけで済みます。この方法は、新しいインスタンスを迅速にプロビジョニングできるため、クラウド環境では非常に便利です。
また、仮想化テクノロジーによって領域を非常に効率的に使用できることも重要な点です。ここで、ディスクの使用状況を見てみましょう。
root@solaris:~# zfs list rpool/zones rpool/zones/webzone rpool/zones/dbzone NAME USED AVAIL REFER MOUNTPOINT rpool/zones 619M 12.0G 33K /zones rpool/zones/dbzone 391K 12.0G 34K /zones/dbzone rpool/zones/webzone 619M 12.0G 33K /zones/webzone
リスト5
リスト5から分かるように、使用されている領域は全体で619MBであるのに、2つのゾーンを合わせると1010MBになります。これが可能である理由は、ZFSを使用しているためです。このCopy-On-Write方式のファイル・システムでは、dbzone
とwebzone
の差分のみがディスクに格納されます。
dbzone
のセットアップでは、dbzone
を調べて、いくつかの最終的な構成を行いましょう。まず、両方のゾーンを起動します。
root@solaris:~# zoneadm -z webzone boot root@solaris:~# zoneadm -z dbzone boot root@solaris:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 3 webzone running /zones/webzone solaris excl 4 dbzone running /zones/dbzone solaris excl
両方のゾーンが動作していることが分かります。ここで、dbzone
にログインし、AMPパッケージの存在と、Apache Webサーバーが動作していることを確認することで、webzone
が完全にコピーされているかどうかを調べます。
root@solaris:~# zlogin dbzone [Connected to zone 'dbzone' pts/2] Oracle Corporation SunOS 5.11 11.1 September 2012 root@dbzone:~# pkg list *apache* NAME (PUBLISHER) VERSION IFO web/server/apache-22 2.2.22-0.175.1.0.0.24.0 i-- web/server/apache-22/module/apache-dtrace 0.3.1-0.175.1.0.0.24.0 i-- web/server/apache-22/module/apache-fcgid 2.3.6-0.175.1.0.0.24.0 i-- web/server/apache-22/module/apache-php5 5.2.17-0.175.1.0.0.18 i-r web/server/apache-22/module/apache-php52 5.2.17-0.175.1.0.0.24.0 i-- root@dbzone:~# pkg list *php* NAME (PUBLISHER) VERSION IFO web/php-52 5.2.17-0.175.1.0.0.24.0 i-- web/php-52/extension/php-apc 3.0.19-0.175.1.0.0.24.0 i-- web/php-52/extension/php-idn 0.2.0-0.175.1.0.0.24.0 i-- web/php-52/extension/php-memcache 2.2.5-0.175.1.0.0.24.0 i-- web/php-52/extension/php-mysql 5.2.17-0.175.1.0.0.24.0 i-- web/php-52/extension/php-pear 5.2.17-0.175.1.0.0.24.0 i-- web/php-52/extension/php-suhosin 0.9.29-0.175.1.0.0.24.0 i-- web/php-52/extension/php-tcpwrap 1.1.3-0.175.1.0.0.24.0 i-- web/php-52/extension/php-xdebug 2.0.5-0.175.1.0.0.24.0 i-- web/php-common 11.1-0.175.1.0.0.24.0 i-- web/server/apache-22/module/apache-php5 5.2.17-0.175.1.0.0.18 i-r web/server/apache-22/module/apache-php52 5.2.17-0.175.1.0.0.24.0 i-- root@dbzone:~# pkg list *mysql* NAME (PUBLISHER) VERSION IFO database/mysql-51 5.1.37-0.175.1.0.0.24.0 i-- database/mysql-51/library 5.1.37-0.175.1.0.0.24.0 i-- database/mysql-common 0.5.11-0.175.1.0.0.24.0 i-- library/apr-util-13/dbd-mysql 1.3.9-0.175.1.0.0.24.0 i-- web/php-52/extension/php-mysql 5.2.17-0.175.1.0.0.24.0 i-- root@dbzone:~# svcs apache22 STATE STIME FMRI online 4:25:11 svc:/network/http:apache22
webzone
とまったく同じように、すべてのパッケージが存在し、Apache Webサーバーが起動して動作しています。ここで、実際にはdbzone
にApacheは不要であるため、これを停止します。
root@webzone:~# svcadm disable apache22 root@dbzone:~# svcs apache22 STATE STIME FMRI offline 6:39:24 svc:/network/http:apache22
また、ネットワークの構成も完了する必要があります。webzone
ですでにファイアウォールを無効にしているため、今回は無効にする必要がないことに注意してください。
root@dbzone:~# ipadm NAME CLASS/TYPE STATE UNDER ADDR lo0 loopback ok -- -- lo0/v4 static ok -- 127.0.0.1/8 lo0/v6 static ok -- ::1/128 root@dbzone:~# dladm LINK CLASS MTU STATE OVER dbint0 vnic 9000 up ? net0 vnic 1500 up ? root@dbzone:~# ipadm create-ip dbint0 root@dbzone:~# ipadm create-addr -a local=10.0.3.11/24 dbint0/v4 root@dbzone:~# ping 10.0.3.10 10.0.3.10 is alive root@dbzone:~# ping webzone webzone is alive root@dbzone:~# ipadm NAME CLASS/TYPE STATE UNDER ADDR dbint0 ip ok -- -- dbint0/v4 static ok -- 10.0.3.11/24 lo0 loopback ok -- -- lo0/v4 static ok -- 127.0.0.1/8 lo0/v6 static ok -- ::1/128
Q:このゾーンで/etc/hosts をセットアップしていないのに、ホスト名でwebzone をpingできるのはなぜですか。 |
A:/etc/host はすでにwebzone でセットアップされているため、webzone の他の内容とともにクローン化されています。 |
最後の作業は、データベースの構成と起動です。データベース情報用のZFSデータセットをセットアップしたことを思い出してください。そのデータセットを使用するようにMySQLを構成する必要があります。
まず、mydata
ZFSデータセットがこのゾーンに正しく委任されていることを確認します。
root@dbzone:~# zfs list NAME USED AVAIL REFER MOUNTPOINT mydata 31K 11.9G 31K /mydata rpool 64.0M 11.9G 31K /rpool rpool/ROOT 63.9M 11.9G 31K legacy rpool/ROOT/solaris-0 63.9M 11.9G 618M / rpool/ROOT/solaris-0/var 261K 11.9G 28.7M /var rpool/VARSHARE 19K 11.9G 39K /var/share rpool/export 74.5K 11.9G 32K /export rpool/export/home 53.5K 11.9G 32K /export/home rpool/export/home/zuser 32.5K 11.9G 32.5K /export/home/zuser
ここで、/mydata
ディレクトリの正しい所有権をセットアップし、それを使用するようにMySQLを構成します。
root@dbzone:~# chown -R mysql:mysql /mydata root@dbzone:~# chmod -R 700 /mydata root@dbzone:~# svccfg -s mysql:version_51 setprop mysql/data=/mydata root@dbzone:~# svcadm refresh mysql:version_51 root@dbzone:~# svccfg -s mysql:version_51 listprop mysql/data mysql/data astring /mydata
最後に、MySQLを起動して、正常に動作することを確認しましょう。MySQLの起動には少し時間がかかる場合があるため、svcs
コマンドを使用してMySQLが起動していることを確認しましょう。
root@dbzone:~# svcadm enable mysql root@dbzone:~# svcs mysql STATE STIME FMRI online 4:26:21 svc:/application/database/mysql:version_51 root@dbzone:~# mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.1.37 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
このラボにおける作業の最後の部分は、アプリケーション(今回はWordPress)の構成と実行です。
データベース・ゾーンでMySQLインスタンスにログインしたままで、WordPressに必要なデータベースを作成しましょう。
mysql> create database wp01; Query OK, 1 row affected (0.01 sec)
webzone
ホストからoracle1
というパスワードを持つユーザーwordpress
のアクセス権を追加します。
mysql> grant all privileges on wp01.* to 'wordpress'@'webzone' identified by 'oracle1'; Query OK, 0 rows affected (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.02 sec) mysql> quit; Bye
以上でデータベース・ゾーンに関する作業はすべて完了したので、このゾーンから大域ゾーンにログアウトします。
root@dbzone:~# exit logout [Connection to zone 'dbzone' pts/2 closed] root@solaris:~#
ここで、WordPressバイナリをwebzone
内の格納場所にコピーしましょう。webzone
の構成時に作成したネットワーク接続を使用します。
root@solaris:~# scp /root/files/wordpress-3.6.zip zuser@192.168.1.225: The authenticity of host '192.168.1.225 (192.168.1.225)' can't be established. RSA key fingerprint is 68:20:37:5f:fe:d8:92:e0:b4:6f:2d:53:a0:3e:c6:74. Are you sure you want to continue connecting (yes/no)? yes Password: oracle1 wordpress-3.6.zip 100% |********************************************************************************** ***************************| 4371 KB 00:00 root@solaris:~#
次に、webzone
にログインして、WordPressアプリケーションを抽出します。必ず、zuser
の格納場所からアーカイブをコピーまたは移動してください。
root@solaris:~# zlogin webzone [Connected to zone 'webzone' pts/2] Oracle Corporation SunOS 5.11 11.1 September 2012 root@webzone:~# pwd /root root@webzone:~# mv /home/zuser/wordpress-3.6.zip . root@webzone:~# unzip wordpress-3.6.zip Archive: wordpress-3.6.zip creating: wordpress/ inflating: wordpress/wp-settings.php inflating: wordpress/wp-cron.php (output omitted) inflating: wordpress/wp-includes/Text/Diff.php inflating: wordpress/wp-includes/update.php inflating: wordpress/wp-includes/comment.php inflating: wordpress/wp-config-sample.php root@webzone:~#
ここで、MySQLデータベースを使用するようにWordPressを構成する必要があります。まず、構成ファイルをコピーし、次に、以下のような変更を加えます。
root@webzone:~# cd wordpress root@webzone:~/wordpress# cp wp-config-sample.php wp-config.php root@webzone:~/wordpress# vi wp-config.php // ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define('DB_NAME', 'wp01'); /** MySQL database username */ define('DB_USER', 'wordpress'); /** MySQL database password */ define('DB_PASSWORD', 'oracle1'); /** MySQL hostname */ define('DB_HOST', 'dbzone');
ここで、WordPress配布ファイルをWebサーバーのドキュメント・ルートにコピーする必要があります。
root@webzone:~/wordpress# mkdir /var/apache2/2.2/htdocs/blog root@webzone:~/wordpress# cp -r * /var/apache2/2.2/htdocs/blog root@webzone:~/wordpress# ls /var/apache2/2.2/htdocs/blog/ index.php wp-activate.php wp-comments-post.php wp-cron.php wp-load.php wp-settings.php xmlrpc.php license.txt wp-admin wp-config.php wp-includes wp-login.php wp-signup.php readme.html wp-blog-header.php wp-content wp-links-opml.php wp-mail.php wp-trackback.php
これで、ブラウザを使用してWordPressをインストールする準備が整いました。大域ゾーンのデスクトップからブラウザを起動して、URL(http://192.168.1.225/blog/wp-admin/install.php
)を入力します。残りの作業は簡単です。図3のように、ブログ名("Oracle Solaris 11 Blog")、管理者のログイン名(デフォルトでは、admin
)、パスワード(solaris1
など)、および電子メール・アドレスを入力します。
図3:WordPressのインストール画面
図4:WordPressのインストールが成功した場合の画面
ここで、選択した資格証明によって新しいブログにログインします。
図5:WordPressのログイン画面
ダッシュボードが表示されたら、ブラウザ・ウィンドウの上部にある「Oracle Solaris 11 Blog」をクリックして、ブログ・ウィンドウにアクセスします。
図6:WordPressのダッシュボード
図7:WordPressのブログ画面
ゾーンによって(つまりクラウドによって)使用されているリソースを監視することは、問題のデバッグはもちろん、キャパシティ・プランニングや、費用発生時にも重要です。Oracle Solaris 11では、このような監視を簡素化する機能が追加されています。ここでは、それらについて説明します。
Oracle Solaris 11の一部のコマンドでは、システムを調べる際に役立つ-Z
パラメータを使用できるようになりました。ここで、いくつか実行してみましょう。以下の例が大域ゾーンから実行されていることと、読みやすくするために出力の一部が省略されていることに注意してください。
ps
コマンドでは、プロセスが属しているゾーンを確認できるようになりました。
root@solaris:~# ps -efZ ZONE UID PID PPID C STIME TTY TIME CMD global root 0 0 0 Aug 11 ? 0:04 sched global root 5 0 0 Aug 11 ? 1:02 zpool-rpool global root 6 0 0 Aug 11 ? 0:13 kmem_task global root 1 0 0 Aug 11 ? 0:01 /usr/sbin/init dbzone root 12762 1 0 06:39:26 ? 0:00 /usr/lib/pfexecd webzone root 11549 1 0 06:38:20 ? 0:00 /usr/lib/utmpd webzone daemon 11217 1 0 06:38:11 ? 0:00 /lib/crypto/kcfd
prstat
コマンドでは、ゾーン関連情報のサマリーが表示されます。
root@solaris:~# prstat -Z ZONEID NPROC SWAP RSS MEMORY TIME CPU ZONE 0 120 3103M 703M 34% 0:26:36 1.4% global 4 29 306M 108M 5.3% 0:01:57 0.2% dbzone 3 38 1182M 336M 17% 0:01:02 0.2% webzone
zonestat
コマンドzonestat
と呼ばれる新しいコマンドがあります。これは、リスト6のように、ゾーンおよびネットワーク情報を調べる場合に非常に便利です。
root@solaris:~# zonestat 5 2 Collecting data for first interval... Interval: 1, Duration: 0:00:05 SUMMARY Cpus/Online: 1/1 PhysMem: 2047M VirtMem: 3071M ---CPU---- --PhysMem-- --VirtMem-- --PhysNet-- ZONE USED %PART USED %USED USED %USED PBYTE %PUSE [total] 0.17 17.4% 1432M 69.9% 1899M 61.8% 212 0.00% [system] 0.01 1.67% 449M 21.9% 1019M 33.1% - - global 0.14 14.2% 747M 36.5% 572M 18.6% 212 0.00% dbzone 0.00 0.47% 100M 4.88% 99M 3.22% 0 0.00% webzone 0.00 0.99% 135M 6.61% 207M 6.77% 0 0.00% Interval: 2, Duration: 0:00:10 SUMMARY Cpus/Online: 1/1 PhysMem: 2047M VirtMem: 3071M ---CPU---- --PhysMem-- --VirtMem-- --PhysNet-- ZONE USED %PART USED %USED USED %USED PBYTE %PUSE [total] 0.17 17.8% 1432M 69.9% 1899M 61.8% 936 0.00% [system] 0.02 2.44% 449M 21.9% 1019M 33.1% - - global 0.13 13.3% 748M 36.5% 572M 18.6% 936 0.00% dbzone 0.01 1.01% 100M 4.88% 99M 3.22% 0 0.00% webzone 0.00 0.96% 135M 6.61% 208M 6.77% 0 0.00%
リスト6
リスト7のように、zonestat
をゾーン内から使用することもできます。リスト6とリスト7の違いが分かりますか。
root@solaris:~# zlogin webzone [Connected to zone 'webzone' pts/2] Oracle Corporation SunOS 5.11 11.1 September 2012 root@webzone:~# zonestat 5 2 Collecting data for first interval... Interval: 1, Duration: 0:00:05 SUMMARY Cpus/Online: 1/1 PhysMem: 2047M VirtMem: 3071M ---CPU---- --PhysMem-- --VirtMem-- --PhysNet-- ZONE USED %PART USED %USED USED %USED PBYTE %PUSE [total] 0.16 16.6% 1435M 70.1% 1901M 61.9% 212 0.00% [system] 0.15 15.8% 1297M 63.3% 1692M 55.1% - - webzone 0.00 0.75% 138M 6.74% 209M 6.81% 0 0.00% Interval: 2, Duration: 0:00:10 SUMMARY Cpus/Online: 1/1 PhysMem: 2047M VirtMem: 3071M ---CPU---- --PhysMem-- --VirtMem-- --PhysNet-- ZONE USED %PART USED %USED USED %USED PBYTE %PUSE [total] 0.17 17.1% 1435M 70.1% 1901M 61.9% 628 0.00% [system] 0.16 16.1% 1297M 63.3% 1692M 55.1% - - webzone 0.01 1.02% 138M 6.74% 209M 6.81% 0 0.00% root@webzone:~# exit logout [Connection to zone 'webzone' pts/2 closed]
リスト7
zonestat
のマニュアル・ページを参照して、異なる出力タイプを試してください。
クラウドではリソース管理が非常に重要です。たとえば、アプリケーションの不正動作を制御したり、CPU単位で課金したりする場合に必要になります。多数の機能のなかでも、Oracle Solaris ZonesやOracle Solarisネットワーク・スタックによっても、リソースを制御できます。制御できる項目は多岐にわたりますが、このラボでは、Oracle Solaris Zonesによる処理能力の制御について説明します。
まず、リソース管理が実施されていないOracle Solaris Zonesを見てみましょう。これは、負荷が"集中"している場合や、複数のインスタンスでリソースがすぐに必要な場合や共有する必要がある場合にメリットがある可能性があります。ただし、クラウドでは、ほとんどの場合、リソースを割り当てる必要があります。ここで、比較のためだけに、出力を調べてみましょう。
まず、現在の状態のシステムを調べます。vmstat
およびzonestat
コマンドを使用すると、リスト8のように、プロセッサの負荷が分かります。
root@solaris:~# vmstat 5 5 kthr memory page disk faults cpu r b w swap free re mf pi po fr de sr s0 s1 s2 -- in sy cs us sy id 0 0 0 1497124 759028 57 233 0 0 0 0 9 13 0 0 0 465 1795 817 2 4 94 0 0 0 1085060 430068 7 11 0 0 0 0 0 0 0 0 0 463 408 376 1 2 97 0 0 0 1085060 430068 0 0 0 0 0 0 0 0 0 0 0 457 443 373 0 2 98 0 0 0 1085060 430068 0 0 0 0 0 0 0 0 0 0 0 455 392 370 1 1 98 0 0 0 1085060 430068 0 0 0 0 0 0 0 0 0 0 0 456 412 368 0 2 98 root@solaris:~# zonestat 5 2 Collecting data for first interval... Interval: 1, Duration: 0:00:05 SUMMARY Cpus/Online: 1/1 PhysMem: 2047M VirtMem: 3071M ---CPU---- --PhysMem-- --VirtMem-- --PhysNet-- ZONE USED %PART USED %USED USED %USED PBYTE %PUSE [total] 0.12 12.2% 848M 41.4% 1232M 40.1% 212 0.00% [system] 0.01 1.09% 307M 15.0% 812M 26.4% - - global 0.10 10.1% 347M 16.9% 196M 6.38% 212 0.00% dbzone 0.00 0.56% 90.9M 4.44% 87.0M 2.83% 0 0.00% webzone 0.00 0.48% 102M 4.98% 136M 4.44% 0 0.00% Interval: 2, Duration: 0:00:10 SUMMARY Cpus/Online: 1/1 PhysMem: 2047M VirtMem: 3071M ---CPU---- --PhysMem-- --VirtMem-- --PhysNet-- ZONE USED %PART USED %USED USED %USED PBYTE %PUSE [total] 0.14 14.8% 848M 41.4% 1233M 40.1% 936 0.00% [system] 0.01 1.03% 307M 15.0% 813M 26.4% - - global 0.13 13.0% 347M 16.9% 196M 6.38% 936 0.00% dbzone 0.00 0.37% 90.9M 4.44% 87.0M 2.83% 0 0.00% webzone 0.00 0.40% 102M 4.98% 136M 4.44% 0 0.00%
リスト8
リスト8では、vmstat
から、システムの大部分がアイドル状態であることが分かります。また、zonestat
は、dbzone
とwebzone
の両方がCPUリソースをほとんど使用していないことを示しています。
webzone
で、CPUリソースを大量に消費する簡単なスクリプトを実行しましょう。3つのインスタンスを実行して、ある程度の測定可能な負荷をシステムに適用します。
root@solaris:~# zlogin webzone "bash -c 'while true ; do date > /dev/null ; done'" & [1] 2376 root@solaris:~# zlogin webzone "bash -c 'while true ; do date > /dev/null ; done'" & [2] 4352 root@solaris:~# zlogin webzone "bash -c 'while true ; do date > /dev/null ; done'" & [3] 5820
システムへの影響を見てみましょう。
root@solaris:~# vmstat 5 5 kthr memory page disk faults cpu r b w swap free re mf pi po fr de sr s0 s1 s2 -- in sy cs us sy id 0 0 0 1458340 728048 57 257 0 0 0 0 9 12 0 0 0 465 1697 781 2 4 94 5 0 0 1073088 420496 2991 25178 0 0 0 0 0 0 0 0 0 508 12344 572 42 58 0 4 0 0 1072960 420404 3001 25325 0 0 0 0 0 0 0 0 0 488 12404 573 42 58 0 4 0 0 1072920 420484 3003 25323 0 0 0 0 0 0 0 0 0 496 12488 609 42 58 0 4 0 0 1072896 420400 2962 24986 0 0 0 0 0 0 0 0 0 508 12341 610 42 58 0
システム時間は、58という大きな値になっています。zonestat
の結果も見てみましょう。
root@solaris:~# zonestat 5 2 Collecting data for first interval... Interval: 1, Duration: 0:00:05 SUMMARY Cpus/Online: 1/1 PhysMem: 2047M VirtMem: 3071M ---CPU---- --PhysMem-- --VirtMem-- --PhysNet-- ZONE USED %PART USED %USED USED %USED PBYTE %PUSE [total] 0.99 99.9% 854M 41.7% 1241M 40.4% 212 0.00% [system] 0.07 7.82% 308M 15.0% 813M 26.4% - - webzone 0.80 80.5% 106M 5.18% 139M 4.54% 0 0.00% global 0.11 11.2% 349M 17.0% 200M 6.53% 212 0.00% dbzone 0.00 0.34% 90.9M 4.44% 87.0M 2.83% 0 0.00% Interval: 2, Duration: 0:00:10 SUMMARY Cpus/Online: 1/1 PhysMem: 2047M VirtMem: 3071M ---CPU---- --PhysMem-- --VirtMem-- --PhysNet-- ZONE USED %PART USED %USED USED %USED PBYTE %PUSE [total] 1.00 100% 855M 41.7% 1242M 40.4% 936 0.00% [system] 0.05 5.46% 308M 15.0% 814M 26.5% - - webzone 0.83 83.0% 106M 5.18% 139M 4.55% 0 0.00% global 0.11 11.0% 349M 17.0% 201M 6.54% 936 0.00% dbzone 0.00 0.38% 90.9M 4.44% 87.0M 2.83% 0 0.00%
リスト9
リスト9から、webzone
が使用可能なCPUリソースの83%を使用していることがはっきりと分かります。
リソース制御を追加する前に、このスクリプトを停止しましょう。
root@solaris:~# fg 1 zlogin webzone "bash -c 'while true ; do date > /dev/null ; done'" ^C root@solaris:~# fg 2 zlogin webzone "bash -c 'while true ; do date > /dev/null ; done'" ^C root@solaris:~# fg 3 zlogin webzone "bash -c 'while true ; do date > /dev/null ; done'" ^C
では、CPUを半分しか使用できないようにwebzone
を制限しましょう。
root@solaris:~# zonecfg -z webzone zonecfg:webzone> add capped-cpu zonecfg:webzone:capped-cpu> set ncpus=0.5 zonecfg:webzone:capped-cpu> end zonecfg:webzone> verify zonecfg:webzone> commit zonecfg:webzone> exit
リソース制限はゾーンの再起動後にのみ適用されるため、ここでゾーンを再起動しましょう。
root@solaris:~# zoneadm -z webzone reboot root@solaris:~# zoneadm list -iv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 2 dbzone running /zones/dbzone solaris excl 3 webzone running /zones/webzone solaris excl
リスト10のように、同じテストをもう一度実施して、出力を調べましょう。
root@solaris:~# zlogin webzone "bash -c 'while true ; do date > /dev/null ; done'" & [1] 4305 root@solaris:~# zlogin webzone "bash -c 'while true ; do date > /dev/null ; done'" & [2] 4545 root@solaris:~# zlogin webzone "bash -c 'while true ; do date > /dev/null ; done'" & [3] 4747 root@solaris:~# vmstat 5 5 kthr memory page disk faults cpu r b w swap free re mf pi po fr de sr s0 s1 s2 -- in sy cs us sy id 0 0 0 1419676 695904 171 1164 0 0 0 0 8 12 0 0 0 468 2298 838 3 6 90 0 0 0 1013684 350316 1289 11358 0 0 0 0 0 0 0 0 0 482 5726 508 23 33 44 0 0 0 1013684 350236 1248 11121 0 0 0 0 0 0 0 0 0 484 5577 510 23 32 45 0 0 0 1013684 350224 1264 11361 0 0 0 0 0 0 0 0 0 475 5732 508 23 32 45 1 0 0 1013692 350256 1292 11464 0 0 0 0 0 0 0 0 0 486 5769 505 23 32 45 root@solaris:~# zonestat 5 2 Collecting data for first interval... Interval: 1, Duration: 0:00:05 SUMMARY Cpus/Online: 1/1 PhysMem: 2047M VirtMem: 3071M ---CPU---- --PhysMem-- --VirtMem-- --PhysNet-- ZONE USED %PART USED %USED USED %USED PBYTE %PUSE [total] 0.64 64.9% 919M 44.9% 1296M 42.2% 212 0.00% [system] 0.05 5.83% 375M 18.3% 871M 28.3% - - webzone 0.47 47.9% 103M 5.05% 136M 4.46% 0 0.00% global 0.10 10.7% 349M 17.0% 201M 6.54% 212 0.00% dbzone 0.00 0.39% 90.9M 4.44% 87.0M 2.83% 0 0.00% Interval: 2, Duration: 0:00:10 SUMMARY Cpus/Online: 1/1 PhysMem: 2047M VirtMem: 3071M ---CPU---- --PhysMem-- --VirtMem-- --PhysNet-- ZONE USED %PART USED %USED USED %USED PBYTE %PUSE [total] 0.65 65.9% 920M 44.9% 1296M 42.2% 936 0.00% [system] 0.03 3.26% 375M 18.3% 871M 28.3% - - webzone 0.48 48.3% 103M 5.06% 136M 4.45% 0 0.00% global 0.13 13.9% 349M 17.0% 201M 6.55% 936 0.00% dbzone 0.00 0.42% 90.9M 4.44% 87.0M 2.83% 0 0.00%
リスト10
リスト10から、リソース制御によってwebzone
のCPU使用率が制限されたことが分かります。この演習を完了するために、スクリプトを停止し、webzone
のCPUリソース制限を解除しましょう(リソース変更を適用するために最後にwebzone
を再起度することを忘れないでください)。
root@solaris:~# fg 1 zlogin webzone "bash -c 'while true ; do date > /dev/null ; done'" ^C root@solaris:~# fg 2 zlogin webzone "bash -c 'while true ; do date > /dev/null ; done'" ^C root@solaris:~# fg 3 zlogin webzone "bash -c 'while true ; do date > /dev/null ; done'" ^C root@solaris:~# zonecfg -z webzone zonecfg:webzone-1> remove capped-cpu zonecfg:webzone-1> verify zonecfg:webzone-1> commit zonecfg:webzone-1> exit root@solaris:~# zoneadm -z webzone reboot
ゾーンには、これ以外にも、さまざまなリソース制御設定を適用できます。他のオプションについては、マニュアル・ページまたはドキュメントを参照してください。
Oracle Solarisは、アプリケーションの可用性を確保するための多数の方法を提供します。単にハードウェアに組み込まれている信頼性、可用性、保守性(RAS)機能だけを利用することもできますし、Oracle Solaris Clusterが備えるすべての機能を活用して高可用性環境を実装することもできます。Oracle Solarisでは、あらゆるレベルの可用性が実現されます。ここでは、Oracle Solarisのサービス管理フレームワークについて簡単に説明します。
簡単な例として、リスト11のように、Apache Webサーバーに関連付けられたプロセスを調べましょう。
root@webzone:~# svcs -p apache22 STATE STIME FMRI online 5:05:46 svc:/network/http:apache22 5:05:46 20538 httpd 5:05:47 20539 httpd 5:05:48 20540 httpd 5:05:48 20541 httpd 5:05:48 20542 httpd 5:05:48 20543 httpd 5:05:48 20544 httpd
リスト11
ここで、リスト12のように、httpd
プロセスを停止して、サービスの障害をシミュレートし、何が起こるか見てみましょう。
root@webzone:~# pkill httpd root@webzone:~# svcs -p apache22 STATE STIME FMRI online 5:28:01 svc:/network/http:apache22 5:28:01 20585 httpd 5:28:01 20586 httpd 5:28:02 20587 httpd 5:28:02 20588 httpd 5:28:02 20589 httpd 5:28:02 20590 httpd 5:28:02 20591 httpd
リスト12
Apacheのhttpd
プロセスは、まだ存在しています。リスト12をよく見ると、プロセスIDがリスト11から変更されていることと、サービスが停止後に自動的に再起動されていることが分かります。これは、サービス管理フレームワークの標準的な機能であり、Oracle Solarisがクラウドのサービスの可用性を維持する方法の一端を示しています。
セキュリティは常に重要ですが、共有環境と"オープン"なネットワークを持つクラウド領域では、環境の保護がさらに重要になります。
Oracle Solarisは、多数の異なるレイヤーで環境を保護する機能を備えています。データのZFS暗号化を使用することもできますし、データリンク保護によってネットワークを堅牢にすることもできます。ここでは、不変ゾーンという読取り専用環境を作成するOracle Solaris独自の機能について説明します。
webzone
の不変ゾーンへの変換まず、webzone
を不変ゾーン(読取り専用環境)に変換しましょう。これは、構成の変更によって簡単に行うことができます。変更を適用するには、ゾーンを再起動する必要があります。
root@solaris:~# zonecfg -z webzone zonecfg:webzone> set file-mac-profile=fixed-configuration zonecfg:webzone> verify zonecfg:webzone> commit zonecfg:webzone> exit root@solaris:~# zoneadm -z webzone reboot
必要な作業はこれだけです。これで、読取り専用環境が作成されました。
読取り専用環境内から実行できることについて見てみましょう。
root@solaris:~# zlogin webzone [Connected to zone 'webzone' pts/2] Oracle Corporation SunOS 5.11 11.1 September 2012 root@webzone:~# touch /etc/a_file touch: cannot create /etc/a_file: Read-only file system root@webzone:~# touch /var/tmp/a_file root@webzone:~# touch /tmp/a_file root@webzone:~# pkg install emacs pkg install: Could not complete the operation on /var/pkg/lock: read-only filesystem. root@webzone:~# rm /usr/bin/vi rm: /usr/bin/vi not removed: Read-only file system root@webzone:~# useradd larry /usr/lib/passmgmt: Password file(s) busy. Try again later /usr/lib/passmgmt: Password file(s) busy. Try again later /usr/lib/passmgmt: Password file(s) busy. Try again later UX: useradd: ERROR: Cannot update system - login cannot be created. root@webzone:~# svcadm disable apache22 root@webzone:~# svcs apache22 STATE STIME FMRI disabled 8:56:10 svc:/network/http:apache22 root@webzone:~# exit logout [Connection to zone 'webzone' pts/2 closed]
しかし、webzone
に変更を加える必要がある場合は、どうすればいいでしょうか。その場合は、ゾーンを読取り/書込みモードで起動できます。ただし、これは、大域ゾーン内からのみ実行できることに注意してください。そのゾーンに影響を与える大域ゾーンから更新を実行する場合にも、同様のことが発生します。
root@solaris:~# zoneadm -z webzone reboot -w root@solaris:~# zlogin -C webzone [Connected to zone 'webzone' console] Hostname: webzone webzone console login: zuser Password: oracle1 Last login: Tue Aug 13 09:39:27 from 192.168.1.222 Oracle Corporation SunOS 5.11 11.1 September 2012 zuser@webzone:~$ su - Password: solaris11 Aug 14 12:02:57 webzone su: 'su root' succeeded for zuser on /dev/console Oracle Corporation SunOS 5.11 11.1 September 2012 root@webzone:~# touch /etc/a_file root@webzone:~# rm /etc/a_file root@webzone:~# exit logout zuser@webzone:~$ exit logout webzone console login: ~. [Connection to zone 'webzone' console closed]
最後に、ゾーンを通常のモードに戻しましょう。
root@solaris:~# zonecfg -z webzone zonecfg:webzone> clear file-mac-profile zonecfg:webzone> verify zonecfg:webzone> commit zonecfg:webzone> exit root@solaris:~# zoneadm -z webzone reboot
以上で、このラボは完了です。このラボでは、Oracle Solarisがクラウド・インフラストラクチャの非常に優れた基盤となることについて説明しました。また、アプリケーションの迅速なデプロイ、柔軟なネットワークの構成、およびリソースの制御を容易に実行できることや、Oracle Solarisがサービスの動作を維持するしくみについて学習しました。さらに、読取り専用仮想環境の実装方法についても確認しました。これまでの作業を終えて、まだ時間に余裕がある場合は、以下のセクションを参照して、ぜひさらに多くの機能について学習を進めてください。
ラボを完了した後は、ぜひ以下の演習にも挑戦してみてください。
webzone
のクローン化を試みて、2つのWebサーバーのロードバランサを構成してください。sysconfig
Command"また、以下のリソースも参照してください。
リビジョン1.0、2013年11月22日 |