Théorie + expérience: LVS + cluster Keepalived

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

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

2.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

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.

Planification d'adresse IP:
Adresse de dérive (VIP): 192.168.100.100 Planificateur
principal: 192.168.100.21 Planificateur
secondaire: 192.168.100.22
Serveur WEB 1: 192.168.100.23
Serveur WEB 2: 192.168.100.24
Serveur de stockage: 192.168.100.25

#####配置主调度器    192.168.32.21  ####### 关闭防火墙 

【1】调整/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

【2】调整keepalived参数
[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
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 fifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:bb:29:cc brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.21/24 brd 192.168.100.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.100.100/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:febb:29cc/64 scope link 
       valid_lft forever preferred_lft forever
#####配置辅调度器  192.168.100.22 ####### 关闭防火墙 

【1】调整/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

【2】调整keepalived参数
[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
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
	}
    }
}      
       
[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:44:0b:2a brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.22/24 brd 192.168.100.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe44:b2a/64 scope link 
       valid_lft forever preferred_lft forever   
#####配置存储服务器:192.168.100.25#####

rpm -q nfs-utils    ###如果没装,yum -y install nfs-utils
rpm -q rpcbind      ###如果没装,yum -y install rpcbind

[root@localhost ~]# vi /etc/exports
/opt/51xit 192.168.100.0/24 (rw,sync)
/opt/52xit 192.168.100.0/24 (rw,sync)

[root@localhost ~]# mkdir /opt/51xit /opt/52xit
[root@localhost ~]# echo "this is 51xit" >/opt/51xit/index.html
[root@localhost ~]# echo "this is 52xit" >/opt/52xit/index.html


[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# systemctl enable nfs
#####配置节点服务器:192.168.100.23####

[root@localhost ~]# yum -y install httpd   ###安装Apache
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# yum -y install nfs-utils   ###安装nfs
[root@localhost ~]# mount 192.168.100.25:/opt/51xit /var/www/html/  ###临时挂载
###测试:浏览器输入192.168.100.23就能看见51网页###

[root@localhost ~]# vi /etc/fstab 
192.168.100.25:/opt/51xit /var/www/html nfs defaults,_netdev 0 0   ###永久挂载

【1】配置虚拟IP地址
[root@localhost ~]# cd /etc/sysconfig/network-scripts/   ###进入网卡目录
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0   ###复制一个网卡,命名为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]# ifconfig   ###查看一下

【2】调整/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
[root@localhost network-scripts]# route add -host 192.168.100.10 dev lo:0  ###手工配置一条路由
[root@localhost network-scripts]# vi /etc/rc.local 
/sbin/route add -host 192.168.100.100 dev lo:0
#####配置节点服务器:192.168.100.24####

[root@localhost ~]# yum -y install httpd   ###安装Apache
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# yum -y install nfs-utils   ###安装nfs
[root@localhost ~]# mount 192.168.100.25:/opt/52xit /var/www/html/  ###临时挂载
###测试:浏览器输入192.168.100.24就能看见52网页###

[root@localhost ~]# vi /etc/fstab 
192.168.100.25:/opt/52xit /var/www/html nfs defaults,_netdev 0 0   ###永久挂载

【1】配置虚拟IP地址
[root@localhost ~]# cd /etc/sysconfig/network-scripts/   ###进入网卡目录
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0   ###复制一个网卡,命名为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]# ifconfig   ###查看一下

【2】调整/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
[root@localhost network-scripts]# route add -host 192.168.100.10 dev lo:0  ###手工配置一条路由

Test: Entrez 192.168.100.100 dans le navigateur, et l'un des sites Web apparaîtra, et l'autre site Web apparaîtra après l'actualisation après un certain temps, et l'équilibrage de charge LVS + Keepalived est terminé.
Insérez la description de l'image ici
Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44733021/article/details/108764266
conseillé
Classement