Installation de Centos 6 avec un noyau OpenVZ.

Installation d'OpenVZ

Nous partirons d'une installation de Centos 6 minimale. Notre objectif sera de mettre en place OpenVZ et de pouvoir faire tourner plusieurs machines virtuelles. Attention, OpenVZ ne supporte la virtualisation que pour les systèmes GNU/Linux. Vous pouvez utiliser ce tutoriel en complément de celui pour le panel OpenVZ VCA.

On met à jour et on installe quelques outils indispensables :
yum update -y
yum install screen wget -y
OpenVZ utilise un noyau Linux modifié, nous allons l'installer ainsi que ses outils depuis le dépôt officiel.
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo

yum install vzkernel vzctl ploop
Dans le fichier /etc/sysconfig/selinux, SELINUX doit être désactivé.
SELINUX=disabled
Pour permettre l’accès au réseau depuis les machines virtuelles, modifier le fichier /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  

# We do not want all our interfaces to send redirects 
net.ipv4.conf.default.send_redirects = 1 
net.ipv4.conf.all.send_redirects = 0
Nous pouvons redémarrer la machine après avoir vérifié le noyau par défaut dans /boot/grub/grub.conf.
reboot
Nous n'utiliserons plus le noyau linux fourni par Centos, il vaut mieux le désinstaller afin que Grub ne le propose plus automatiquement.
yum remove kernel -y
Dans les exemples, notre réseau sera en 192.168.1.0/24, et notre ip publique 11.22.33.44.
iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.1.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 11.22.33.44
/sbin/service iptables save
Ouvrir /etc/vz/vz.conf et ajouter "iptable_nat" à la régle IPTABLES_MODULES
IPTABLES_MODULES="ipt_REJECT
Devient
IPTABLES_MODULES="iptable_nat ipt_REJECT

L'installation est désormais terminée, vous pouvez maintenant administrer votre serveur OpenVZ avec VCA.

Installation des templates

Nous allons installer quelques templates, les archives doivent être placée dans le dossier /vz/template/cache. Attention, il ne faut pas les décompresser.

Exemple avec Ubuntu 14.04
cd /vz/template/cache
wget http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz

Partager le port 80

Dans le cas où plusieurs sites sont hébergés sur des machines virtuelles, deux possibilités s'ouvrent à nous :
  • Utiliser une IP failover
  • Faire du NAT
Nous allons faire du NAT, pour cela sur la machine hôte nous installerons Nginx qui fonctionnera en reverse proxy. Il est aussi possible de rediriger le port 80 vers une machine virtuelle qui elle-même contiendra Nginx. Nginx n'est pas dans les dépôts activés par défaut, nous aurons besoin d'activer le dépôt EPEL
yum install epel-release -y
yum install nginx -y
chkconfig nginx on
Par défaut Nginx charge les fichiers de configuration présents dans /etc/nginx/conf.d/. Afin de séparer les sites du proxy, nous allons créer de nouveaux dossiers.
mkdir /etc/nginx/sites-available/
mkdir /etc/nginx/sites-enabled/
Dans le fichier /etc/nginc/nginx.conf, remplacer
include /etc/nginx/conf.d/*.conf;
Par
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*.conf;
Créer /etc/nginx/conf.d/proxy.conf
proxy_redirect          off;
proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size    10m;
client_body_buffer_size 128k;
client_header_buffer_size 64k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffer_size   16k;
proxy_buffers       32   16k;
proxy_busy_buffers_size 64k;
Pour rediriger un site il nous suffira de créer un fichier symbolique dans /etc/nginx/sites-available/, de faire un lien vers /etc/nginx/sites-enabled/ et de recharger Nginx.

Exemple de fichier avec une machine virtuelle en 192.168.1.5
server {
        listen   80;
        server_name     mywebsite.com;
        location / {
                proxy_pass         http://192.168.1.5/;
        }
}
On ouvre le port 80 sur la machine hôte.
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
/sbin/service iptables save