Équilibrage de charge de cluster-LVS DR + combat de déploiement de cluster Keepalived! Théorie super détaillée + expérience! ! !

Premièrement, comprendre le principe de mise en œuvre de Keelalived

        keepalived est un outil auxiliaire puissant conçu spécifiquement pour LVS, principalement utilisé pour fournir des fonctions de basculement et de vérification de l'état - pour déterminer la disponibilité du planificateur de charge LVS, du serveur de nœuds, de l'isolation en temps opportun et du remplacement par un nouveau serveur, lorsque l'hôte défaillant récupère Rejoignez-le ensuite dans le cluster.

■ Un outil de bilan de santé spécialement conçu pour LVS et HA

  • Prise en charge du basculement automatique (basculement)
  • État de vérification de l'état du nœud de support (vérification de l'état)
  • Site officiel: http://www.keepalived.org/ (si vous êtes intéressé, vous pouvez le consulter)

1.1, analyse de cas Keepalived

        Dans les applications d'entreprise, un serveur unique supporte le risque d'un point de défaillance unique de l'application. Dans un cluster d'applications d'entreprise, il existe au moins deux risques de points de défaillance
uniques . Une fois qu'un point de défaillance unique se produit, les services d'entreprise seront interrompus, ce qui causera de graves dommages.

1.2 Vue d'ensemble du cluster LVS + Keepalived haute disponibilité

        L'objectif de conception de Keepalived est de créer un cluster d'équilibrage de charge LVS utilisable. Vous pouvez appeler l'outil ipvsadm pour créer des serveurs virtuels et gérer des pools de serveurs, pas seulement pour la sauvegarde à chaud sur deux systèmes. L'utilisation de keepalived pour créer un cluster LVS est plus simple et plus facile à utiliser. Les principaux avantages sont les suivants: mise en place d'une commutation de secours à chaud du planificateur de charge LVS, amélioration de la disponibilité, vérification de l'état des nœuds du pool de serveurs, suppression automatique des nœuds défectueux et réintégration après la récupération.
        Dans la structure de cluster LVS implémentée sur la base de LVS-Keepalived, il comprend au moins deux planificateurs de charge de secours et deux serveurs de nœuds ou plus. Dans cet exemple, basé sur le cluster LVS en mode DR, un planificateur de charge esclave sera ajouté. Utilisez Keepalived pour réaliser la sauvegarde à chaud des ordonnanceurs maître et esclave, afin de créer une plate-forme de cluster de sites Web LVS avec équilibrage de charge et haute disponibilité.
        Lorsque vous utilisez Keepalived pour créer un cluster LVS, vous devez également utiliser l'outil de gestion ipvsadm, mais la plupart du travail sera effectué automatiquement par Keepalived, sans qu'il soit nécessaire d'exécuter manuellement ipvsadm.

1.3 Analyse du principe de mise en œuvre Keepalived

■ Keepalived adopte le protocole de sauvegarde à chaud VRRP pour réaliser la fonction de sauvegarde à chaud multi-machine du serveur Linux.
■ VRRP (Virtual Routing Redundancy Protocol) est une solution de sauvegarde pour les routeurs.

  • Plusieurs routeurs forment un groupe de sauvegarde à chaud et fournissent des services à l'extérieur via une adresse IP virtuelle partagée
  • Plusieurs routeurs forment un groupe de sauvegarde à chaud et fournissent des services à l'extérieur via une adresse IP virtuelle partagée
  • Si le routeur actuellement en ligne échoue, d'autres routeurs prendront automatiquement le relais de l'adresse IP virtuelle en fonction de la priorité définie et continueront à fournir des services

Insérez la description de l'image ici

1.4, Explication de cas Keepalived

■ Le basculement de la sauvegarde à chaud double système est réalisé par la dérive de l'adresse IP virtuelle, qui convient à divers serveurs d'applications.
■ Réalisation d'une sauvegarde à chaud double système basée sur le service WEB

                                                  【交  换  机】
                                                        ●
                                                        ●              漂移地址:192.168.100.100
                                                        ●      
               ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
               ● 		             ●                  ● 		              ●		               ●
               ●		             ●                  ● 		              ●		               ●
               ●		             ●                  ● 		              ●		               ●
           【调度器1】	         【调度器2】           【WEB1】               【WEB2】              【存储】
         192.168.100.21       192.168.100.22	  192.168.100.23       192.168.100.24        192.168.100.25 		       

1.4.1, configurer le serveur maître keepalived

