Mise en place du réseau Bridge pour LAN VM (6 machines)
Suppression IPv6 et Forward ipv4(6 machines)
[root@node0x-sheepdog home]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf [root@node0x-sheepdog home]# echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf [root@node0x-sheepdog home]# echo "net.ipv6.conf.all.autoconf = 0" >> /etc/sysctl.conf [root@node0x-sheepdog home]# echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf [root@node0x-sheepdog home]# echo "net.ipv6.conf.default.autoconf = 0" >> /etc/sysctl.conf [root@node0x-sheepdog home]# sysctl -p
Inventaire des besoins (6 machines)
[root@node0x-sheepdog home]# ip a
Carte Réseau eth1 présente pour le réseau des VM
[root@node0x-sheepdog ~]# modinfo bridge
Module « Bridge » chargé
Installation du paquet nécessaire (6 machines)
[root@node0x-sheepdog ~]# yum -y install bridge-utils
Création du Bridge vmbr0 (6 machines)
[root@node0x-sheepdog ~]# vi /etc/sysconfig/network-scripts/ifcfg-vmbr0 DEVICE="vmbr0" BOOTPROTO="static" IPADDR="192.168.1.21x" NETMASK="255.255.255.0" GATEWAY="192.168.1.1" DNS1=192.168.1.1 ONBOOT="yes" TYPE="Bridge" NM_CONTROLLED="no"
Connecter eth1 sur vmbr0 (6 machines)
[root@node0x-sheepdog ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes NM_CONTROLLED=no BRIDGE=vmbr0
Démarrrer le bridge et eth1 (6 machines)
[root@node0x-sheepdog ~]# ifup vmbr0 [root@node0x-sheepdog ~]# ifup eth1
Configuration le Bridge avec Qemu (6 machines)
[root@node0x-sheepdog ~]# echo "allow vmbr0" >> /usr/local/etc/qemu/bridge.conf [root@node0x-sheepdog ~]# chown root:root /usr/local/etc/qemu/bridge.conf [root@node0x-sheepdog ~]# chmod 0640 /usr/local/etc/qemu/bridge.conf
Mise en place de la machine web sur sheepdog et Qemu
Création de web01 via Clone client07 (node04)
[root@node0x-sheepdog ~]# dog vdi snapshot client01
[root@node0x-sheepdog ~]# dog vdi clone -s1 -r -v client01 web01 [root@node0x-sheepdog ~]# dog vdi list
Installation KeepAlive (6 machines)
MAP des IP LAN VM et KeepAlive
- node04-sheepdog
- vmbr0 : 192.168.1.210
- node05-sheepdog
- vmbr0 : 192.168.1.211
- node06-sheepdog
- vmbr0 : 192.168.1.212
- node07-sheepdog
- vmbr0 : 192.168.1.213
- node08-sheepdog
- vmbr0 : 192.168.1.214
- node09-sheepdog
- vmbr0 : 192.168.1.215
VIP KeepAlive : 172.17.186.40
Installation des paquets nécessaires (6 machines)
[root@node04-sheepdog vm]# yum install -y keepalived [root@node04-sheepdog vm]# yum -y install ipvsadm
Chargement du module ip_vs (6 machines)
[root@node04-sheepdog vm ~]# modprobe ip_vs [root@node04-sheepdog vm ~]# echo ip_vs >> /etc/module
Configuration KeepAlive (6 machines)
[root@node04-sheepdog vm]# cp /etc/keepalived/keepalived.conf{,-old} [root@node04-sheepdog vm]# sh -c '> /etc/keepalived/keepalived.conf'
Node04 (Master)
[root@node04-sheepdog vm]# vi /etc/keepalived/keepalived.conf ! /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { chris@en-images.info } notification_email_from chris@en-images.info smtp_server localhost smtp_connect_timeout 30 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 100 priority 200 authentication { auth_type PASS auth_pass droopy2021 } virtual_ipaddress { 172.17.186.40/24 dev eth0 } }
[root@node04-sheepdog ~]# systemctl enable --now keepalived
[root@node04-sheepdog ~]# systemctl status keepalived
[root@node04-sheepdog ~]# ip a
Node05 à Node09 (Backup)
[root@node0x-sheepdog vm]# vi /etc/keepalived/keepalived.conf
- node05 : priority 199
- node06 : priority 198
- node07 : priority 197
- node08 : priority 196
- node09 : priority 195
! /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { chris@en-images.info } notification_email_from chris@en-images.info smtp_server localhost smtp_connect_timeout 30 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 100 priority 19X authentication { auth_type PASS auth_pass droopy2021 } virtual_ipaddress { 172.17.186.40/24 dev eth0 } }
[root@node0x-sheepdog ~]# systemctl enable --now keepalived
[root@node0x-sheepdog ~]# systemctl status keepalived
Configuration spécification réseaux (6 machines)
[root@node0x-sheepdog vm]# echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf [root@node0x-sheepdog vm]# sysctl -p
Règles firewall (6 machines)
[root@node0x-sheepdog vm]# firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent --zone=public [root@node0x-sheepdog ~]# firewall-cmd --add-service=vnc-server --permanent --zone=public [root@node0x-sheepdog vm]# firewall-cmd --reload
Script HA web01 sur Machine Portant la VIP (node04)
Si la VIP n’est pas présente, on considère que la machine est dysfonctionnelle.
Script BASH
[root@node0x-sheepdog vm]# vi web.sh #!/bin/bash VIP=172.17.186.40 LOG=/var/log/webVM.log while true do sleep 1 CHECK_VIP=`ip a show eth0 |grep ${VIP}|wc -c` APP_VM=`ps -aux|grep web01 |grep -v grep |head -1 | awk '{print $2}'|wc -c` if [[ ${CHECK_VIP} == 0 ]] then if [[ ${APP_VM} != 0 ]] then echo "PID présent et perte de la VIP - On kill le PID de la machine" >> $LOG KILL_VM=`ps -aux|grep web01 |grep -v grep |head -1 | awk '{print $2}'` kill -9 ${KILL_VM} fi else if [[ ${APP_VM} == 0 ]] then echo "On démarre la machine car VIP existe pas de PID Machine" >> $LOG qemu-system-x86_64 \ -name web01 \ -enable-kvm \ -drive file=sheepdog:web01,if=virtio \ -net nic -net bridge,br=vmbr0 \ -m 1024 \ -smp 2 -k fr \ -vga std \ -vnc :1 \ -usbdevice tablet \ -boot order=c \ -daemonize fi fi done
Déployer le script sur les autres nodes (node04)
[root@node0x-sheepdog vm]# scp /home/vm/web.sh root@172.17.186.24:/home/vm/web.sh [root@node0x-sheepdog vm]# scp /home/vm/web.sh root@172.17.186.25:/home/vm/web.sh [root@node0x-sheepdog vm]# scp /home/vm/web.sh root@172.17.186.26:/home/vm/web.sh [root@node0x-sheepdog vm]# scp /home/vm/web.sh root@172.17.186.27:/home/vm/web.sh [root@node0x-sheepdog vm]# scp /home/vm/web.sh root@172.17.186.28:/home/vm/web.sh
Démarrer le service de la machine web(6 machines)
[root@node0x-sheepdog vm]# /home/vm/web.sh &
Bascule HA – VM web01
Machine Maitre Node04 (KeepAlive ON)
[root@node04-sheepdog vm]# ip a show eth0 |grep inet
[root@node04-sheepdog vm]# ps -aux |grep "sheepdog:web01" |grep -v grep
[root@node04-sheepdog vm]# ping -c 4 192.168.1.202
Installation http sur la VM web hébergée sur Qemu
[root@node04-sheepdog ~]# ssh -l root 192.168.1.202
Installation package
[root@web ~]# yum -y install httpd php qemu-guest-agent
Règle firewall
[root@web ~]# firewall-cmd --zone=public --permanent --add-service=http && firewall-cmd --reload
Création site
[root@web ~]# mkdir /home/www [root@web ~]# chown apache.apache -R /home/www [root@web ~]# chmod -R 755 /home/www
[root@web ~]# vi /home/www/index.php <center><h1><b> Serveur Web - QEMU - Sheepdog - Zookeeper </b></h1></center> <?php // afficher le nom du fichier de script éxécuté echo $_SERVER['PHP_SELF']; echo "<br>"; // afficher l'adresse IP du serveur où le script est éxécuté echo $_SERVER['SERVER_ADDR']; echo "<br>"; // afficher le nom d'hôte du serveur echo $_SERVER['SERVER_NAME']; echo "<br>"; // afficher la méthode de requête ('GET', 'HEAD', 'POST', 'PUT') echo $_SERVER['REQUEST_METHOD']; echo "<br>"; // afficher les paramètres de l'URL echo $_SERVER['QUERY_STRING']; echo "<br>"; // afficher le nom du répertoire racine du script echo $_SERVER['DOCUMENT_ROOT']; echo "<br>"; // afficher le nom d'hôte de la machine cliente echo $_SERVER['HTTP_HOST']; echo "<br>"; // afficher les informations sur le navigateur utilisé echo $_SERVER['HTTP_USER_AGENT']; echo "<br>"; // afficher l'adresse IP du client echo $_SERVER['REMOTE_ADDR']; echo "<br>"; ?>
Configuration Apache
[root@web ~]# vi /etc/httpd/conf.d/web.conf <VirtualHost *:80> ServerName web.house.cpb ServerAlias house.cpb DocumentRoot /home/www DirectoryIndex index.php <Directory /home/www> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost>
[root@web ~]# systemctl enable --now httpd
Url de la machine web : http://192.168.1.202
Check Bascule de la VM de Node04 => Node05
Modifions le fichier d’index index.php
[root@web ~]# sed -i 's/Serveur Web - QEMU - Sheepdog - Zookeeper/Serveur Web - QEMU - Sheepdog - Zookeeper => Node05/'g /home/www/index.php && exit
Simulons Down Machine Node04
[root@node04-sheepdog vm]# systemctl stop keepalived [root@node04-sheepdog vm]# ps -aux |grep "sheepdog:web01" |grep -v grep Aucun processus, La machine n’est plus démarrée sur node04
Check sur la machine node05
[root@node05-sheepdog ~]# ps -aux |grep "sheepdog:web01" |grep -v grep
La machine est bien présente et démarrée sur node05
[root@node05-sheepdog ~]# ip a show eth0 |grep inet
La VIP a basculé sur node05, node04 est « down »
Check Url site Web : http://192.168.1.202
La modification réalisée sur le node04 est bien présente sur la machine web01 démarrée sur Node05
Bascule de la VM de Node05 => Node06
Modifions le fichier d’index index.php
[root@node05-sheepdog ~]# ssh -l root 192.168.1.202 [root@web ~]# sed -i 's/Serveur Web - QEMU - Sheepdog - Zookeeper => Node05/Serveur Web - QEMU - Sheepdog - Zookeeper => Node06/g' /home/www/index.php && exit
Simulons Down Machine Node05
[root@node05-sheepdog ~]# systemctl stop keepalived [root@node05-sheepdog ~]# ps -aux |grep "sheepdog:web01" |grep -v grep Aucun processus, La machine web01n’est plus démarrée sur node05
Check sur la machine node06
[root@node06-sheepdog ~]# ps -aux |grep "sheepdog:web01" |grep -v grep
La machine est bien présente et démarrée sur node06
[root@node06-sheepdog ~]# ip a show eth0 |grep inet
La VIP a basculé sur node06 , node04 et node05 sont « down »
Check Url site Web : http://192.168.1.202
La modification réalisée sur node05 est bien préservée grâce au stockage distribué « mode block » par sheepdog
Views: 3