Environnement de combat réel (CentOS7)
VIP 10.211.55.180 (IP virtuelle) LVS1 10.211.55.151 (LVS principal) LVS2 10.211.55.152 (LVS en veille) RS1 10.211.55.171 (serveur réel 1) RS2 10.211.55.172 (serveur réel 2)
Initialiser tous les nœuds de l'environnement
iptalbes -F #Vider le pare-feu
systemctl stop firewalld #Fermez le pare-feu
systemctl disable firewalld # Empêche le pare-feu de démarrer automatiquement
setenforce 0 # ferme temporairement selinux
sed -i 's / ^ SELINUX =. * $ / SELINUX = désactivé / g' / etc / selinux / config # 关闭 selinux
yum -y installer epel-release #Installer epel source
Fonctionnement LVS1,2
1. Installez keepalived ipvsadm
yum -y installer keepalived ipvsadm
[root @ localhost ~] # lsmod | grep ip_vs #Vérifiez le module ipvs
ip_vs_rr 12600 1
ip_vs 145497 3 ip_vs_rr
nf_conntrack 139264 9 ip_vs, nf_nat, nf_nat_ipv4, nf_nat_ipv6, xt_conntrack, nf_nat_masquerade_ipv4, nf_conntrack_netlink, nf_conntrack_ipv4, nf_conntrack_ipv4, nf_conntrack_ipv4, nf_conntrack_ipv4
libcrc32c 12644 4 xfs, ip_vs, nf_nat, nf_conntrack
2. Configurer keepalived (LVS1, 2)
2.1 Modifier le fichier de configuration de keepalived
[root @ localhost ~] # cd / etc / keepalived /
[root @ localhost keepalived] # cat keepalived.conf
! Keepalived le fichier de configuration pour global_defs { notification_email { [email protected] } notification_email_from [email protected] smtp_server 127.0.0.1 smtp_connect_timeout 30 l'router_id du LVS_DEVEL vrrp_skip_check_adv_addr # # vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_instance VI_1 { Etat LVS1 est ici le # MASTER MASTER, Ensuite, LVS2 est changé en interface BACKUP eth0 # CENTOS7 ens33 virtual_router_id 51 #Si le main et la sauvegarde sont les mêmes authentification { auth_type PASS priorité 100 # LVS1 est égal à 100, alors LVS2 est inférieur à 100, par exemple 90, plus le poids est élevé, le VIP flottant de quel côté 99 89 advert_int 1 real_server 10.211.55.172 80 {# 后端 RS2 检测 auth_pass 1111 } virtual_ipaddress { 10.211.55.180 #VIP } } virtual_server 10.211.55.180 80 {#VIP delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 50 protocole TCP real_server 10.211.55.171 80 {#后端RS1检测 poids 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } TCP_CHECK { connect_timeout 3 poids 1 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }
2.2 Configurer le démarrage (LVS1, 2)
systemctl activer keepalived
systemctl start keepalived
3. Configurez LVS, exécutez le script suivant (LVS1, 2) et définissez le script pour qu'il démarre
vi /opt/lvs_dr.sh
#! / bin / sh # description: Démarrer LVS du serveur Director VIP = 10.211.55.180 RIP1 = 10.211.55.171 RIP2 = 10.211.55.172 case "$ 1" au début) echo "start LVS of Director Server" # définir l'adresse IP virtuelle et paramètre sysctl # / sbin / ifconfig eth0: 0 $ diffusion VIP $ masque de réseau VIP 255.255.255.255 up # route add -host $ VIP dev eth0: 0 echo "1"> / proc / sys / net / ipv4 / ip_forward #Clear IPVS table / sbin / ipvsadm -C #set LVS / sbin / ipvsadm -A -t $ VIP: 80 -s rr # -p 600 # 需要 会话 持久 化 则把 此处 的 -p 600 取消 注释 / sbin / ipvsadm -a -t $ VIP: 80 -r $ RIP1: 80 -g / sbin / ipvsadm -a -t $ VIP: 80 -r $ RIP2: 80 -g #Run LVS / sbin / ipvsadm ;; stop) echo "ferme LVS Directorserver" echo "0"> / proc / sys / net / ipv4 / ip_forward / sbin / ipvsadm -C # / sbin / ifconfig eth0: 0 down ;; *) echo "Utilisation: $ 0 {start | stop}" exit 1 esac
chmod + x /opt/lvs_dr.sh #Ajouter une autorité d'exécution
echo "/opt/lvs_dr.sh start" >> / etc / profile #Démarrage automatique
4. Configurez le fonctionnement RS et effectuez les opérations suivantes (RS1, 2)
Installer nginx
yum -y install nginx # RS1, 2 sont installés
echo 10.211.55.171> /usr/share/nginx/html/index.html # RS1 en fonctionnement
echo 10.211.55.172> /usr/share/nginx/html/index.html # RS2 en fonctionnement
systemctl start nginx # RS1, 2 fonctionnent tous
Configurez le script RS et configurez le démarrage pour qu'il démarre automatiquement
vi /opt/lvs_rs.sh
#! / bin / bash VIP = 10.211.55.180 / sbin / ifconfig lo: 0 $ diffusion VIP $ masque de réseau VIP 255.255.255.255 up / sbin / route add -host $ VIP dev lo: 0 echo "1"> / proc / sys / net / ipv4 / conf / lo / arp_ignore echo "2"> / proc / sys / net / ipv4 / conf / lo / arp_announce echo "1"> / proc / sys / net / ipv4 / conf / all / arp_ignore echo " 2 ″> / proc / sys / net / ipv4 / conf / all / arp_announce sysctl -p
Cette opération consiste à lier une adresse IP virtuelle sur le périphérique de bouclage et à définir son masque de sous-réseau sur 255.255.255.255 pour maintenir l'intercommunication avec l'adresse IP virtuelle sur le serveur Director, puis à interdire la demande ARP locale.
Étant donné que l'adresse IP virtuelle, qui est l'adresse VIP ci-dessus, est partagée par Director Server et tous les serveurs Real, s'il y a une demande ARP pour l'adresse VIP, si le Director Server répond à tous les serveurs Real, il y aura un problème. Par conséquent, il doit être interdit. Le vrai serveur répond à la requête ARP. Le rôle du script lvsrs est de faire en sorte que Real Server ne réponde pas aux requêtes arp.
chmod + /opt/lvs_rs.sh #Ajouter des autorisations d'exécution
echo "/opt/lvs_rs.sh" #Démarrage automatique
5. Test
Trouvez un client et exécutez la commande suivante
-> $ pour i dans `seq 20`; do curl 10.211.55.180; done
10.211.55.171
10.211.55.172
10.211.55.171
10.211.55.172
10.211.55.171
10.211.55.172
10.211.55.171
10.211.55.172
10.211.55.171
10.211.55.172
10.211.55.171
10.211.55.172
10.211.55.171
10.211.55.172
10.211.55.171
10.211.55.172
10.211.55.171
10.211.55.172
10.211.55.171
10.211.55.172