■ Le répertoire de configuration keepalived se trouve dans / etc / keepalived /
■ keepalived.conf est le fichier de configuration principal

  • La section global_defs {…} spécifie les paramètres globaux
  • La section nom de l'instance vrrp_instance {...} spécifie les paramètres de secours VRRP
  • Le texte du commentaire commence par le symbole "!"
  • Directory samples /, fournit de nombreux exemples de configuration comme référence

■ Explication des options de configuration courantes

  • router_id HA_TEST_R1: Le nom du routeur (serveur)
  • vrrp_instance VI_1: définir l'instance de secours VRRP
  • state MASTER: état de redondance d'UC, MASTER représente le serveur maître
  • interface ens33: l'interface physique qui porte l'adresse VIP
  • virtual_router_id 1: le numéro d'identification du routeur virtuel, qui est cohérent pour chaque groupe de redondance d'UC
  • Le numéro d'identification du groupe de sauvegarde à chaud, indiquant s'il se trouve dans un groupe de sauvegarde à chaud
  • priorité 100: priorité, plus la valeur est élevée, plus la priorité est élevée
  • advert_int 1: le nombre de secondes entre les notifications (fréquence cardiaque)
  • auth_type PASS: type d'authentification
  • auth_pass 123456: chaîne de mot de passe
  • virtual_ipaddress {vip}: spécifiez une adresse de dérive (VIP), il peut y en avoir plusieurs

1.4.2, configurer le serveur esclave keepalived

■ La configuration du serveur de sauvegarde keppalived et la configuration principale ont trois options

  • router_id: défini comme nom libre
  • état: défini sur SAUVEGARDE
  • priorité: la valeur de priorité est inférieure à celle du serveur principal

■ Les autres options sont identiques à celles du maître

3. Déploiement expérimental de cluster LVS + Keelalived haute disponibilité

3.1, configuration de déploiement de cas

Nom système opérateur adresse IP
Maître LVS Centos7.6-x86_64 192.168.100.21
Sauvegarde LVS Centos7.6-x86_64 192.168.100.22
Serveur WebA Centos7.6-x86_64 192.168.100.23
Serveur Web B. Centos7.6-x86_64 192.168.100.24
Partage NFS Centos7.6-x86_64 192.168.100.25

Voici notre adresse de dérive (VIP): 192.168.100.10

Tout d'abord, lorsque nous faisons l'expérience, nous devons d'abord désactiver le pare-feu et la protection de base des 5 machines virtuelles, et configurer la source Yum locale.

3.2, configurez le planificateur principal 192.168.100.21

  • Ajuster les paramètres de réponse / proc
[root@localhost network-scripts]# vi /etc/sysctl.conf 
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

[root@localhost network-scripts]# sysctl -p     ###使其生效
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0  
  • Stratégie de répartition de charge claire
[root@localhost /]# ipvsadm -C
  • Ajuster les paramètres Keepalived
global_defs {
    
    
   router_id HA_TEST_R1                  ####本路由器的服务器名称  HA_TEST_R1
}
vrrp_instance VI_1 {
    
                         ####定义VRRP热备实列
   state MASTER                          ####热备状态,master表示主服务器
   interface ens33                       ####表示承载VIP地址的物理接口
   virtual_router_id 1                   ####虚拟路由器的ID号,每个热备组保持一致
   priority 100                          ####优先级,优先级越大优先级越高
   advert_int 1                          ####通告间隔秒数(心跳频率)
   authentication {
    
                          ####认证信息,每个热备组保持一致
      auth_type PASS                     ####认证类型
      auth_pass 123456                   ####认证密码
   }
   virtual_ipaddress {
    
                       ####漂移地址(VIP),可以是多个
      192.168.100.100
   }
}

virtual_server 192.168.100.100 80 {
    
            ####虚拟服务器地址(VIP)、端口
    delay_loop 15                        ####健康检查的时间间隔(秒)
    lb_algo rr                           ####轮询调度算法
    lb_kind DR                           ####直接路由(DR)群集工作模式
    persistence 60                       ####连接保持时间(秒),若启用请去掉!号
    protocol TCP                         ####应用服务采用的是TCP协议

    real_server 192.168.100.23 80 {
    
           ####第一个WEB站点的地址,端口
        weight 1                         ####节点的权重
        TCP_CHECK {
    
                          ####健康检查方式
	    connect_port 80                    ####检查端口目标
	    connect_timeout 3                  ####连接超时(秒)
	    nb_get_retry 3                     ####重试次数
	    delay_before_retry 4               ####重试间隔(秒)
	}
    }
    real_server 192.168.100.24 80 {
    
    
        weight 1
        TCP_CHECK {
    
    
	    connect_port 80
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 4
	}
    }
}
[root@localhost keepalived]# systemctl start keepalived                  ####启动keepalived
[root@localhost keepalived]# systemctl enable keepalived                 ####开机启动keepalived
[root@localhost keepalived]# ip addr show dev ens33                      ####查看主控制IP地址和漂移地址
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:b5:da:33 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.21/24 brd 192.168.100.255 scope global noprefixroute ens33    ## IP地址
       valid_lft forever preferred_lft forever
    inet 192.168.100.100/32 scope global ens33     ## 漂移地址
       valid_lft forever preferred_lft forever
    inet6 fe80::c574:d230:3778:e9dd/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

