CentOS 6 - コンテナ型の仮想化ソフトウェア、OpenVZをインストールする話

コンテナ型の仮想化ソフト、OpenVZ のインストール方法とVE(仮想サーバ)の生成方法を紹介します。

 

はじめに

作業環境
OS:CentOS 6.7 (最小インストール)

 

手順

1.はじめに

2.vzkernelのインストール方法

3.VEの作成方法

4.VEの操作方法

5.ネットワークの設定

 

 

1.はじめに

 

SELinuxを無効化

OpenVZを用いた仮想化環境を構築するにあたり、SELinuxの無効化をオススメします。

# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
# setenforce 0

 

iptablesを初期化

iptablesのルールを無くします。

# service iptables stop
# iptables-save > /etc/sysconfig/iptables
# service iptables start

 

パッケージの更新とインストール

OpenVZを用いた仮想化環境の構築に必要なパッケージをインストールします。

# yum install wget vim

パッケージを全て、最新の状態に更新します。

# yum update

 

 

2.vzkernelのインストール方法

 

Yumリポジトリを追加

OpenVZのYumリポジトリを追加します。

# wget -P /etc/yum.repos.d/ http://download.openvz.org/openvz.repo
# rpm --import  http://download.openvz.org/RPM-GPG-Key-OpenVZ

 

vzkernelをインストール

Yumリポジトリ「openvz-kernel-rhel6」を指定して、vzkernelをインストールします。

# yum --enablerepo=openvz-kernel-rhel6 install -y vzkernel

 

カーネルの起動順序を確認します。以下のコマンドで「default=0」、titleの1行目が「OpenVZ」になっていることを確認します。

# egrep "^default|^title" /boot/grub/menu.lst
default=0
title OpenVZ (2.6.32-042stab113.11)
title CentOS (2.6.32-573.18.1.el6.x86_64)

 

OpenVZサーバをvzkernelで起動させるため、再起動します。

# shutdown -fr now

 

vzkernelで起動していることを確認します。

# uname -sr
Linux 2.6.32-042stab113.11

 

 

管理用コマンドをインストール

VEの管理に必要になるコマンドをインストールします。

# yum --enablerepo=openvz-utils install vzctl vzquota ploop

「vztop」は、RPMでインストールします。

# rpm -Uvh http://www.eomy.net/linux/vzprocps-3.2.3-8.20.swsoft.x86_64.rpm

 

VZを起動

VZカーネルで起動したことを確認し終えたら、OpenVZ(vz)を起動します。

# service vz start
vz-postinstall: /etc/sysctl.conf: set net.ipv4.ip_forward = 1
vz-postinstall: /etc/sysctl.conf: add net.ipv4.conf.default.proxy_arp = 0
vz-postinstall: /etc/sysctl.conf: set kernel.sysrq = 1
vz-postinstall: /etc/sysctl.conf: add net.ipv4.conf.default.send_redirects = 1
vz-postinstall: /etc/sysctl.conf: add net.ipv4.conf.all.send_redirects = 0
Starting OpenVZ:                                           [  OK  ]
Applying OOM adjustments:                                  [  OK  ]
Bringing up interface venet0:                              [  OK  ]

 

 

3.VEの作成方法

 

OSテンプレートをダウンロード

VEの作成には、OSのテンプレートが必要です。はじめにインストールしてします。

# wget -P /vz/template/cache/ http://download.openvz.org/template/precreated/centos-7-x86_64-minimal.tar.gz

 

VEを作成

VEの作成には、「CTID」「layout type」「ostemplate」の3つを指定する必要があります。

# vzctl create [CTID] --layout [layout type] --ostemplate [ostemplate]

「CTID」は、好きな3桁以上の数字にしてください。「layout type」は、simfs か ploop を選ぶことができます。「ostemplate」は、一つ前の項目でダウンロードしたファイルを指定します(拡張子部分 .tar.gz は省略してください。)

# vzctl create 100 --layout ploop --ostemplate centos-7-x86_64-minimal

 

 

VEの各種設定

ホスト名を設定できます。

# vzctl set [CTID] --hostname [ホスト名] --save
CT configuration saved to /etc/vz/conf/[CTID].conf

 

IPアドレスを設定できます。

# vzctl set [CTID] --ipadd [IPアドレス] --save
CT configuration saved to /etc/vz/conf/[CTID].conf

 

DNSサーバを設定できます。

# vzctl set [CTID] --nameserver 8.8.8.8 --save
CT configuration saved to /etc/vz/conf/[CTID].conf

 

VEの自動起動を有効化できます。OpenVZサーバの起動時にVEも起動するようになります。

# vzctl set [CTID] --onboot yes --save
CT configuration saved to /etc/vz/conf/[CTID].conf

 

rootユーザのパスワードを設定できます。

# vzctl set [CTID] --userpasswd root:[任意のパスフレーズ]

 

ディスク容量の割り当てを設定できます。

# vzctl set [CTID] --diskspace 5G:6G --save

5G:6G = [ソフトリミット]:[ハードリミット]

