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:18]
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 120: Ligne 122:
  
 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. 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.1590506289.txt.gz
  • Dernière modification: 2020/05/26 17:18
  • de sakher-b