3.3. Configurer le planificateur esclave 192.168.100.22

  • Ajuster les paramètres de réponse / proc
[root@localhost network-scripts]# vi /etc/sysctl.conf 
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

[root@localhost network-scripts]# sysctl -p     ###生效
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0  
  • Stratégie de répartition de charge claire
[root@localhost /]# ipvsadm -C
  • Ajuster les paramètres Keepalived
global_defs {
    
    
   router_id HA_TEST_R2                  ####本路由器的服务器名称 HA_TEST_R2
}
vrrp_instance VI_1 {
    
                         ####定义VRRP热备实列
   state BACKUP                          ####热备状态,backup表示辅服务器
   interface ens33                       ####表示承载VIP地址的物理接口
   virtual_router_id 1                   ####虚拟路由器的ID号,每个热备组保持一致
   priority 99                           ####优先级,优先级越大优先级越高,这里的优先级要比主机小!
   advert_int 1                          ####通告间隔秒数(心跳频率)
   authentication {
    
                          ####认证信息,每个热备组保持一致
      auth_type PASS                     ####认证类型
      auth_pass 123456                   ####认证密码
   }
   virtual_ipaddress {
    
                       ####漂移地址(VIP),可以是多个
      192.168.100.100
   }
}

virtual_server 192.168.100.100 80 {
    
           
    delay_loop 15
    lb_algo rr
    lb_kind DR
    persistence 60
    protocol TCP

    real_server 192.168.100.23 80 {
    
    
        weight 1
        TCP_CHECK {
    
    
	    connect_port 80
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 4
	}
    }
    real_server 192.168.100.24 80 {
    
    
        weight 1
        TCP_CHECK {
    
    
	    connect_port 80
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 4
	}
    }
}      

3.4. Configurer le serveur de stockage: 192.168.100.25

[root@localhost ~]# rpm -q nfs-utils    ###如果没装,yum -y install nfs-utils
[root@localhost ~]# rpm -q rpcbind      ###如果没装,yum -y install rpcbind
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl start nfs

[root@localhost ~]# vi /etc/exports
/opt/Tom 192.168.100.0/24(rw,sync)
/opt/Jack 192.168.100.0/24(rw,sync)

