Développement de programme

Apache Dual pour un équilibrage de charge hautement disponible

Installation Apache sous centos7 et démarrage automatique tutoriel d'installation keepalived Installation tutoriel ci-dessus est installé sur les deux machines [...]

Catalogue des articles

Installation Apache et démarrage automatique sous centos 7

Tutoriel d'installation KeepPalived

Installez le tutoriel ci-dessus pour installer Apache et Keepalived sur les deux machines.

Configurer le keepalived de la première machine

Le contenu du fichier de configuration est le suivant :

Éditer /etc/keepalived/keepalived.conf

# vi /etc/keepalived/keepalived.conf, ajoutez ce qui suit

! Fichier de configuration pour keepalived

global_defs {
Notification _ e-mail
admin@example.com
}
notification_email_from www.example.com
smtp_server www.example.com
smtp _ connect _ timeout 30
Router_id linux01
}

vrrp_instance VI_1 { # Définir une instance
Etat Backup # est défini comme sauvegarde, puis contrôle par priorité quelle promotion est maître
interface eth0
virtual_router_id 51
priorité 100
nopreempt # Réglez ce paramètre dans la priorité élevée de l'unité, pratique après la récupération du maître
advert_int 1 # peut prendre en charge automatiquement
Authentification
auth _ type PASS
auth _ pass 1111
}
virtual _ ipaddress {
10.0.0.199 # Activer eth0 : 0 ici avec l'étiquette label
}
}

virtual_server www.example.com 80 { # Ici en bas, c'est la définition LVS
delay_loop 6
rr lb _ algo
Lb _ Kind DR
nat_mask www.example.com
protocole TCP

Real_server www.example.com 80 { L'un d'entre eux est un service Web local
poids 1
TCP _ CHECK {
connect _ timeout 3
}
}
Real_server www.example.com 80 { # Un autre service Web
poids 1
TCP _ CHECK {
connect _ timeout 3
}
}
}
Le fichier Keepalived pour la deuxième machine est le fichier suivant :

Éditer /etc/keepalived/keepalived.conf

# vi /etc/keepalived/keepalived.conf, ajoutez ce qui suit

! Fichier de configuration pour keepalived

global_defs {
Notification _ e-mail
admin@example.com
}
notification_email_from www.example.com
smtp_server www.example.com
smtp _ connect _ timeout 30
router_id linux02
}

vrrp_instance VI_1 { # Définir une instance
Etat Backup # est défini comme sauvegarde, puis contrôle par priorité quelle promotion est maître
interface eth0
virtual_router_id 51
Priorité 50
advert_int 1 # peut prendre en charge automatiquement
Authentification
auth _ type PASS
auth _ pass 1111
}
virtual _ ipaddress {
10.0.0.199 # Activer eth0 : 0 ici avec l'étiquette label
}
}

virtual_server www.example.com 80 { # Ici en bas, c'est la définition LVS
delay_loop 6
rr lb _ algo
Lb _ Kind DR
nat_mask www.example.com
protocole TCP

Real_server www.example.com 80 { L'un d'entre eux est un service Web local
poids 1
TCP _ CHECK {
connect _ timeout 3
}
}
Real_server www.example.com 80 { # Un autre service Web
poids 1
TCP _ CHECK {
connect _ timeout 3
}
}
}
Une fois que le fichier de configuration keepalived a été modifié, commencez à modifier la page par défaut d'apache vi / opt / apache / apache-2.4.29 / htdocs / index.html tant que le contenu des deux fichiers par défaut n'est pas le même.

Adresse de loopback de démarrage natif

Comme nous le savons tous,LvsDans le mode dr, l'adresse de boucle doit être démarrée sur le serveur réel, de sorte que, pour construire l'équilibrage de charge des deux machines, vous devez également démarrer l'adresse de boucle correspondante sur la machine locale pour réaliser la fonction souhaitée. Le script est le suivant : (Les deux scripts suivants sont originaux de moustiques, l'adresse du site Web de moustiques http://www.wenzizone.cn)
# vi / usr / local / bin / startlo

#!/ bin / sh

VIP = 10.0.0.199

Le cas « $1 »
Arrêter)
# fermer l'interface lo : 0

