首页 > 代码库 > 虚拟机之openVZ简单基础
虚拟机之openVZ简单基础
OpenVZ的是免费的开源软件,基于GNU GPL协议。
OpenVZ的是基于Linux的容器虚拟化。 OpenVZ在一台服务器上能够创建创建多个安全隔离的Linux容器(也称为虚拟环境或的VPS),实现更好的服务器资源利用率并确保应用程序不冲突。每个容器运行都类似于单台独立的服务器;一个容器可以独立重启并拥有root权限,用户,IP地址,内存,进程,文件,应用程序,系统库以及配置文件。
OpenVZ 修改 Linux 内核将高级的容器化功能加入其中,藉此容许隔离了的进程组别在一个 init 的旗下执行,附带的还有二十多个控制容器资源应用方法的动态资源管理参数。OpenVZ 计划维护着三个稳定的内核分支:
- 本于 RHEL4/CentOS4 的 2.6.9
- 本于 RHEL5/CentOS 5 的 2.6.18
- 本于原装的 2.6.18
此外还有数个不稳定的分支本于较新版的 Linux 内核,它们也许会渐渐达至稳定的状态。所以,Centos 7是无法支持的。
OpenVZ 提供数项高级的功能,包括「检查点」及将容器由一台主机「迁移」到另一台。迁移共有两种方式:
- 即时迁移减少停机的时间(只须数秒),并且保持机器的运行时间及网络连接。
- 脱机迁移就是将机器停止,迁移它,然后重新打开它。
OpenVZ 的迁移功能「并不」须要一个共享的存储方案,而是利用 rsync 将容器的目录整全地由一台实体主机复制到另一台。
相关链接:
https://download.openvz.org/doc/OpenVZ-Users-Guide.pdf
https://wiki.openvz.org/Quick_installation
一、安装OpenVZ
关闭selinux
[root@localhost cache]# setenforce 0 |
准备yum 源
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ |
开始安装
yum -y install vzkernel |
编辑/etc/sysctl.conf文件,内容如下
# On Hardware Node we generally need # Enables source route verification # Enables the magic-sysrq key # We do not want all our interfaces to send redirects |
还需要安装一些额外的软件包:vzctl,用于管理虚拟机;vzquota,用于控制硬盘容量分配;ploop,用于 OpenVZ 的文件系统管理。执行以下命令:
yum -y install vzctl vzquota ploop |
重启机器。系统会自动加载 OpenVZ 内核(默认选择),启动完成后,检查是否正确安装内核:
[root@localhost ~]# uname -a |
其中字符串“042stab120.19”代表着 OpenVZ 版本号,理应是 OpenVZ 官网上的最新版。
OpenVZ也是存在服务的,默认安装之后会自动启动并且启动级别也是2/3/4/5级别,可通过如下命令确认:
[root@localhost ~]# service vz status |
二、创建虚拟机(容器)
vzctl 这个指命是用来创建及设置 OpenVZ 容器。在你创建一个容器之前,你须要拥有你想安装的 Linux 发行版本的安装媒体。OpenVZ 不能应用 CD/DVD 安装媒体(又或者 .iso 光盘映像档)。OpenVZ 需要它称为操作系统范本旳东西来为某个 Linux 发行版本创建一个容器。你可以从 OpenVZ 的网页下载一些预制的操作系统范本。这是推荐给新 OpenVZ 用户的途径。当你对 OpenVZ 更为熟识,你或许会想按照 OpenVZ wiki 上的众多方法从头创建你个人的操作系统范本。你可以这些地方找由 OpenVZ 划计提供的预制操作系统范本:
https://openvz.org/Download/template/precreated
你亦可以在这里找到由社区所贡献的操作系统范本:
https://download.openvz.org/contrib/template/precreated/
请下载所需的操作系统范本并将它放在你的 CentOS 6 主机内的 /vz/template/cache 目录。
要创建一个容器,请采用 vzctl这个指令,连同create选项及数个参数。你须要选择一个独特的容器标识码(CTID)。你也须要一些额外的数据:你想从哪个操作系统范本进行安装?它会拥有哪个 IP 位置?你想给它什么主机名称?你初步想将什么资源赋予它(取自配置文件)?这一切都可以通过以下参数来设置:
vzctl create CTID \ --ipadd {nn.nn.nn.nn} \
|
完整例子如下:
vzctl create 101 --ostemplate centos-7-x86_64 --conf basic \
--hostname mytest.container.com
|
设置虚拟机开机自动、IP、设置DNS、内存、磁盘空间大小等,命令如下:
vzctl set 101 --save --onboot yes \ |
启动虚拟机
vzctl start 2 |
如果想停止一个虚拟机,可以用stop。想进入一个虚拟机可以直接用enter,具体的命令使用建议查看帮助文档;
三、网络配置
回到上面的问题,虽然我们添加了IP,但是并不能与外界通信。接下来就解决虚拟机网络的问题,按照直接添加IP的方法,虚拟机访问外网有2种方式实现,一种是开启宿主机的包转发功能,设置与宿主机同一网段的IP地址(宿主机网段必须能够访问外网)
;第二种,使用路由转发功能,通过iptables实现NAT转换。
方式1:与宿主机同一IP网段配置
宿主机IP地址如下:
[root@localhost ~]# ip add |
由于我刚刚配置的IP就是与宿主机同一网段,所以能够直接访问外网,测试效果如下:
[root@localhost ~]# vzctl enter 2 ###进入虚拟机; |
方法2:私有IP NAT转换
删除原有同宿主机IP,添加新的IP地址,如下:
vzctl set 2 --ipdel 192.168.15.201 --save vzctl set 2 --ipadd 192.168.100.201 --save |
开启SNAT策略,如下
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE |
测试结果如下:
[root@localhost ~]# vzctl exec 2 ping www.baidu.com |
四、关于OpenVZ 数据备份问题
关于OpenVZ的迁移以及备份,整体来说是相当简单和方便的。迁移分为两种,一种是标准迁移,另一种零宕机迁移。下面我来看他们是如何实现的。
标准迁移
迁移之前,必须让2台主机或多台主机之间实现免秘钥认证。关于Linux 主机之间如何实现SSH免秘钥认证,我这里就不做详细说明了。下面我们直接来演示迁移过程:
vzmigrate 192.168.15.144 101 |
就上面一条命令就完成了OpenVZ的迁移;
零宕机迁移
vzmigrate --online 192.168.15.144 102 |
提示:这里需要注意一点,要保证迁移的主机时间同步。这样做是因为在容器运行的某些程序可能依赖系统时间,如果在迁移的过程中发现时间相差有误,会造成时间方面的冲突。
关于OpenVZ的备份
[root@localhost ~]# ls /vz/ |
根据我在迁移过程发现,在做迁移的操作时,OpenVZ会复制文件到迁移的目标主机中去。被迁移的文件有/etc/vz/conf/CID.conf,/vz/private,/vz/root主要是这几个文件。在做备份的操作时,可以完全只备份这几个文件即可。
最后,我想发表一下个人意见,不喜勿喷。OpenVZ可以看做是早些年的docker容器(在使用中部分命令和docker的命令极其相似)。但是他又不具备docker的特性,一次编译多地运行。所以,从目前的情况来看,OpenVZ处在一个极其尴尬的地位,被企业大量使用应该是不可能的,因为基础设施层有KVM/Xen/VMware等,PAAS层又有docker等容器霸占。目前OpenVZ的用处,大概也就只有VPS服务商使用的较多。
虚拟机之openVZ简单基础