Solarisコンテナ(ゾーン)。 作成と管理。 パート1

Solarisコンテナ(ゾーン)。 作成と管理。 パート2

はじめに


Solarisゾーンテクノロジ(Solarisコンテナ)は、Solaris 10ソフトウェアレベルでOSをコンテナ(ゾーン)、独立した独立したリソース(プロセッサ、メモリ、ディスクスペース)と独自のユーザーを持つことができるほぼ独立したOSに分離できるテクノロジです。

コンテナは、各アプリケーションが動作可能なリソースの独自の正直な保証(またはすべてのゾーン間で共有)を備えたアプリケーションサーバーを構築するための優れたソリューションです。 このソリューションにより、インフラストラクチャをより強力なサーバーに統合できるようになり、一般に情報システムのコストと複雑さが軽減されます。


サーバーの統合を計画する場合、多くの異種ソリューションに直面するため、そこから完全に満足できるソリューションを選択する必要があります。 通常、次の3つから選択します。


Solarisゾーンの機能:


Solarisゾーンの作成


デモンストレーションを行うには、habrazoneというゾーンを設定します。

Solaris OS 10 09/10があり、 ZFSにインストールされています 。 次の記事では、ZFSに個別のプールを作成し、このプールにゾーンをインストールし、保証されたCPUとRAMをゾーンに割り当てるプロセスについて説明します。この1つでは、ゾーンをリソースにバインドせずに個別のディレクトリにのみインストールします。 ゾーンには余計なものはなく(物理ネットワークインターフェース、rawデバイスなどを転送する)、ホストレベルで仮想ネットワークインターフェースを使用します。

したがって、まず最初に、ゾーンがインストールされるディレクトリを作成し、それに権利を割り当てます

# mkdir /export/habrazone
# chown root:root /export/habrazone
# chmod 700 /export/habrazone


すべてがシンプルです。 このゾーンを見ることができるのはルートのみであり、他の誰も見ることができません。

ゾーンを作成するには、-zスイッチを指定してzonecfgコマンドを使用します。

# zonecfg -z habrazone
habrazone: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:habrazone> create
zonecfg:habrazone> set zonepath=/export/habrazone
zonecfg:habrazone> set autoboot=true
zonecfg:habrazone> add net
zonecfg:habrazone:net> set physical=bge0
zonecfg:habrazone:net> set address=10.44.3.92
zonecfg:habrazone:net> end
zonecfg:habrazone> add attr
zonecfg:habrazone:attr> set name=comment
zonecfg:habrazone:attr> set type=string
zonecfg:habrazone:attr> set value="Habrahabr"
zonecfg:habrazone:attr> end
zonecfg:habrazone> verify
zonecfg:habrazone> commit
zonecfg:habrazone> exit


ここで何が起こったかについて少しコメントします。

zonecfg:habrazone> create-ゾーンを作成します。 実際、まだゾーンはありません。 これは単なるXML構成です。
zonecfg:habrazone> set zonepath = / export / habrazone-ゾーンはパス/ export / habrazoneに配置されます
zonecfg:habrazone> set autoboot = true-ゾーンはホストのブートとともに、たとえば再起動後に自動的に開始されます。
zonecfg:habrazone> add net-ネットワークインターフェースをゾーン設定に追加します
zonecfg:habrazone:net> set physical = bge0-仮想インターフェイスはbge0の上に配置されます
zonecfg:habrazone:net> set address = 10.44.3.92-ゾーンのアドレス
zonecfg:habrazone:net> end -end
zonecfg:habrazone> add attr-ゾーンの「名前」を追加しました
zonecfg:habrazone:attr> セット名=コメント
zonecfg:habrazone:attr> set type = string
zonecfg:habrazone:attr> set value = "Habrahabr"は私たちのお気に入りのリソースです
zonecfg:habrazone:attr> end-そして再びend
zonecfg:habrazone> verify-設定を確認します。 構成にエラーがある場合、この場所でこれについて通知されます
zonecfg:habrazone> commit-コミット
zonecfg:habrazone> exit-終了