ハードリミット = ディスク使用量の絶対的な上限

ソフトリミット = 指定容量を一定期間超えるとハードリミットに達しなくてもファイルの新規作成などができなくなる

 

メモリとスワップの割り当てができます。

# vzctl set [CTID] --ram 512M --swap 4096M --save
CT configuration saved to /etc/vz/conf/[CTID].conf

 

メモリの最低割り当てができます。(最低限割り当てられるメモリサイズを保証するもの)

# vzctl set [CTID] --vmguarpage 256M --save
CT configuration saved to /etc/vz/conf/[CTID].conf

 

メモリの最大割り当てができます。(最大で利用できるメモリサイズ)

# vzctl set [CTID] --privvmpages 512M --save
CT configuration saved to /etc/vz/conf/[CTID].conf

 

RAMディスク(tmpfs)の割り当てができます。

# vzctl set [CTID] --dcachesize 512M --save
CT configuration saved to /etc/vz/conf/[CTID].conf

 

RAMディスク(tmpfs)と共有メモリへの最大割り当てができます。

# vzctl set [CTID] --shmpages 512M --save
CT configuration saved to /etc/vz/conf/[CTID].conf

 

VEが使用するCPU数を設定できます。

# vzctl set [CTID] --cpus 2 --save
CT configuration saved to /etc/vz/conf/[CTID].conf

 

CPUに最低限割り当てるリソースと最大限割り当てるリソースを設定できます。

OpenVZサーバのリソース以下のコマンドで確認します。
# vzcpucheck
Current CPU utilization: 1000
Power of the node: 360003

# vzctl set [CTID] --cpuunits 3600 --cpulimit 200 --save
CT configuration saved to /etc/vz/conf/[CTID].conf

cpuunits:最低限割り当てるリソース
cpulimit:最大限割り当てるリソース
※cpuunitsの値(3600)は、OpenVZサーバの Power of the node の 1%(360003÷100=3600)
※cpulimitの値(200)は、VEのCPU数×100% (cpulimitは1コアあたり、何%使用させるか指定できます。)

 

その他リソースを割り当てができます。

稼働プロセス数の上限
# vzctl set [CTID] --numproc 200 --save
CT configuration saved to /etc/vz/conf/[CTID].conf

ファイルディスクリプタ数の上限(オープンファイル数)
# vzctl set [CTID] --numfile 1024 --save
CT configuration saved to /etc/vz/conf/[CTID].conf

VEのTCP通信送信バッファ
# vzctl set [CTID] --tcpsndbuf 1280000 --save
CT configuration saved to /etc/vz/conf/[CTID].conf

VEのTCP通信受信バッファ
# vzctl set [CTID] --tcprcvbuf 1280000 --save
CT configuration saved to /etc/vz/conf/[CTID].conf

 

 

4.VEの操作方法

 

VEの起動・停止・再起動・削除

起動

# vzctl start [CTID]

 

停止

# vzctl stop [CTID]

 

再起動

# vzctl restart [CTID]

 

削除

# vzctl destroy [CTID]
Destroying container private area: /vz/private/[CTID]
Container private area was destroyed

削除はすると、設定ファイルが「/etc/vz/conf/[CTID].conf.destroyed」になり残ります。

 

OpenVZサーバからVE内でコマンドを実行

OpenVZサーバからVE内部でコマンドを実行します。

# vzctl exec [CTID] "[コマンド]"

※コマンドをダブルコーテーションで囲ってください。

 

VEのステータスを確認

稼働中のVEがない場合

# vzlist
      CTID      NPROC STATUS    IP_ADDR         HOSTNAME

 

稼働中のVEがある場合

# vzlist
      CTID      NPROC STATUS    IP_ADDR         HOSTNAME
       100         30 running   192.168.0.1     hoge1
       101         30 running   192.168.0.2     hoge2

 

停止中の仮想サーバを含めて表示させる場合

# vzlist -a
      CTID      NPROC STATUS    IP_ADDR         HOSTNAME
       100         30 running   192.168.0.1     hoge1
       101         30 running   192.168.0.2     hoge2
       102         30 stopped   192.168.0.3     hoge3

 

 

VEにコンソール接続

OpenVZサーバからVEにログインできます。

# vzctl enter [CTID]
entered into CT [CTID]
[root@hoge1 /]#

 

 

5.ネットワークの設定

 

IPv4転送を有効化

IPv4転送を有効にします。

# sed -i "s/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g" /etc/sysctl.conf
# sysctl -p

 

NATルールを追加

VEとOpenVZサーバを別セグメントに設定した場合、OpenVZサーバでNATしなければインターネットに接続できない。以下は、VEが「192.168.0.0/24」空間のIPアドレスを使っていることを想定した設定です。

# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

 

NATルールを削除

iptablesでnum番号を確認します。

# iptables -t nat -L --line-numbers
Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination
1    MASQUERADE  all  --  192.168.0.0/24       anywhere

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

 

確認したnum番号の中で不要なものを削除する

# iptables -D POSTROUTING [num番号] -t nat

 

 

 

以上、おわり