echo $"Close lo : 0 interface"
/sbin/route del - host $VIP dev lo : 0
/ sbin / ifconfig lo : 0 vers le bas
echo « 0 » > /proc/sys/net/ipv4/conf/all/arp_announce
echo « 0 » > /proc/sys/net/ipv4/conf/all/arp_ignore
echo « 0 » > /proc/sys/net/ipv4/conf/lo/arp_announce
echo « 0 » > /proc/sys/net/ipv4/conf/lo/arp_ignore
;;
démarrage).
# démarrer lo : 0 interface

echo $"Démarrer l'interface lo : 0 "
/sbin/ifconfig lo : 0 $VIP / 32 diffuser $VIP up
/sbin/route add - host $VIP dev lo : 0
echo « 2 » > /proc/sys/net/ipv4/conf/all/arp_announce
echo « 1 » > /proc/sys/net/ipv4/conf/all/arp_ignore
echo « 2 » > /proc/sys/net/ipv4/conf/lo/arp_announce
echo « 1 » > /proc/sys/net/ipv4/conf/lo/arp_ignore
;;
*)
echo $"Utilisation : $0 (démarrer| Arrêtez-vous)
Sortie 1
;;
ESAC

Cependant, comme Keepalived n'a pas le command direct pour contrôler le démarrage et l'arrêt de l'adresse de boucle en boucle comme dans Heartbeat, nous avons besoin d'un jugement artificiel sur quelle machine l'adresse de boucle en boucle en boucle devrait être démarrée, donc Mosquito a écrit le script suivant :

# vi / usr / local / bin / check _ interface

#!/ Le bin / bash
#
Auteur : Mosquito
#
Description du script :
# Ce script est utilisé pour déterminer si le serveur actuel est maître ou non
# Démarrer l'adresse de boucle de retour si le serveur actuel n'est pas maître
# sinon arrêt de l'adresse loopback
#
# VIP _ interface S'il vous plaît définir en fonction de votre propre situation, c'est l'interface VIP
# lo _ interface S'il vous plaît définir en fonction de votre propre situation, est une interface d'adresse de boucle de retour

VIP_interface = » eth0 : 0 ′′
lo_interface = »lo :0 ′′

i = 10

Alors que [$i ! =] 0]
do
/ sbin / ifconfig| grep $VIP_interface &> / dev / null
Retour = $ ?
si [ !] $retval - eq 0] ;
/ sbin / ifconfig| grep $lo _ interface &> / dev / null
Retour = $ ?
si [ !] $retval - eq 0] ;
/ usr / local / bin / startlo start
fi
Autre
/ sbin / ifconfig| grep $lo _ interface &> / dev / null
Retour = $ ?
si [$retval - eq 0] ; alors
/ usr / local / bin / startlo stop
fi
fi
i = 10
sommeil 10
fait

Une fois que les deux machines ont construit deux nouveaux scripts, tout est prêt à être testé.

Tout d'abord, définissez tous les scripts nécessaires avec des autorisations exécutables. Démarrer le service approprié à son tour

A, apache démarre aléatoirement, pas besoin de démarrer
B, # / usr / local / bin / check _ interface
C, # service keepalived démarrer
S'il n'y a pas d'erreur, cela signifie que le service a été démarré. Le journal keepalived est stocké dans / var / log / messages. S'il y a une erreur, vérifiez-le par vous-même.

Test 1 : Tester l'équilibrage de charge dans l'état actuel

Méthode : Ouvrez le navigateur IE, tapez http://192.168.211.110, puis utilisez ctrl + F5 pour actualiser, vous pouvez voir le contenu de la page Web basculer entre linux01 et linux02

Test 2 : Arrêter Keepalive pour linux01 pour tester l'équilibrage de charge

Méthodes :

A, /etc/init.d/keepalived stop
Puis attendez quelques secondes pour voir que l'adresse lo : 0 sur linux01 a démarré et lo : 0 sur linux02 a arrêté.

B, ouvrez le navigateur IE, entrez http://192.168.211.110, puis continuez à utiliser ctrl + F5 pour actualiser, vous pouvez voir le contenu de la page Web basculer entre linux01 et linux02

Test 3 : Allumez Keepalived sur linux01 et observez si linux01 retourne à master

Méthode : Démarrer le programme keepalived et observer si l'interface eth0 : 0 a été démarrée sur linux01 et si l'interface lo : 0 s'arrête en même temps, l'interface eth0 : 0 s'arrête sur linux02 et si l'interface lo : 0 démarre en même temps.

Apache Double Machine Construction High Availability Load Balancing Tutoriel a été écrit, avez-vous des questions peuvent laisser un message ci-dessous pour discuter de la communication