wiki:documentation:avance:keep

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
wiki:documentation:avance:keep [2020/05/26 17:16]
sakher-b
wiki:documentation:avance:keep [2020/05/26 17:36] (Version actuelle)
sakher-b
Ligne 1: Ligne 1:
 +====== Répartition de charge et haute disponibilité avec keepalived ======
 +
 Nous allons voir comment mettre en place une répartition de charge et de la haute disponibilité entre 2 serveurs à l'aide de Keepalived. Nous allons voir comment mettre en place une répartition de charge et de la haute disponibilité entre 2 serveurs à l'aide de Keepalived.
 Dans cet exemple il s’agit de deux serveurs de partages Samba 4. Dans cet exemple il s’agit de deux serveurs de partages Samba 4.
Ligne 13: Ligne 15:
  
 2 VMs avec keepalived installé (VRRP/HA servers) 2 VMs avec keepalived installé (VRRP/HA servers)
-  * adresses IP : Une adresse IP dédiée au serveur et une seconde dédié à la répartition de charge (VIP) +  * adresses IP : Une adresse IP dédiée à chaque serveur (2) et une seconde dédié à la répartition de charge (VIP) 
-  * 1 adresse IP dédiée aux communications entre les deux serveurs keepalived+  * 2 adresses IP dédiées aux communications entre les deux serveurs keepalived
  
 === 2 – Les serveurs réels === === 2 – Les serveurs réels ===
Ligne 119: Ligne 121:
 </code> </code>
  