設定全体を見てみましょう。 inherit-pkg-dirに注意してください。 これらは、大域ゾーンから「継承」されるディレクトリを指します。

# zonecfg -z habrazone info
zonename: habrazone
zonepath: /export/habrazone
brand: native
autoboot: true
bootargs:
pool:
limitpriv:
scheduling-class:
ip-type: shared
hostid:
inherit-pkg-dir:
dir: /lib
inherit-pkg-dir:
dir: /platform
inherit-pkg-dir:
dir: /sbin
inherit-pkg-dir:
dir: /usr
net:
address: 10.44.3.92
physical: bge0
defrouter not specified
attr:
name: comment
type: string
value: Habrahabr


現在、ゾーンは1つだけです-グローバル。 ゾーンのリストは、list –ivキーを指定したzoneadmコマンドで表示できます。

# zoneadm list -iv
ID NAME STATUS PATH BRAND IP
0 global running / native shared


これで、ゾーンをインストールする準備ができました。 ゾーンをインストールするには、すでによく知られているzoneadmコマンドを使用しますが、インストールコマンドでインストールされていないゾーンの名前がパラメーターとして渡されます。

# zoneadm -z habrazone install
A ZFS file system has been created for this zone.
Preparing to install zone habrazone.
Creating list of files to copy from the global zone.
Copying 3137 files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize 1207 packages on the zone.
Initialized 1207 packages on zone.
Zone habrazone is initialized.
The file /export/habrazone/root/var/sadm/system/logs/install_log contains a log of the zone installation.

OSファイルがグローバルゾーンからゾーンにコピーされ、ディレクトリの一部が継承されるという事実に注意を喚起したいと思います。 ゾーン内の継承ディレクトリは読み取り専用です。

ゾーンのリストに、新しくインストールされたゾーンがあります。

# zoneadm list -iv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
- habrazone installed /export/habrazone native shared


そして、そのサイズは、ほぼ独立したOSにとって非常に小さいです。

# du -shk /export/habrazone/
79M /export/habrazone


起動と停止は、コマンドzoneadm –z <ゾーン名> bootおよびzoneadm –z <ゾーン名> haltをそれぞれ使用して実行されます。

# zoneadm -z habrazone boot


ゾーンを開始した後、たとえば、ホストネットワークインターフェイスの構成で何が変更されたかを確認できます。
# /sbin/ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
lo0:1: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
zone habrazone
inet 127.0.0.1 netmask ff000000
bge0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
inet 10.44.3.93 netmask ffffff00 broadcast 10.44.3.255
ether 0:14:4f:79:91:1a
bge0:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
zone habrazone
inet 10.44.3.92 netmask ffffff00 broadcast 10.44.3.255


ifconfigの出力からわかるように、ゾーンアドレスが割り当てられているシステムに仮想インターフェイスが表示されています。 たとえば、ネットワークをアクティブに運用するゾーンにアプリケーションをインストールし、他のゾーンが正常に機能するようにする場合など、ゾーンに個別の物理インターフェイスを割り当てることもできます。

ゾーンが起動したら、コンソールに移動して最小限の構成(ホスト名、タイムゾーン、ネームサービス、パスワードルートなど)を実行する必要があります。

zlogin –C <ゾーン名>を使用して入力できます。

# zlogin –C habrazone

次に、ホスト名、タイムゾーン、ネームサービスに関するOSの質問に答え、ルートパスワードを入力します。 すべての構成手順の後、ゾーン自体が再起動し、同じzlogin <zone name>またはsshを使用してコンソールにアクセスできるようになります。

# hostname
globalzone
# zlogin habrazone
[Connected to zone 'habrazone' pts/1]
Last login: Fri Jul 1 18:43:32 on pts/3
Oracle Corporation SunOS 5.10 Generic Patch January 2005
# hostname
habrazone


ゾーンの準備ができました。

次の記事では、ゾーンにリソースを割り当てる方法(raw、CPU、RAM)と、ホスト間でゾーンを移行する方法について説明します。

ご清聴ありがとうございました。

Source: https://habr.com/ru/post/J123221/


All Articles