Jump to content

Create CentOS OpenVZ Virtual Machines (VPS)


shadowmac

Recommended Posts

OpenVZ virtualization uses the concept of containers to run Linux only instances on the same hardware. OpenVZ is an operating system-level virtualization technology. It allows a physical server to run multiple isolated different Linux distributions operating system instances, known as containers or Virtual Private Servers (VPS's)



OpenVZ doesn't have the overhead of a true hypervisor (e.g. XEN or VMware), so it is very fast and an efficient to run Linux only VPS. All virtual servers will use same Linux kernel version.


CentOS_WebServer1.jpg


It offers strong isolation. This is perfect for running named, mysqld, apache and other services in each container. Each VPS is a separate entity, and behaves just like a physical server. Each VPS has:


  • System files (such as /bin, /sbin, /lib etc);
  • Own root users, as well as other users and groups;
  • Process tree;
  • Network (private or public IP;
  • Shared memory, semaphores, messages.



Default Locations


  • /vz - Main directory for OpenVZ.
  • /vz/private - Each VPS is stored here i.e. container's private directories
  • /vz/template/cache - You must download and store each Linux distribution template here.
  • /etc/vz/ - OpenVZ configuration directory.
  • /etc/vz/vz.conf - Main OpenVZ configuration file.
  • /etc/vz/conf - Softlinked directory for each VPS configuration.
  • Network port - No network ports are opened by OpenVZ kernel.



Install OpenVZ on CentOS


In order to install OpenVZ, we need to add the OpenVZ repository to yum:


[root@localhost]# yum -y install wget

[root@localhost]# cd /etc/yum.repos.d

[root@localhost]# wget http://download.openvz.org/openvz.repo

[root@localhost]# rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ





The repository contains a few different OpenVZ kernels (you can find more details about them here: Different kernel flavors (UP, SMP, ENTERPRISE, ENTNOSPLIT) - OpenVZ Wiki). The command

[root@localhost]# yum search ovzkernel





shows you the available kernels:



[root@localhost]# yum search ovzkernel

Loading "fastestmirror" plugin

Loading mirror speeds from cached hostfile

* base: ftp.halifax.rwth-aachen.de

* openvz-kernel-rhel5: openvz.proserve.nl

* updates: ftp.halifax.rwth-aachen.de

* addons: ftp.halifax.rwth-aachen.de

* openvz-utils: openvz.proserve.nl

* extras: ftp.halifax.rwth-aachen.de

openvz-kernel-rhel5 100% |=========================| 951 B 00:00

primary.xml.gz 100% |=========================| 22 kB 00:00

openvz-ker: ################################################## 14/14

openvz-utils 100% |=========================| 951 B 00:00

primary.xml.gz 100% |=========================| 6.7 kB 00:00

openvz-uti: ################################################## 26/26

ovzkernel-ent.i686 : The Linux kernel compiled for huge mem capable machines.

ovzkernel-PAE.i686 : The Linux kernel compiled for PAE capable machines.

ovzkernel-ent-devel.i686 : Development package for building kernel modules to match the ent kernel.

ovzkernel-PAE-devel.i686 : Development package for building kernel modules to match the PAE kernel.

ovzkernel.i686 : Virtuozzo Linux kernel (the core of the Linux operating system)

ovzkernel-xen.i686 : The Linux kernel compiled for Xen VM operations

ovzkernel-xen-devel.i686 : Development package for building kernel modules to match the kernel.

ovzkernel-devel.i686 : Development package for building kernel modules to match the kernel.

[root@localhost]#





Pick one of them and install it as follows:

[root@localhost]#yum install ovzkernel-ent.i686





This should automatically update the GRUB bootloader as well. Anyway, we should open /boot/grub/menu.lst; the first kernel stanza should now contain the new OpenVZ kernel. The title of that kernel just reads "CentOS". I think it's a good idea to change that title and add something with "OpenVZ" to it so that you know that it's the OpenVZ kernel. Also make sure that the value of default is 0 so that the first kernel (the OpenVZ kernel) is booted automatically instead of the default CentOS kernel.

[root@localhost]#vi /boot/grub/menu.lst



# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You have a /boot partition. This means that

# all kernel and initrd paths are relative to /boot/, eg.

# root (hd0,0)

# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00

# initrd /initrd-version.img

#boot=/dev/sda

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title CentOS OpenVZ (2.6.18-53.1.19.el5.028stab053.14)

root (hd0,0)

kernel /vmlinuz-2.6.18-53.1.19.el5.028stab053.14 ro root=/dev/VolGroup00/LogVol00

initrd /initrd-2.6.18-53.1.19.el5.028stab053.14.img

title CentOS (2.6.18-92.1.1.el5)

root (hd0,0)

kernel /vmlinuz-2.6.18-92.1.1.el5 ro root=/dev/VolGroup00/LogVol00

initrd /initrd-2.6.18-92.1.1.el5.img

title CentOS (2.6.18-92.el5)

root (hd0,0)

kernel /vmlinuz-2.6.18-92.el5 ro root=/dev/VolGroup00/LogVol00

initrd /initrd-2.6.18-92.el5.img


Note: Remember in vi editor R replaces text at cursor until esc is hit. When done editing type :wq to save file and quit





Now we install some OpenVZ user tools:

[root@localhost]#yum install vzctl vzquota





Open /etc/sysctl.conf and make sure that you have the following settings in it:

[root@localhost]#vi /etc/sysctl.conf





net.ipv4.ip_forward = 1

net.ipv4.conf.default.proxy_arp = 0

net.ipv4.conf.all.rp_filter = 1

kernel.sysrq = 1

net.ipv4.conf.default.send_redirects = 1

net.ipv4.conf.all.send_redirects = 0

net.ipv4.icmp_echo_ignore_broadcasts=1

net.ipv4.conf.default.forwarding=1





If you need to modify /etc/sysctl.conf, run afterwards

[root@localhost]#sysctl -p





The following step is important if the IP addresses of your virtual machines are from a different subnet than the host system's IP address. If you don't do this, networking will not work in the virtual machines!



Open /etc/vz/vz.conf and set NEIGHBOUR_DEVS to all:

[root@localhost]#vi /etc/vz/vz.conf





NEIGHBOUR_DEVS=all





SELinux needs to be disabled if you want to use OpenVZ. Open /etc/sysconfig/selinux and set the value of SELINUX to disabled:

[root@localhost]#vi /etc/sysconfig/selinux





Prevent issues with VPS sessions from getting out by running this command

[root@localhost]#service iptables stop





Finally, reboot the system :

[root@localhost]#shutdown -r now 





If your system reboots without problems, then everything is fine!



login as root and then run

[root@localhost]#uname -r





and your new OpenVZ kernel should show up:



[root@localhost]# uname -r

2.6.18-53.1.19.el5.028stab053.14

[root@localhost]#





Download CentOS 32 bit template:

[root@localhost]# cd /vz/template/cache

[root@localhost]# wget http://download.openvz.org/template/precreated/centos-5-x86.tar.gz





Create a VPS and set various limits (see vzctl man page):

--ostemplate {template name}

--conf {config name}

--ipadd {nn.nn.nn.nn}

--hostname {FQDN}

--name mynew \

--nameserver {nn.nn.nn.nn} {nn.nn.nn.nn} \

--diskspace 10G:10G \

--save





example:

[root@localhost]# vzctl create 201 --ostemplate centos-5-x86

[root@localhost]# vzctl set 201 --quotaugidlimit 150 --numproc 400:400 \

--kmemsize 16384000:18022400 --privvmpages 262144:292912 \

--hostname=[b]forums.nixcraft.com[/b] --diskspace 2000000:2000000 \

--shmpages 16384:16384 --ipadd [b]10.0.1.201[/b] \

--nameserver [b]10.0.1.11[/b] --nameserver [b]10.0.1.2[/b] --save

[root@localhost]# vzctl set 201 --onboot yes --save





or

vzctl create 201 --ostemplate centos-5-x86 --config vps.basic

vzctl set 201 --onboot yes --save

vzctl set 201 --hostname dev.example.com --save

vzctl set 201 --ipadd 10.0.1.201 --save

vzctl set 201 --numothersock 120 --save

vzctl set 201 --nameserver 10.0.1.1 --nameserver 68.87.77.134 --nameserver 68.87.72.134 --save





NOTE: The 201 must be a uniqe ID - each virtual machine must have its own unique ID. You can use the last part of the virtual machine's IP address for it. For example, if the virtual machine's IP address is 10.0.1.201, you use 201 as the ID. To get a list of what current VPS's you have installed run
[root@localhost]#vzlist -a





Set the password for vps root user:

[root@localhost]# vzctl set 201 --userpasswd root:pass





Start VPS:

[root@localhost]# vzctl start 201





Enter into VPS:

[root@localhost]# vzctl enter 201





Exit VPS

exit





Restart a VPS

vzctl restart 201





Stop a VPS

vzctl stop 201





To delete a vm from the hard drive (it must be stopped before you can do this), run

vzctl destroy 201





To get a list of your vms and their statuses, run

vzlist -a





To find out about the resources allocated to a vm, run

vzctl exec 201 cat /proc/user_beancounters 





Now you can install additional software and configure your vps:

 yum update

yum install httpd


NOTE: If yum update fails, you need to run service iptables stop on your host machine


Now browsing to your VPS ip address in your internet browser, you should see an Apache page.


Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...