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