OpenVZ安装步骤
OpenVZ 是唯一可用于unibilling生产用的服务器虚拟技术。目前全球有多套unibilling运行于OpenVZ container。经过3年多的VOIP连续运营生产,证实绝对可靠稳定。
在新的服务器上用如下步骤安装openVZ:
导入 OpenVZ yum源
cd /etc/yum.repos.d
wget http://download.openvz.org/openvz.repo
rpm –import http://download.openvz.org/RPM-GPG-Key-OpenVZ
wget http://download.openvz.org/openvz.repo
rpm –import http://download.openvz.org/RPM-GPG-Key-OpenVZ
下载openVZ内核及头文件安装包
mkdir -p /usr/src/files
cd /usr/src/files
wget http://download.openvz.org/kernel/branches/rhel5-2.6.18/028stab068.3/ovzkernel-2.6.18-164.11.1.el5.028stab068.3.i686.rpm
wget http://download.openvz.org/kernel/branches/rhel5-2.6.18/028stab068.3/ovzkernel-devel-2.6.18-164.11.1.el5.028stab068.3.i686.rpm
安装openVZ内核及头文件
rpm -ihv ovzkernel*.rpm
配置boot loader确保使用openVZ的内核启动
vi /etc/grub.conf
配置 sysctl
确保 /etc/sysctl.conf 文件中包含如下信息:
# On Hardware Node we generally need # packet forwarding enabled and proxy arp disabled net.ipv4.ip_forward = 1 net.ipv6.conf.default.forwarding = 1 net.ipv6.conf.all.forwarding = 1 net.ipv4.conf.default.proxy_arp = 0 # Enables source route verification net.ipv4.conf.all.rp_filter = 1 # Enables the magic-sysrq key kernel.sysrq = 1 # We do not want all our interfaces to send redirects net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0 编辑完毕保存,运行如下命令使之生效: sysctl -p 禁用 SELinux 修改/etc/sysconfig/selinux
文件,使其包含信息:SELINUX=disabled 重新启动linux shutdown -r now 机器重新启动后,运行 uname -r检查是否已经是openVZ的内核 安装openvz工具集 yum install vzquota yum install vzctl-lib yum install vzctl yum install vzyum yum install vzpkg yum install vzrpm43-python yum install vzrpm44-python启动OpenVZ服务/sbin/service vz start安装操作系统模板文件查找系统中可用的操作系统模板 yum search vztmpl [root@tpd620 /]# yum search vztmpl Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * addons: mirror.ii.uib.no * base: mirror.ii.uib.no * extras: mirror.ii.uib.no * openvz-kernel-rhel5: openvz.proserve.nl * openvz-utils: openvz.proserve.nl * updates: mirror.ii.uib.no ====================== Matched: vztmpl ======================= vztmpl-centos-4.i386 : OpenVZ template metadata for centos-4 i386. vztmpl-fedora-7.i386 : OpenVZ template metadata for fedora-7 i386. vztmpl-fedora-core-3.i386 : OpenVZ template metadata for fedora-core-3 i386. vztmpl-fedora-core-4.i386 : OpenVZ template metadata for fedora-core-4 i386. vztmpl-fedora-core-5.i386 : OpenVZ template metadata for fedora-core-5 i386. vztmpl-fedora-core-6.i386 : OpenVZ template metadata for fedora-core-6 i386. [root@tpd620 /]#安装centos linux操作系统模板 yum install vztmpl-centos-4 为操作系统模板建立缓存 vzpkgcache该命令将建立 centos-4-i386-minimal.tar.gz 和 centos-4-i386-default.tar.gz vzpkgcache centos-4-i386-minimal 将只建立 centos-4-i386-minimal.tar.gz vzpkgcache centos-4-i386-default 将只建立 centos-4-i386-default.tar.gz查看系统中存在的操作系统缓存: [root@c8 ~]# vzpkgls centos-4-i386-default centos-4-i386-minimal 建立OpenVZ节点container准备配置文件 为方便起见,平分Host机器的内存和CPU cd /etc/sysconfig/vz-scripts/ vzsplit -n 3 -f vps.mytest上述命令将均分系统资源为3等份,产生一个例子配置文件 验证该文件的有效性:vzcfgvalidate ve-vps.mytest.conf-sample 创建节点VPS vzctl create 112 --ostemplate centos-4-i386-minimal --config vps.mytest 配置该VPS vzctl set 112 --hostname unibillingsrv1 --save vzctl set 112 --ipadd 207.182.xxx.xxx --save vzctl set 112 --userpasswd root:xxxxxxxxx vzctl set 112 --nameserver 209.190.xxx.xxx --save vzctl set 112 --onboot yes --save vzctl start 112 vzctl exec 112 service sshd start vzctl enter 112 vzctl stop 112 配置VPS硬盘容量等参数 grep DISK_QUOTA /etc/sysconfig/vz df /vz vi /etc/sysconfig/vz-scripts/112.conf在该文件中添加 DISK_QUOTA=no grep DISK_QUOTA /etc/sysconfig/vz-scripts/112.conf vzctl stop 112vzctl start 112 vzctl exec 112 dfvzctl set 112 --diskinodes 75000000:79000000 --savevzctl set 112 --quotatime 600 --savevzctl exec 112 dfvzctl exec 112 stat -f /vzctl set 112 --quotaugidlimit 100 --save vzctl stop 112 vzctl start 112vzctl exec 112 rpm -q quotavzyum 112 install quotavzquota stat 112 -t 向新建的vps中安装yum等工具 vzyum 112 install yumvzyum 112 install diffutils 错误处理 若vzctl enter进入节点时出现错误,或ssh无法进入节点,需要运行如下命令: vzctl exec 112 "cd /dev; /sbin/MAKEDEV pty; /sbin/MAKEDEV tty; /sbin/MAKEDEV generic"OpenVZ官方文档建议通过桥接方式来搞定IPv6,虽然也提供给VPS分配IPv6地址的方法,也提到需要通过修改sysctl.conf文件来处理邻居发现和路由发现等协议,但是文档并未提及如何修改sysctl.conf文件, 本文在不使用桥接的环境中,使vps可以与物理机共用同一段IPv6地址。 修改/etc/sysctl.conf文件,增加
12345# IPv6 Packet Forwarding and Proxy NDP
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.default.proxy_ndp = 1
net.ipv6.conf.all.proxy_ndp = 1
给VPS增加IPv6地址
1vzctl set <id> --ipadd <ipv6_addr> --save
删除VPS的IPv6地址
1vzctl set <id> --ipdel <ipv6_addr> --save
OpenVZ中要迁移vps主机,只需停止vps,将vps主机文件及配置文件备份至其他主机即可。
12345cd
/vz/private
vzctl stop 102
tar
cf - 102/ |
ssh
-l root 10.255.7.251
"(cd /vz/private; tar xf -)"
cd
/etc/vz/conf
scp
102.conf root@10.255.7.251:
/etc/vz/conf/
在10.255.7.251主机执行
1vzctl start 102
即可重新启动vps。要让VPS支持OpenVPN,让vps支tun/tap是第一步,如果在租用别人的vps,直接找客服要求增加tun/tap即可,要是自己搞的vps呢,那么该找谁要呢,参考OpenVZ官方文档就很容易搞定了:http://wiki.openvz.org/VPN_via_the_TUN/TAP_device 大概3步: 1、确定本机是否已经正确载入tun模块
1lsmod | grep tun
2、如果没有任何返回,执行
1modprobe tun
3、让vps对tun设备拥有读写权限
1vzctl set 101 --devnodes net/tun:rw --save
记得下次重启让系统自动载入tun模块。对于RH系列的系统可以在/etc/sysconfig/modules目录下增加tun.modules文件,内容如下:
12345678#!/bin/sh
echo
-n
"Loading TUN/TAP module..."
if
/sbin/modprobe
tun
then
echo
"SUCCESS"
else
echo
"FAILURE"
fi
给文件增加执行权限。
1chmod +x /etc/sysconfig/modules/tun.modules
----------------------------------------------------
安装OpenVZ 获得OpenVZ yum安装源 # cd /etc/yum.repos.d # wget http://download.openvz.org/openvz.repo # rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ 安装OpenVZ核心以及头文件 # yum install ovzkernel[-flavor] 修改启动所使用的内核为OpenVZ内核,使OpenVZ内核为默认启动内核 vi /etc/grub.conf 将类似下面的内容 title Fedora Core (2.6.8-022stab029.1) root (hd0,0) kernel /vmlinuz-2.6.8-022stab029.1 ro root=/dev/sda5 quiet rhgb vga=0x31B initrd /initrd-2.6.8-022stab029.1.img 修改为类似这样 title OpenVZ (2.6.8-022stab029.1) root (hd0,0) kernel /vmlinuz-2.6.8-022stab029.1 ro root=/dev/sda5 initrd /initrd-2.6.8-022stab029.1.img 或直接在里面寻找类似开头为 title CentOS (2.6.18-194.3.1.el5.028stab069.6) 的项目,并且把default改为他的下标,下标从0开始 修改LINUX网络配置文件 /etc/sysctl.conf # On Hardware Node we generally need # packet forwarding enabled and proxy arp disabled net.ipv4.ip_forward = 1 #修改 net.ipv6.conf.default.forwarding = 1 #添加 net.ipv6.conf.all.forwarding = 1 #添加 net.ipv4.conf.default.proxy_arp = 0 #添加 # Enables source route verification net.ipv4.conf.all.rp_filter = 1 #修改 # Enables the magic-sysrq key kernel.sysrq = 1 #修改 # We do not want all our interfaces to send redirects net.ipv4.conf.default.send_redirects = 1 #添加 net.ipv4.conf.all.send_redirects = 0 #添加 关闭SELinux: SELINUX=disabled 重启LINUX #reboot 安装OpenVZ管理工具 # yum install vzctl # yum install vzquota # yum install vzyum 用到什么工具就安装什么工具,具体可以使用# yum search vz*搜索一下 启动OpenVZ服务 # /sbin/service vz start 使用OpenVZ & 建立VPS 安装操作系统模板 由于VZ是半虚拟化的,所以VZ和VM不同的是VZ需要系统模板,而不是VM那样只需要一个ISO文件就可以安装 搜索系统模板 # yum search vztmpl 在搜索出来的结果中选用你想安装的操作系统 # yum install vztmpl-centos-4 -y 为操作系统模板建立缓存 在我装的最小化CENTOS中,此步要下载很多包,需要很长时间完成 # vzpkgcache 该命令将建立centos-4-i386-minimal.tar.gz和centos-4-i386-default.tar.gz文件 或 # vzpkgcache centos-4-i386-minimal 建立 centos-4-i386-minimal.tar.gz # vzpkgcache centos-4-i386-default 建立 centos-4-i386-default.tar.gz 出现Cache file centos-4-i386-default.tar.gz [120M] created.表示创建成功 注意:本次步骤可能会出现如下错误 cp: cannot stat `/etc/sysconfig/vz-scripts//ve-vps.basic.conf-sample': No such file or directory ERROR: Can't copy VPS config 解决方法:进入/etc/sysconfig/vz-scripts/目录,将ve.basic.conf-sample 拷贝一份重命名为ve-vps.basic.conf-sample 查看系统中已经存在的操作系统缓存 # vzpkgls 创建OpenVZ操作系统节点(VPS) 准备配置文件 平分主机系统资源(当然,如果你对配置文件的修改很熟悉也可以自己定制) cd /etc/sysconfig/vz-scripts/ vzsplit -n 3 -f vps.zenw.org 这样,系统资源就被平均分成了3分,并且产生了一个配置文件示例 验证配置文件有效性 vzcfgvalidate ve-vps.zenw.org.conf-sample 创建VPS节点 vzctl create 100 --ostemplate centos-4-i386-minimal --config vps.zenw.org 其中100是该节点的编号,可以自己定义 配置该VPS 设置VPS的hostname vzctl set 100 --hostname zenw.org --save 设置VPS的ip vzctl set 100 --ipadd 192.168.xxx.xxx --save 设置VPS的管理员帐号和密码 vzctl set 100 --userpasswd root:xxxxxxxxx 设置VPS的DNS服务器 vzctl set 100 --nameserver 8.8.8.8 --save 设置VPS自启动 vzctl set 100 --onboot yes --save 启动VPS节点 vzctl start 100 执行VPS内部的命令(这里是开启VPS的ssh服务) vzctl exec 100 service sshd start 加入VPS节点 vzctl enter 100 停止VPS节点 vzctl stop 100 设置VPS参数 修改VPS节点的配置文件 vim /etc/sysconfig/vz-scripts/100.conf 在文件中添加或修改 DISK_QUOTA=no 重启VPS节点 vzctl restart 100 查看当前磁盘大小 vzctl exec 100 df 设置磁盘大小 vzctl set 100 --diskinodes 75000000:79000000 --save vzctl set 100 --quotatime 600 --save 查看修改后的磁盘大小 vzctl exec 100 df vzctl exec 100 stat -f / vzctl set 100 --quotaugidlimit 100 --save vzctl restart 100 vzctl exec 100 rpm -q quota vzyum 100 install quota vzquota stat 100 -t 为VPS节点安装yum工具或其他工具 vzyum 100 install <软件名称> vzyum 100 install yum 另外 如果vzctl enter进入节点时出现错误,或无法ssh节点,需要运行以下命令: vzctl exec 112 "cd /dev; /sbin/MAKEDEV pty; /sbin/MAKEDEV tty; /sbin/MAKEDEV generic" 更多阅读 http://www.amcoding.com/steps/openvz/openvz%E5%AE%89%E8%A3%85%E6%AD%A5%E9%AA%A4/
------------------------------------------------------
OpenVZ的VPS里不支持nat表?
引自: http://www.wenzk.com/archives/1431IPv6 works best when veth devices are used to bridge VEs to their host. An IPv6 compliant method of using veth interfaces for VEs can be found in the VEs and HNs in same subnets article.venet devices are not fully IPv6 compliant, but still works if you statically assign IPv6 addresses. They do not properly support MAC addresses and consequently link local addresses and can not play nice with neighbor discovery or router advertisements, router discovery, or auto-conf. They also require additional modifications to the layer 3 forwarding behaviour of the host via sysctl.
Contents[hide] |
[edit]venet example
(tests done on CentOS kernel 2.6.18-194.26.1.el5.028stab079.2)
[edit]Adding an IPv6 address to a container
# vzctl set <id> --ipadd <ipv6_addr> --save
In my tests, the container had to be restarted before it would respond to ICMP6 echo requests.
[edit]Removing an IPv6 address from a container
# vzctl set <id> --ipdel <ipv6_addr> --save
Removal is effective immediately and the host stops replying to echo requests.
我先用IPMASQ,
/sbin/ipchains -A forward -j MASQ -i eth0:0 -s 10.100.100.236/32
eth0:0是我伪装的地址。
然后转发:
/usr/sbin/ipmasqadm portfw -a -P tcp -L a.b.c.d 80 -R 10.100.100.236 80
a.b.c.d 是eht0:0的地址。
policy应该没问题。追踪到包已经从eth0:0进来,然后就什么都没有了!
10.100.100.236能ping通a.b.c.d
会不会和防止IP欺骗有关?
No comments:
Post a Comment