openvzをLennyで。

 過日にetch下でのテストを書いたが、今回はlenny下で実可動させてみる。対象はWebサーバで、うちのバイク分室・セリオ専科など現在の実稼働ドメイン、それから空転状態で休眠しているイリヤ鯖である。

 留意点は過去のページと同じです。

参考サイト(増えました)

準備

apt-lineを用意しよう。

# vi /etc/apt/sources.list
----------------------------------------------
# openvz
deb http://download.openvz.org/debian-systs lenny openvz

 上の参考ページの方も書かれていますが、DebianではOSテンプレートが既にあるのでそっちの心配はいらないです。

 あれ?公式リポジトリがある?むむむ、もしかして上のは無理にはいらないかも。

作業開始

インストール

 うちはこんなん入ってます。

# dpkg -l|grep vz
ii  linux-image-2.6.26-2-openvz-686          2.6.26-21lenny4                Linux 2.6.26 image on PPro/Celeron/PII/PIII/
ii  linux-image-openvz-686                   2.6.26+17+lenny1               Linux image on PPro/Celeron/PII/PIII/P4, Ope
ii  vzctl                                    3.0.23-1dso1                   OpenVZ - server virtualization solution - co
ii  vzctl-ostmpl-debian-5.0-i386-minimal     20090121                       OpenVZ - OS Template debian-5.0-i386-minimal
ii  vzquota                                  3.0.12-1dso1                   OpenVZ - server virtualization solution - qu
# update-grub
# shutdown -r now

展開

/home/vz配下にしたので、オリジナルのツリーをもらってきた。

# cd /var/lib/
# tar pcvf /home/vz.tar vz
# cd /home
# tar -xvf vz.tar
# ls -ltr

設定

/etc/vz/vz.conf

#VE_ROOT=/var/lib/vz/root/$VEID
#VE_PRIVATE=/var/lib/vz/private/$VEID
VE_ROOT=/home/vz/root/$VEID
VE_PRIVATE=/home/vz/private/$VEID

/etc/vz/conf/ve-vps.basic.conf-sample

初期ディスク容量である。いじってもいいがもっと簡単な方法を示しておく。つまり 稼働後にコマンド一発で変えられる

# vzctl set 101 --diskspace 12G:13G --save
# vzquota show 101
   resource          usage       softlimit      hardlimit    grace
   :

うおお、こんな方法があったのか。参考になります(汗

ちなみに現在既に動いているノードがあるなら、使用量をこれで確認もできる。

# vzctl exec 101 df -h
Filesystem            Size  Used Avail Use% Mounted on
simfs                  14G  5.7G  8.4G  41% /
tmpfs                 755M     0  755M   0% /lib/init/rw
tmpfs                 755M     0  755M   0% /dev/shm
#

もし上記でディスク容量を少し増やしたいなら、こうすればいいわけだ。ちなみに左側がSoftLimit、右側がHardLimit。意味を知りたい人は quota について調べるといいが、まぁ要するに容量制限である。

# vzctl set 101 --diskspace 10G:11G --save

手動でいじるなら以下を。でも大変そうだ。

#DISKSPACE="1048576:1153024"
DISKSPACE="1572864:1730151"

CPUパワー制御

参考ページにFair CPU Schedulerというのがあった。さっそく参考にさせてもらいます。以下少し引用

   Fair schedulerはそれぞれのVEにCPUリソースを割り当て、管理を行います。
   これは二段階に分けて行われます。
   まず第一段階で、VEのcpuunitsの値を元にリソースを割り当てます。
   次の第二段階で、VE上で動いているプロセスに割り当てます。(この時は通常のlinuxのプロセス優先順に従います)


CPU使用率を以下二つのパラメーターで定義します。
cpuunits:最低保障されるリソース
cpulimit:最大リソース

まずCPU使用率を確認
# vzcpucheck
Current CPU utilization: 7000
Power of the node: 149784

cpuunitsを1%
cpulimitを3%とするには

# vzctl set 101 --cpuunits 1497 --cpulimit 3 --save
Setting CPU limit: 3
Setting CPU units: 1497
Saved parameters for VE 101

もちろん他にも稼働中にいろいろといじれる。なお、このへんは参考ページの丸写しであるが細部はうちの環境にあわせて変えてあります。

# vzctl set 101 --vmguarpage 256M       # メモリの最低割り当て保障値 (ギャランティ)
# vzctl set 101 --privvmpages 1G        # メモリの利用最大値
# vzctl set 101 --shmpages 512M         # 共有メモリとtmpfsへの上限
# vzctl set 101 --numproc 192           # プロセス数上限 (No more processes.と出たときに)
# vzctl set 101 --numfile 3072          # ファイルオープン数上限

# vzctl set 101 --tcpsndbuf 1280000     # TCP通信送信バッファ
# vzctl set 101 --tcprcvdbuf 1280000    # TCP通信受信バッファ
# vzctl set 101 --dcachesize 50M        # /dev/shm/ 割当量

仮想マシン作るぞ:D

マシン名は以前と同じく 1isetta にしよう。今回、IPは 192.168.1.6 とする。

# vzctl create 101 --ostemplate debian-5.0-i386-minimal --config vps.basic
# vzctl set 101 --hostname isetta --save
# vzctl set 101 --ipadd 192.168.1.6 --save
# vzctl set 101 --nameserver 192.168.1.7 --save
# vzctl set 101 --onboot yes --save
# vzctl start 101
# vzlist
      VEID      NPROC STATUS  IP_ADDR         HOSTNAME
       101          4 running 192.168.1.6    isetta
#

ネームサーバが変なところにあるのは以下の理由による。

入ってみよ〜:D

lenny上にlennyがいる……ちゃんとパッケージシステムもうごくDebian systemだ!@@

# vzctl enter 101
entered into VE 101
# ls
bin   dev  home  media  opt   root  selinux  sys  usr
boot  etc  lib   mnt    proc  sbin  srv      tmp  var
# cat /etc/issue
Debian GNU/Linux 5.0 \n \l

#

ネットワークが動いてない時

 たぶんip forward関係のフラグがたってない。よくわかんないなら、このへんを適当にチェックしてから再起動しておこう。何食わぬ顔で動き出すはずだ。

# vi /etc/sysctl.conf
 net.ipv4.ip_forward = 1
 net.ipv4.conf.all.forwarding = 1
 net.ipv4.conf.eth0.forwarding = 1
 net.ipv4.conf.eth1.forwarding = 1

 net.ipv4.conf.all.proxy_arp = 1
 net.ipv4.conf.eth0.proxy_arp = 1
 net.ipv4.conf.eth1.proxy_arp = 1

 この後、apache2と周辺の小さなもの、sync用のftpd、mutt環境(問い合わせや感想メールはよそに配送せずここに集約されている)と設定ファイルをいれて動作確認した。

 最後に本Webを見てログと引き比べてチェック完了。

最後に

 現在、一晩過ぎたが集約は無事動作しているようだ。ntpの問い合わせ先は7番で間隔は1分にしてあるが、問題なければ少し伸ばしたい。

 これでしばらく様子見である。


1.wikipedia:(BMW・イセッタ) :D