原文はこちら。
https://blogs.oracle.com/wim/running-oracle-linux-5-applications-in-oracle-cloud-infrastructure-using-lxc
Oracle Cloud Infrastructureのベアメタルサーバおよび仮想マシンはEFI対応のOSが必要で、お客様がインスタンスに展開するためにOracle Linux 6とOracle Linux 7イメージを提供しています。ほとんどのアプリケーションはこれらのOSバージョンで動作保証およびサポートされていますが、Oracle Linux 4や5を必要とするような古いアプリケーションをお持ちになる場合もあります。現時点では、これらのバージョンをネイティブインスタンスで実行することはできませんが、Oracle Linux 4やOracle Linux 5環境を持つLinux ContainersをOracle Linux上で実行することは可能です。
長年にわたり、Oracle Linuxでは lxc をサポートしてきました。
Oracle Linux containers
https://blogs.oracle.com/wim/oracle-linux-containers
lxc はシステムコンテナに最適で、OS環境全体(基本的には"start /bin/init")を呼び出すことができますが、それに対しDockerは、アプリケーションの起動、つまりアプリケーション・コンテナです。確かにアプリケーションとして /bin/init を実行することはできますが、
lxc はこのモデルに対して少々チューニングされているます。汎用的なlxcのドキュメントは以下にあります。
Oracle® LinuxAdministrator's Guide for Release 7
Linux Containers
https://docs.oracle.com/cd/E52668_01/E54669/html/ol7-containers.html
lxc はOracle Linux 6および7で完全にサポートされており、Oracle Linux 5はlxc上のコンテナOSとして完全にサポートされています。そのため、OCIのLinuxの古いバージョン上で古いアプリケーションを実行する必要のあるお客様にとっては、これは最適な選択肢です。
Oracle Cloud Infrastructureで lxc を使ってみるためには、
- まずOSイメージとしてOracle Linux 7を使うベアメタルサーバもしくはVMインスタンスを作成
- 仮想クラウドネットワークを作成
- ブロック・ボリュームを作成
- ブロック・ボリュームのインスタンスへのアタッチ
などの作業が必要で、こうした作業手順に詳しいものとします。あと、追加でVNIC周りでもう一つ仮定を置きます。最も簡単なネットワーク設定は、別々のセカンダリVNICを各コンテナに割り当て、このVNICをコンテナに渡すことです。簡単なチュートリアルは以下にあります。
Tutorial - Launching Your First Linux Instance
https://docs.us-phoenix-1.oraclecloud.com/Content/GSG/Reference/overviewworkflow.htm
作業手順を纏めると以下のようです。
- コンパートメント、仮想クラウドネットワーク(VCN)、サブネットを作成
- インスタンス(ベアメタルもしくはVM)を作成
- コンテナをホストするブロック・ボリュームを作成
- VNICを作成(コンテナあたり1個)
- lxc のインストール
- コンテナを置くブロックボリュームでファイルシステムを作成し、マウント
- コンテナの作成
lxcをインストールするには、Oracle Linuxインスタンスでyumを使います。
...
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Updating:
lxc x86_64 1.1.5-2.0.9.el7 ol7_latest 231 k
Updating for dependencies:
lxc-libs x86_64 1.1.5-2.0.9.el7 ol7_latest 219 k
Transaction Summary
================================================================================
Upgrade 1 Package (+1 Dependent package)
Total download size: 450 k
Is this ok [y /d/N ]:
|
lxcの最新バージョン(
1.1.5-2.0.9 以上)であることを確認してください。
btrfsをコンテナファイルシステムとして利用するものとします。
ブロックボリュームを作成していれば、/dev/sdbとして確認できるはずです。
Tutorial - Launching Your First Linux Instance
Adding a Block Volume
https://docs.us-phoenix-1.oraclecloud.com/Content/GSG/Tasks/addingstorage.htm
$ cat /proc/partitions
major minor
8 0 48838656 sda
8 1 556988 sda1
8 2 8420348 sda2
8 3 39808260 sda3
8 16 134217728 sdb
|
fdiskでパーティションを作成しますが、今回は簡単のためにボリューム全体を使って1個のパーティションを作成します。
$ fdisk /dev/sdb
Enter n (new partition), p (primary partition) 1 (first partition on new volume) and hit enter twice if you want to use the entire Block Volume.
Enter w to write the partition table out to disk.
|
以下のような表示になることでしょう。
$ cat /proc/partitions
major minor
8 0 48838656 sda
8 1 556988 sda1
8 2 8420348 sda2
8 3 39808260 sda3
8 16 134217728 sdb
8 17 134216704 sdb1
|
btrfsボリュームを作成し、そのボリュームを/containerにマウントします。
$ mkfs.btrfs /dev/sdb1
$ echo "/dev/sdb1 /container btrfs defaults,noatime,_netdev 0 2" > /etc/fstab
$ mount -a
|
lxcのインストールで既にサーバの/containerディレクトリを作成しています。
続いて、以下のドキュメントを参照し、スクリプトを使って、2個目のvNICを構成します。Bare Metalインスタンスに対し、VMインスタンスでは少々違いがあります。
Overview of Networking - Virtual Network Interface Cards (VNICs)
https://docs.us-phoenix-1.oraclecloud.com/Content/Network/Tasks/managingVNICs.htm?Highlight=secondary_vnic
1個目のlxcコンテナを作成します。構文は以下の通りです。
lxc-create -n <container name> -t <template> -- -R <release>
|
- container nameには利用したいコンテナ名を指定します。例えば、ol5とします。
- Oracle Linuxコンテナを作成するために、templateとして"oracle"テンプレートを使います。
- releaseでは、利用したいコンテナOSのリリースを指定します。今回はOracle Linux 5コンテナを作成しているので、-R 5.latest を使います。
- Oracle Linux 4、6、7の場合、同じ "oracle" テンプレートを使いますが、<release> を4.latest、6.latest、7.latestに変更します。
$ lxc-create -n ol5 -t oracle -- -R 5.latest
Host is OracleServer 7.3
Create configuration file /container/ol5/config
Yum installing release 5.latest for x86_64
...
Added container user:oracle password:oracle
Added container user:root password:root
Container : /container/ol5/rootfs
Config : /container/ol5/config
Network : eth0 (veth) on lxcbr0
|
新規作成したコンテナのネットワーク構成を変更するという、追加の構成が必要です。
コンテナ構成ファイルを変更します。
$ vi /container/ol5/config
|
このファイルの以下の行
lxc.network. type = veth
lxc.network.link = lxcbr0
lxc.network.hwaddr = 00:16:3e:xx:xx:xx <- where xx:xx:xx has assigned values
|
を、次のように変更します。
lxc.network. type = phys
lxc.network.link = ens2f0.vlan.1 or ens4 or whatever name of the secondary vnic interface created earlier was called
|
lxc.network.hwaddr の行はコメントアウトもしくは削除します。
スクリプトが生成するインターフェースのMACアドレスを利用したいので、hwaddrの行をコメントアウトすることをお奨めします。
直接コンテナに効率的にネットワークインターフェースをパススルーするためにvethをphysに変更します。
コンテナを起動します。
コンソールに接続します。
デフォルトの
root
パスワードは
root
です。コンテナ作成後変更してください。
コンソールを終了するには、以下をタイプします。
以下のURLを確認すると、コンテナ内のネットワークを構成します。VNICのIP構成をインスタンス内から見つけることができます。
$ wget http: //169 .254.169.254 /opc/v1/vnics/
|
以下は手作業で実施します。
$ ifconfig eth0 10.0.2.3 netmask 255.255.255.0
$ route add default gw 10.0.2.1
|
新たにifcfgスクリプトを作成し、起動時にネットワークを構成するようにします。
/etc/sysconfig/network-scripts/ifcfg-eth0
を編集します。編集例は以下の通りです。
DEVICE= "eth0"
BOOTPROTO=none
ONBOOT= yes
TYPE= "Ethernet"
IPADDR=10.0.2.3
PREFIX=24
GATEWAY=10.0.2.1
DEFROUTE= yes
|
どのlxcコンテナがアクティブかを確認するには、以下のコマンドを使います。
このコンテナはOracle Linux 7上で動作する、サポートされるOracle Linux 5環境ができあがりました。
注:Oracle Linux 5はExtended Supportのフェーズに入っています。詳細は以下をご覧ください。
Oracle Linux 5 Extended Support Data Sheet
http://www.oracle.com/us/technologies/linux/oracle-linux-5-extended-support-3662088.pdf
Oracle Cloud Subscriptionのお客様は、
SubscriptionにExtended Supportが含まれています。追加料金や手数料は不要です。
0 件のコメント:
コメントを投稿