Howto Virtualisation Proxmox clusterisé sur serveur hébergé ou dédie Auteur : Farid Yahimi Version supportée: Proxmox 1.3 /1.5
License: GPL Dernière modification : Lundi, 20/02/2010 Prérequis 2 serveurs A et B 1 ou 2 ip fail over Préparez déjà votre connexion ssh avec connexion sans mot de passe Un coup d’oeil sur nano /etc/ssh/sshd_config pour autoriser le root c’est plus simple, fermer la porte après le transfert des fichiers pour remettre la config secure. Générer la cle ssh ssh-keygen -t dsa -b 1024 ssh-copy-id -i /root/.ssh/id_dsa.pub
Cette adresse email est protégée contre les robots des spammeurs, vous devez activer Javascript pour la voir.
tester la connexion a faire sur les deux serveur a et b Nous allons maintenant mettre en place un firewall / routeur pour nos machines virtuelles, on aura une ip public et des règles de routage pour accéder a nos VM qui seront elles sur un lan 1) Routage a activer sur serveur a et b pico /etc/pve/kvm-networking.sh echo 1 > /proc/sys/net/ipv4/conf/vmbr0/proxy_arp Astuce pour le ftp, je n'ai pas réussi a router le ftp vers plusieurs machines du lan , voici comment je route vers une de mes machines qui fait serveur ftp Preparer le serveur Host nano /etc/vz/vz.conf Rechercher la section suivante “## IPv4 iptables kernel modules” et ajouter les extra modules pour iptables: IPTABLES="ipt_REJECT ipt_tos ipt_TOS ipt_LOG ip_conntrack ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state iptable_nat ip_nat_ftp" Redémarrer votre serveur host appliquer votre règle : iptables -t nat -A PREROUTING -p tcp --dport 21 -j DNAT --to 192.168.0.xxx 2)configuration du réseau pico /etc/network/interfaces Ci dessous une configuration incluant plusieurs ip virtuelles , ceci est un exemple à adapter a vos besoins # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 9X.XXX.XXX175 netmask 255.255.255.0 network 9X.XXX.XXX0 broadcast 9X.XXX.XXX255 gateway 9X.XXX.XXX254 auto eth0:0 iface eth0:0 inet static address 85.XXX.2XX.220 netmask 255.255.255.255 network 85.XXX.2XX.0 broadcast 85.XXX.2XX.220 gateway 85.XXX.2XX.254 auto eth0:1 iface eth0:1 inet static address 18X.XXX.XXX99 netmask 255.255.255.0 network 18X.XXX.XXX0 broadcast 18X.XXX.XXX255 gateway 18X.XXX.XXX254 auto eth0:2 iface eth0:2 inet static address 8X.XXX.XXX.206 netmask 255.255.255.0 network 87.98.140 broadcTst 8X.XXX.XXX.255 gateway 8X.XXX.XXX.254 auto vmbr0 iface vmbr0 inet static address 192.168.0.2 netmask 255.255.255.0 post-up /etc/pve/kvm-networking.sh post-up iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE post-down iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE bridge_ports dummy0 bridge_stp off bridge_fd 0 * ps: une chose étrange chez ovh , le serveur a ping b mais pas l'inverse petite solution pas très propre , j'ai crée une route sur le serveur a, route add ip_serveur_b gw ip_virtuelle 3) Installation de Fridu firewall, qui me parait simple d'utilisation et performant, rendez vous sur le lien ci dessous , c'est très pédagogique . celui qui maîtrise iptables , peut zapper cette partie. KVM/OpenVZ Proxmox firewall intégration En synthèse: avec vm-firewall c'est très simple il faut juste modifier les fichiers de conf et déclarer les deux interfaces # ls (dans le repertoire vm-firewall) 0_README 1st-common.conf hypervisor.conf tunning.conf vz-dev.conf vz-game.conf vz-SFX.conf vz-storage.conf vz-tools.conf vz-web.conf zones.conf un fichier de conf par VM ,un fichier pour configurer le réseau sur l'hyperviseur et deux fichier 1st-common pour les réglages généraux et zones.conf pour assigner les ip à des zones Dans 1st-common , on renseignes les ip externes comme cela 1st-common # 1st-common.conf defined shared variables use in order .conf # WARNING: to make sure it is readed 1st check alphabetic order # -------------------------------------------------------------- IP_ONE=xxxxx IP_TWO=xxxxx IP_sec=xxxxxx IP_three=xxxxxx dans Zones.conf on y met nos zones
# Security Zones definition # -------------------------- CreateZone NAME=zOne NIC=eth0 EXT=$IP_ONE BR=venet0 INT=192.168.10.0 MASK=255.255.255.0 CreateZone NAME=zTwo NIC=eth0 EXT=$IP_TWO BR=venet0 INT=192.168.10.0 MASK=255.255.255.0 CreateZone NAME=sec NIC=tun0 EXT=$IP_sec BR=venet0 INT=192.168.20.0 MASK=255.255.255.0 CreateZone NAME=z3 NIC=eth0 EXT=$IP_three BR=venet0 INT=192.168.10.0 MASK=255.255.255.0 et pour chaque VM un fichier de conf ou tu précise d'ou viennent les données et ou elles vont vz-web.conf # vz-web # --------------------------------------------- CreateApp NAME=WEB ZONE=zOne EXT=tcp:80 INT=192.168.0.6:80 # on renvoit les requetes de l'ip zOne vers notre serveur web interne 192.168.0.6 CreateApp NAME=SSH ZONE=zOne EXT=tcp:xxxx INT=192.168.0.6:22 CreateApp NAME=FTP ZONE=zOne EXT=tcp:xxxx INT=192.168.0.6:21 Voila pour la partie routage et firewall 4) le proxying et l'interface de gestion proxmox j'ai modifier le port d'écoute d'apache pour l'interface admin Configuration Apache pico /etc/apache2/ports.conf and /etc/apache2/sites-available/pve.conf tout ce passe ici. Pour le proxying des vms j'utilise nginxon peut utiliser pound mais la doc est peau de chagrin.
Configurer nginx, je vous renvoi a ce site
http://www.papygeek.com/software/optimiser-son-serveur-web-avec-nginx/ and voila, résumons requête vers www.libertalia.info ----> Proxmox server A---> Fridu-firewall --->Nginx prends en charge ---->VM local serveur web ---> page d'accueil Libertalia requête sur port ssh/mysql/vpn externe --> Proxmox server A--->Fridu-firewall---->port ssh/mysql/vpn interne---->VM local serveur ssh/mysql/vpn --->connexion 5) le Clustering Proxmox Serveur a:/etc/pve# pveca -c cluster master successfully created
Vérification de l'état du cluster:
Serveur a:/etc/pve# pveca -l CID----IPADDRESS----ROLE-STATE--------UPTIME---LOAD----MEM---DISK 1 : 192.168.0.10 M A 00:36 0.24 46% 5% le serveur est master sur l'ip local,pour contourner le problème a) nous avons échangés les clés ssh (rappelez vous en debut de tuto) b) nous allons modifier le fichier /etc/pve/cluster.cfg qui contient les infos de clustering sur le serveur a, pico /etc/pve/cluster.cfg on modifie l'ip local par l'ip externe. Serveur a:/etc/pve# pveca -l CID----IPADDRESS----ROLE-STATE--------UPTIME---LOAD----MEM---DISK 1 : 1 ip_externe M A 00:34 0.16 46% 5% so far, so good ! Serveur b: pveca -a -h ip_externe_serveur_a cluster node successfully created attention , les vms ne doivent pas etre porter un vmid identique sur a et b Test migration vm no 102 du serveur a vers b /usr/bin/ssh -t -t -n -o BatchMode=yes serveur a /usr/sbin/vzmigrate serveur b 102 OPT:serveur b Starting migration of CT 102 to serveur b Preparing remote node Initializing remote quota Syncing private Syncing 2nd level quota Turning quota off Cleanup Connection to serveur a closed. VM 102 migration done votre cluster est opérationnel ! |