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