[Linux] Running Oracle Linux 5 applications in Oracle Cloud Infrastructure using lxc.

原文はこちら。
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を使います。
# yum install lxc
...
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  #blocks  name
   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  #blocks  name
   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 の行はコメントアウトもしくは削除します。
#lxc.network.hwaddr =
スクリプトが生成するインターフェースのMACアドレスを利用したいので、hwaddrの行をコメントアウトすることをお奨めします。
直接コンテナに効率的にネットワークインターフェースをパススルーするためにvethをphysに変更します。

コンテナを起動します。
$ lxc-start -n ol5.1
コンソールに接続します。
$ lxc-console -n ol5.1
デフォルトの root パスワードは root です。コンテナ作成後変更してください。
コンソールを終了するには、以下をタイプします。
ctrl-a q
以下の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コンテナがアクティブかを確認するには、以下のコマンドを使います。
$ lxc-ls --active
このコンテナは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 件のコメント:

コメントを投稿