[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# mkdir /opt/Tom /opt/Jack
[root@localhost ~]# echo "this is Tom" >/opt/Tom/index.html
[root@localhost ~]# echo "this is Jack" >/opt/Jack/index.html
[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/opt/Jack 192.168.100.0/24
/opt/Tom  192.168.100.0/24

3.5. Configurer le serveur WEB 1: 192.168.100.23

  • Configurer l'adresse IP virtuelle
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vi ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.100.100
NETMASK=255.255.255.255
ONBOOT=yes

[root@localhost network-scripts]# ifup lo:0
[root@localhost network-scripts]# sudo yum install net-tools   ## 最小化安装需要装这个,才可以用 ifconfig
[root@localhost network-scripts]# ifconfig
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.100.10  netmask 255.255.255.255
        loop  txqueuelen 1000  (Local Loopback)

[root@localhost network-scripts]# vi /etc/rc.local 
/sbin/route add -host 192.168.100.10 dev lo:0
[root@localhost network-scripts]# route add -host 192.168.100.10 dev lo:0
  • Ajuster les paramètres de réponse / proc
[root@localhost network-scripts]# vi /etc/sysctl.conf 
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

[root@localhost network-scripts]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
  • Installer la page de test de montage httpd
[root@localhost network-scripts]# yum -y install nfs-utils
[root@localhost ~]# showmount -e 192.168.100.25     ####如果还没发布,请到存储服务器发布下,exportfs -rv
Export list for 192.168.100.25:
/opt/Jack 192.168.100.0/24
/opt/Tom  192.168.100.0/24

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.25:/opt/Tom /var/www/html/
[root@localhost ~]# vi /etc/fstab 
192.168.100.25:/opt/Tom /var/www/html nfs defaults,_netdev 0 0        ###开机自动挂载,注意格式对齐
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# init 6   ## 重启测试一下
[root@localhost ~]# curl 192.168.100.23
this is Tom

Vous pouvez également saisir 192.168.100.23 dans le navigateur pour tester

Insérez la description de l'image ici

3.5. Configurer le serveur WEB 2: 192.168.100.24

  • Configurer l'adresse IP virtuelle
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vi ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.100.100
NETMASK=255.255.255.255
ONBOOT=yes

[root@localhost network-scripts]# ifup lo:0
[root@localhost network-scripts]# sudo yum install net-tools      ## 最小化安装需要装这个,才可以用 ifconfig
[root@localhost network-scripts]# ifconfig
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.100.10  netmask 255.255.255.255
        loop  txqueuelen 1000  (Local Loopback)

[root@localhost network-scripts]# vi /etc/rc.local 
/sbin/route add -host 192.168.100.10 dev lo:0
[root@localhost network-scripts]# route add -host 192.168.100.10 dev lo:0
  • Ajuster les paramètres de réponse / proc
[root@localhost network-scripts]# vi /etc/sysctl.conf 
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

[root@localhost network-scripts]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
  • Installer la page de test de montage httpd
[root@localhost network-scripts]# yum -y install nfs-utils
[root@localhost ~]# showmount -e 192.168.100.25     ####如果还没发布,请到存储服务器发布下,exportfs -rv
Export list for 192.168.100.25:
/opt/Jack 192.168.100.0/24
/opt/Tom  192.168.100.0/24

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.25:/opt/Jack /var/www/html/
[root@localhost ~]# vi /etc/fstab 
192.168.100.25:/opt/Jack /var/www/html nfs defaults,_netdev 0 0        ###开机自动挂载,注意格式对齐

[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# init 6  ## 重启测试一下
[root@localhost ~]# curl 192.168.100.24
this is Jack

Vous pouvez également saisir 192.168.100.24 dans le navigateur pour tester

Insérez la description de l'image ici

3.6. Tester si les programmateurs maître et esclave fonctionnent normalement

1. L'adresse MAC de la carte réseau ens33 du planificateur principal: 00: 0c: 29: b5: da: 33
2. Ouvrez cmd sur la machine réelle pour tester le ping 192.168.100.100
3. Arp -a a trouvé que le MAC dans la table de cache est 00: 0c: 29: b5: da: 33
prouve que l'adresse MAC du paquet de données vers le planificateur principal est perdue

Insérez la description de l'image ici
Vérifiez-le

Insérez la description de l'image ici4. Fermez maintenant keepalived dans le planificateur principal

[root@localhost ~]# systemctl status keepalived

5. Entrez ensuite ip addr show depuis le planificateur, et l'adresse de dérive a atteint le planificateur esclave.A ce moment, le planificateur esclave empêche le planificateur maître de fonctionner.

Insérez la description de l'image ici
6. À partir de l'adresse MAC de la carte réseau ens33 du planificateur: 00: 0c: 29: 53: 1f: 1a

7. Ouvrez cmd sur la machine réelle pour tester le ping 192.168.100.100

8. Arp -a trouve que le MAC dans la table de cache est 0: 0c: 29: 53: 1f: 1a, ce qui montre que lorsque le planificateur maître est arrêté, le planificateur esclave a remplacé le planificateur maître pour le travail, ce qui prouve que le paquet de données va à l'esclave L'adresse MAC du planificateur est perdue.

Insérez la description de l'image ici
Vérifiez-le

Insérez la description de l'image ici
9. Rouvrez keepalived.service

### 开启keepaliced
[root@localhost keepalived]# systemctl start keepalived.service

Insérez la description de l'image ici

3.7, vérifiez maintenant l'interrogation de l'équilibrage de charge

  • Entrez 192.168.100.100 dans le navigateur

Maintenant c'est "c'est Jack"

Insérez la description de l'image ici

  • La prochaine fois que la page est actualisée, elle passera à une autre page, pendant laquelle il y aura un temps d'attente

Maintenant c'est "This is Tom" et la vérification est réussie!

Insérez la description de l'image ici
Nous voici aujourd'huiCluster LVS + KeepalivedL'apprentissage est terminé.
Les points clés à maîtriser dans ce chapitre sont:

  1. Principales fonctions de Keepalived
  2. La différence entre le serveur maître Keepalived et le serveur esclave
  3. Créer un équilibrage de charge + un cluster haute disponibilité

Je suppose que tu aimes

Origine blog.csdn.net/m0_46563938/article/details/108748949
conseillé
Classement