-Voilà l’accès réseau au serveur est opérationnel.+Voilà l’accès réseau au serveur est opérationnel. Il faudra répeter cette opération autant de fois qu'il y a de serveurs Keepalived. 
 + 
 +== 3.2 – La répartition de charge == 
 + 
 +Pour la répartition de charge il faut installer keepalived et ipvsadm 
 + 
 +<code bash> 
 +# pacman -S --noconfirm keepalived ipvsadm 
 +resolving dependencies... 
 +looking for conflicting packages... 
 + 
 +Packages (2) ipvsadm-1.31-1 keepalived-2.0.20-1 
 + 
 +Total Installed Size: 0.78 MiB 
 + 
 +:: Proceed with installation? [Y/n]  
 +(2/2) checking keys in keyring                                                                                                                 [########################################################################################] 100% 
 +(2/2) checking package integrity                                                                                                               [########################################################################################] 100% 
 +(2/2) loading package files                                                                                                                    [########################################################################################] 100% 
 +(2/2) checking for file conflicts                                                                                                              [########################################################################################] 100% 
 +(2/2) checking available disk space                                                                                                            [########################################################################################] 100% 
 +:: Processing package changes... 
 +(1/2) installing keepalived                                                                                                                   [########################################################################################] 100% 
 +Optional dependencies for keepalived 
 +    ipset: ipset support 
 +(2/2) installing ipvsadm                                                                                                                      [########################################################################################] 100% 
 +:: Running post-transaction hooks... 
 +(1/2) Reloading system manager configuration... 
 +(2/2) Arming ConditionNeedsUpdate... 
 +</code> 
 + 
 +Il faut ensuite configurer keepalived pour définir l’adresse IP virtuelle et paramétrer la répartition de charge. 
 + 
 +Cette configuration s’effectue dans le fichier /etc/keepalived/keepalived.conf 
 + 
 +Sur le premier serveur Keepalived (MASTER) 
 + 
 +<code bash> 
 +global_defs { 
 +        notification_email { 
 +        nom-p@univ-nantes.fr 
 +
 +        notification_email_from keepalived1@inspe.univ-nantes.fr 
 +        smtp_server 172.20.12.55 
 +        router_id ha-smbqualif 
 +        lvs_flush 
 +        lvs_flush_onstop 
 +
 + 
 +vrrp_instance SMB { 
 + virtual_router_id 20 
 + state MASTER 
 + interface ens4 
 + priority 150 
 + advert_int 1 
 + track_interface { 
 +      ens3 
 +    } 
 + unicast_src_ip 192.168.66.23  
 + unicast_peer { 
 + 192.168.66.24             
 +           } 
 + 
 + virtual_ipaddress { 
 + 172.26.127.20/28 brd 172.26.127.31 dev ens3 scope global 
 +
 + smtp_alert 
 +  
 + garp_master_delay 2 
 +    garp_master_repeat 2 
 +    garp_master_refresh_repeat 1  
 +
 + 
 +virtual_server 172.26.127.20 445 { 
 + protocol TCP 
 + lb_algo rr 
 + lb_kind DR  
 +  
 + real_server 172.26.127.21 445 { 
 + weight 1 
 + TCP_CHECK { 
 +                connect_timeout 1 
 +        connect_port  445 
 +        } 
 + }  
 + 
 + real_server 172.26.127.22 445 { 
 + weight 1 
 + TCP_CHECK { 
 +                connect_timeout 1 
 +         connect_port 445  
 +        }  
 + }  
 +
 + 
 +virtual_server 172.26.127.20 139 { 
 +        protocol TCP 
 +        lb_algo rr 
 +        lb_kind DR 
 + 
 +        real_server 172.26.127.21 139 { 
 +                weight 1 
 +                TCP_CHECK { 
 +                        connect_timeout 1 
 +                        connect_port  445 
 +                } 
 +        } 
 + 
 +        real_server 172.26.127.22 139 { 
 +                weight 1 
 +                TCP_CHECK { 
 +                        connect_timeout 1 
 +                        connect_port  445 
 +                } 
 +        } 
 +
 +</code> 
 + 
 +Et sur le second serveur keepalived (BACKUP) 
 + 
 +<code bash> 
 +global_defs { 
 +        notification_email { 
 +        nom-p@univ-nantes.fr 
 +
 +        notification_email_from keepalived2@inspe.univ-nantes.fr 
 +        smtp_server 172.20.12.55 
 + router_id ha-smbqualif 
 + lvs_flush 
 + lvs_flush_onstop 
 +
 + 
 +vrrp_instance SMB { 
 + virtual_router_id 20 
 + state BACKUP 
 + interface ens4 
 + priority 50 
 + advert_int 1 
 + track_interface { 
 +      ens3 
 +    } 
 +        unicast_src_ip 192.168.66.24 
 +        unicast_peer { 
 +                192.168.66.23 
 +           } 
 + virtual_ipaddress { 
 + 172.26.127.20/28 brd 172.26.127.31 dev ens3 scope global 
 +
 + 
 + garp_master_delay 2 
 +    garp_master_repeat 2 
 +    garp_master_refresh_repeat 1  
 +
 + 
 +virtual_server 172.26.127.20 445 { 
 + protocol TCP 
 + lb_algo rr 
 + lb_kind DR  
 +  
 + real_server 172.26.127.21 445 { 
 + weight 1 
 + TCP_CHECK { 
 +                connect_timeout 1 
 +        connect_port  445 
 +        } 
 + }  
 + 
 + real_server 172.26.127.22 445 { 
 + weight 1 
 + TCP_CHECK { 
 +                connect_timeout 1 
 +         connect_port 445  
 +        }  
 + }  
 +
 + 
 +virtual_server 172.26.127.20 139 { 
 +        protocol TCP 
 +        lb_algo rr 
 +        lb_kind DR 
 + 
 +        real_server 172.26.127.21 139 { 
 +                weight 1 
 +                TCP_CHECK { 
 +                        connect_timeout 1 
 +                        connect_port  445 
 +                } 
 +        } 
 + 
 +        real_server 172.26.127.22 139 { 
 +                weight 1 
 +                TCP_CHECK { 
 +                        connect_timeout 1 
 +                        connect_port  445 
 +                } 
 +        } 
 +
 +</code> 
 + 
 +On active keepalived au démarrage des serveurs : 
 +<code bash> 
 +# systemctl enable keepalived.service  
 +Created symlink /etc/systemd/system/multi-user.target.wants/keepalived.service -> /usr/lib/systemd/system/keepalived.service. 
 +</code> 
 + 
 +Et on démarre keepalived sur les deux serveurs : 
 +<code bash> 
 +# systemctl start keepalived.service 
 +</code> 
 + 
 +Si tout se passe bien l’adresse IP 172.66.127.20 doit être visible sur l’interface ens3 du keepalived MASTER. 
 + 
 +<code bash> 
 +# ip addr show dev ens3 
 +2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 
 +    link/ether 1a:a5:66:04:00:03 brd ff:ff:ff:ff:ff:ff 
 +    altname enp0s3 
 +    inet 172.26.127.23/28 brd 172.26.127.31 scope global ens3 
 +       valid_lft forever preferred_lft forever 
 +    inet 172.26.127.20/28 brd 172.26.127.31 scope global secondary ens3 
 +       valid_lft forever preferred_lft forever 
 +    inet6 fe80::18a5:66ff:fe04:3/64 scope link  
 +       valid_lft forever preferred_lft forever 
 +</code> 
 + 
 +Et pour vérifier la répartition de charge : 
 + 
 +<code bash> 
 +# ipvsadm -Ln 
 +IP Virtual Server version 1.2.1 (size=32768) 
 +Prot LocalAddress:Port Scheduler Flags 
 +  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn 
 +TCP  172.26.127.20:139 rr 
 +  -> 172.26.127.21:139            Route        0          0          
 +  -> 172.26.127.22:139            Route        0          0          
 +TCP  172.26.127.20:445 rr 
 +  -> 172.26.127.21:445            Route        0          0          
 +  -> 172.26.127.22:445            Route        0          0          
 +</code> 
 + 
 +Ici aucune connexion car cette documentation a été réalisée pendant le confinement COVID-19 ;-) 
 + 
 +=== 4 – Ressources documentaires === 
 + 
 +https://www.keepalived.org/doc/ 
 + 
 +https://www.keepalived.org/manpage.html
  • wiki/documentation/avance/keep.1590506216.txt.gz
  • Dernière modification: 2020/05/26 17:16
  • de sakher-b