OpenVZ在Debian Etch上为Web服务器
介绍
虚拟化是不错的! 这是服务器的一个很好的做法,因为它使事情更加安全,可扩展,可替代和可复制。 所有这一切的代价是增加复杂性。
本指南是在安装具有2个双核opterons(64位),2个相同磁盘(用于RAID)和一个内存负载的Supermicro机器时编写的。 为什么OpenVZ而不是XEN或最近的KVM内核模块? 那么,XEN对于64位架构来说并不是非常稳定的,而且由于其复杂性,它具有相当多的开销(每个VM运行自己的内核)。 KVM非常简单,但限制您将内核作为一个进程运行,因此VM无法从多核系统中受益。
使用OpenVZ,主机环境只运行一个内核_and_所有的虚拟机,这使得安装精简,是Web服务器的良好候选。
安装主机系统
首先安装Etch(确保使用安装程序设置RAID)。
您可能想摆脱您的根目录中的一些混乱的目录和链接(和指南的其余部分一样,以root用户身份):
cd /
rm cdrom
unlink vmlinuz.old
unlink vmlinuz
rmdir selinux/
rmdir initrd
unlink initrd.img.old
rmdir opt
rmdir srv/
现在我们要编译一个自定义的OpenVZ启用内核,我们在OpenVZ站点上遵循本指南 。 简要概述我们做了什么:
apt-get update
apt-get install linux-source-2.6.18 kernel-patch-openvz vzctl vzquota # this command might need you to acknoledge
cd /usr/src
tar xjvf linux-source-2.6.18.tar.bz2
cd linux-source-2.6.18
cp /boot/config-2.6.18-3-amd64 .config
aptitude install kernel-package # you need it in the next line
make-kpkg --append_to_version=-1-openvz --added_patches=openvz --revision=1 kernel_image
cd ..
dpkg -i linux-image-2.6.18-1-openvz_1_amd64.deb
update-initramfs -c -k 2.6.18-1-openvz
update-grub
然后(在你可能将/boot/grub/menu.lst
修改为默认的正确的内核之后),你可以重新启动。
使用OpenVZ Enbabled内核重新启动后,检查是否全部工作:
ifconfig # should list your interfaces and an additional "venet" inteface
cat /proc/vz/* # should show somethings (not very important yet what it shows)
cat /proc/cpuinfo # se that your CPUs are up
cat /proc/mdstat # RAIDs working
lsmod # should show some modules starting with the letters "vz"
制作虚拟专用服务器(VPS)
不,我们设置,从默认最小模板启动VPS(您可以在/ var / lib / vz / template / cache
中找到它):
vzctl create 101 --ostemplate debian-3.1-amd64-minimal --config vps.basic
vzctl set 101 --onboot yes --save
vzctl set 101 --hostname test101.mytest.org --save
vzctl set 101 --ipadd 10.0.0.101 --save
vzctl set 101 --numothersock 120 --save
vzctl set 101 --nameserver 10.0.0.2 --save
vzctl set 101 --privvmpages 500000:750000 --save # give it some memory CHECKME
vzctl start 101
vzctl exec 101 passwd
然后你可以连接VPS
ssh 10.0.0.101
,并注意丰富多彩的提示...
这个模板是一个Sarge(3.1)模板,我想要它是Etch(4.0),所以当以root身份登录VPS时:
nano /etc/apt/sources.list # edit it to match the sources.list on you host (Etch) install
aptitude update
aptitude dist-upgrade
现在尝试您的新VPS,并使其可行,安装您喜欢的软件包,因为该系统以后将作为进一步的VPS的基础。
接下来,我们从刚刚定制的VPS创建一个模板,这是一件容易的事情:
vzctl stop 101 # stop it
rm -f /var/lib/vz/private/101/etc/ssh/ssh_host_* # remove the keys (new ones will be generated on first boot)
cd /var/lib/vz/private/101/
tar czf /var/lib/vz/template/cache/debian-etch-20061218-amd64.tar.gz .
Borat会说:“好,我喜欢!”
不,我们可以像以前一样设置和运行一些额外的VPS,但现在稍微修改:
vzctl create 102 --ostemplate debian-etch-20061218-amd64 --config vps.basic
vzctl set 102 --onboot yes --save
vzctl set 102 --hostname test102.mytest.org --save
vzctl set 102 --ipadd 10.0.0.102 --save
vzctl set 102 --numothersock 120 --save
vzctl set 102 --nameserver 10.0.0.2 --save
vzctl set 102 --privvmpages 500000:750000 --save # give it some memory CHECKME
vzctl start 102
vzctl exec 102 passwd
和(是的,我看到没有太多有趣的变化)...
vzctl create 103 --ostemplate debian-etch-20061218-amd64 --config vps.basic
vzctl set 103 --onboot yes --save
vzctl set 103 --hostname test103.mytest.org --save
vzctl set 103 --ipadd 10.0.0.103 --save
vzctl set 103 --numothersock 120 --save
vzctl set 103 --nameserver 10.0.0.2 --save
vzctl set 103 --privvmpages 500000:750000 --save # give it some memory CHECKME
vzctl start 103
vzctl exec 103 passwd
并启动第一个VPS( vzctl start 101
),因为我们把它脱机使用它作为我们的模板的基础,记得吗?
现在我们有3个VPS运行。 用vzlist
测试,输出:
VEID NPROC STATUS IP_ADDR HOSTNAME 101 5 running 10.0.0.101 test101.mytest.org 102 5 running 10.0.0.102 test102.mytest.org 103 5 running 10.0.0.103 test103.mytest.org
VPS需要一些内存,默认情况下给它的方式太少,所以请将VPS confiv文件( /etc/vz/conf/*.conf
)中的vmguarpages,oomguarpages,privvmpages等等设置为一些正常值 - 一个页面等于4Kb。 由于您的VPS限制太多可能会导致执行错误:
vzctl exec 101 cat /proc/user_beancounters
UBC (user_beancounter)的最后一列应该只包含零,如果ohterwise尝试提出一些障碍和限制。 有关各个选项的更多信息,请参阅OpenVZ文档。
现在我们可以继续在VPS上设置我们的apache,postfixes,etceter ...祝你好运!
哦,在我的/etc/vz/conf/101.conf
文件下面,它发臭
,我刚刚提出了一些值,因为我们在user_beancounter中有错误。
cat /etc/vz/conf/101.conf
# Copyright (C) 2000-2006 SWsoft. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # VERSION="2" ONBOOT="yes" # UBC parameters (in form of barrier:limit) # Primary parameters AVNUMPROC="40:40" NUMPROC="255:255" NUMTCPSOCK="80:80" NUMOTHERSOCK="255:255" VMGUARPAGES="500000:9223372036854775807" # Secondary parameters KMEMSIZE="33554432:36909875" TCPSNDBUF="319488:524288" TCPRCVBUF="524288:524288" OTHERSOCKBUF="439296:439296" DGRAMRCVBUF="132096:132096" OOMGUARPAGES="500000:9223372036854775807" # Auxiliary parameters LOCKEDPAGES="32:32" SHMPAGES="8192:8192" PRIVVMPAGES="500000:750000" NUMFILE="10240:10240" NUMFLOCK="100:110" NUMPTY="16:16" NUMSIGINFO="256:256" DCACHESIZE="1048576:1097728" PHYSPAGES="0:9223372036854775807" NUMIPTENT="128:128" # Disk quota parameters (in form of softlimit:hardlimit) DISKSPACE="1048576:1153434" DISKINODES="200000:220000" QUOTATIME="0" # CPU fair sheduler parameter CPUUNITS="1000" OFFLINE_MANAGEMENT="yes" VE_ROOT="/var/lib/vz/root/$VEID" VE_PRIVATE="/var/lib/vz/private/$VEID" OSTEMPLATE="debian-3.1-amd64-minimal" ORIGIN_SAMPLE="vps.basic" HOSTNAME="101.mytest.org" IP_ADDRESS="10.0.0.101" NAMESERVER="10.0.0.2"