Heim >Backend-Entwicklung >PHP-Tutorial >Nginx Keepalived Hochverfügbarkeits-Lastausgleich

Nginx Keepalived Hochverfügbarkeits-Lastausgleich

WBOY
WBOYOriginal
2016-08-08 09:27:521171Durchsuche

Es gibt nicht viel zu sagen, Nginx-Installation und -Konfiguration sowie Lastausgleich. Sie können einen anderen Artikel lesen, den ich geschrieben habe: „Praxis des Nginx-Lastausgleichs“, und über den Lastausgleich können Sie lesen, was ich geschrieben habe. Die anderen beiden Artikel, einer ist „lvs+keepalived Load Balancing“ und das andere ist „haproxy+keepalived Load Balancing“. Informationen zu den Unterschieden zwischen den drei Arten des Lastausgleichs finden Sie in einem von mir nachgedruckten Artikel „Software Level Load Balancer“ (Einführung und). Vergleich der Funktionen von LVS/HAProxy/Nginx)“, gehen wir direkt zu den Konfigurationsschritten:

1. Systemumgebung

[einfache] Ansicht Klarschrift

  1. Systemversion: CentOS Release 5.9 (Final) x86 32-Bit
  2. Nginx-Version: 1.2 . 8
  3. Keepalived-Version: 1.2.4
  4. Master-Keepalived:192.168.207.130
  5. Von keepalived:192.168.207.131
  6. VIP: 192.168.207.140
  7. WEB_1:192.168.207.129 Port 80 🎜 >WEB_2:192.168.207.130. 808 0 Port
  8. WEB_3:192.168.207.131 8080-Port
  9. 2. Benutzerdefinierte Nginx-Konfigurationsdatei
In Betrieb 192.168.207.130 und 192.168.207.131


[einfache] Ansicht Klarschrift

useradd nginx
  1. vi /usr/local/nginx/conf/nginx.conf
  2. Der Inhalt ist wie folgt:

[einfache] Ansicht Klarschrift
  1. #Running user
  2. user nginx nginx; 
  3. #Globales Fehlerprotokoll und PID-Datei 
  4. error_log-Protokolle/Fehlermeldung
  5. pid logs/nginx.pid;
  6. events {                                                                                                                                    Prozesse* worker_connections
  7. }
  8. #Richten Sie den http-Server ein und verwenden Sie seine Reverse-Proxy-Funktion, um Lastausgleichsunterstützung bereitzustellen 🎜>                                                                                                           >
  9. default_type application/octet- stream; #Standarddatentyp
  10. #Protokollformat festlegen
  11. log_format main '$ remote_addr - $remote_user [$time_local] '
  12. '"$request" $status $bytes_sent '
  13. '"$http_referer" "$ http_user_agent" ' '
  14. '"$gzip_ratio"'; >
  15. log_format download '$remote_addr - $remote_user [$time_local] '
  16. '"$request" $status $bytes_sent '
  17. '"$http_referer" "$http_user_agent" '
  18. '"$http_range" "$sent_http_content_range"'
  19. #Anforderungspuffer festlegen
  20. client_header_buffer_size 1k;
  21. large_client_header_buffers 4 4k; 
  22. #Gzip-Modul aktivieren
  23. #gzip ein; > #gzip_buffers 4 8k;
  24. #gzip_types text/plain; 🎜>
  25. #postpone_output 1460;
  26. #Zugriffsprotokoll festlegen 🎜> client_header_timeout 3m;
  27. client_body_timeout 3m; >
  28. tcp_nopush on; keepalive_timeout 65; 🎜>
  29.                                          🎜> Der Parameter #weigth stellt das Gewicht dar. Je höher das Gewicht ist , desto größer ist die Wahrscheinlichkeit, zugewiesen zu werden
  30. Server 192.168.207.131:8080 Gewicht=5;
  31. }
  32. Server { Webdienst einrichten, Überwachung 8080 Port
  33. Listen 8080;
  34. Servername 192.168.207.131;# > index index.html index.htm;
  35. root /var /www /html;
  36. hören 80;
  37.                                    ;                                                                                                                            #Wenn es viele Dateien gibt, wird diese Methode aufgrund des Caching-Effekts nicht empfohlen durch Tintenfisch ist besser.                                                 
  38. #Lastausgleich aktivieren auf „/“
  39. Standort / {
  40.          Proxy_pass http: //mysvr; #Back-End-Webserver in diesem Format verwenden
  41. Proxy_Redirect Off;                   ;
  42. Proxy_set_header für; 
  43.                                 0; 🎜>
  44. Proxy_read_timeout 90
  45. Proxy_buffer_size 4k; Proxy_buffers 4 32K;
  46. Proxy_temp_file_write_size 🎜>  
  47. #Fügen Sie bei der Installation den Parameter --with-http_status_module hinzu > location/NginxStatus { _status on;                                         🎜>
  48. auth_basic_user_file conf/htpasswd ;  🎜> } 
  49. 3. Keepalived-Konfigurationsdatei anpassen
  50. [einfache] Ansicht Klarschrift
  51. vi /etc/keepalived/keepalived.conf
  52. Der Inhalt ist wie folgt:
  53. [einfache] Ansicht Klarschrift
    1. global_defs {
    2. notification_email {
    3. root@localhost.localdomain
    4. smtp_connect_timeout 30
    5. router_id LVS_DEVEL
    6. }
    7. vrrp_script chk_http_port {
    8. script "/etc/keepalived/check_nginx.sh" ###Überwachungsskript
    9. Intervall 2 Intervall ### Überwachungszeit
    10. Gewicht 2 vrrp_instance vi_1 {
    11. Status Master 🎜 >>
    12. virtual_router_id 51 ### Die beiden Server müssen gleich sein
    13. Priorität 101                            ### Der Gewichtungswert MASTRE muss höher sein als BAUCKUP
    14. Authentifizierung {
    15. auth_pass 1111
    16. }
    17. track_script {
    18. 🎜>
    19.                                                                              >
    20. virtual_ipaddress {
    21. 192.168.207.140 ### VIP-Adresse
    22. }
    23. }
    24. 4 benutzerdefiniertes Skript
    25. [einfache] Ansicht Klarschrift
      1. vi /etc/keepalived/check_nginx.sh >[einfache] Ansicht Klarschrift

      !/bin/bash

      A=`ps -C nginx --no-header |wc -l`                                                                                                     ## Wenn kein Prozess Null wert ist
      1. /usr/local/nginx/sbin/nginx
      2. Sleep 3
      3. if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
      4. /etc/init .d/keepalived stop Prozess
      5. fi
      6. fi Zum Starten starten Sie zuerst Nginx. Wenn es nach 3 Sekunden noch nicht gestartet ist, wird das Keepalived ausgeführt Der Prozess wird ebenfalls geschlossen, sodass Keepalived die Hochverfügbarkeit übernehmen und bereitstellen kann. Hier sorgt der Keepalived-Dienst für Hochverfügbarkeit und Nginx stellt den Lastausgleich für Backend-Webserver bereit.
      7. Sie müssen dem Skript auch Ausführungsberechtigungen hinzufügen, wie folgt
      8. [einfache] Ansicht Klarschrift
      9. chmod +x /etc/keepalived/check_nginx.sh

      5. Starten Sie den Dienst und testen Sie
      Auf WEB_1 habe ich gestern Abend den mit dem System gelieferten Apache-Webserver verwendet Ich muss nur starten. Ein gutes Master-Slave-Keepalived ist in Ordnung, da es das Skript check_nginx.sh verwendet, um Nginx automatisch zu starten. Alles hat begonnen.

      Besuchen Sie http://192.168.207.140, um abwechselnd auf den Inhalt der drei Back-End-Webserver zuzugreifen.

      Hier schalten wir den Haupt-Keepalived-Dienst aus, um die Hochverfügbarkeit zu testen.

      Dann wird er auf dem Slave sein keepalived server /var/log/messages Protokolle wie diese anzeigen
      1. [einfache] Ansicht Klarschrift

      19. April 17:42:44 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Übergang zum MASTER STATE



      19. April 17:42:45 localhost Keepalived_vrrp: VRRP_Instance(VI_1) tritt in den MASTER-STATUS ein



      19. April 17:42:45 localhost Keepalived_vrrp: VRRP_Instance(VI_1) stellt Protokoll-VIPs ein . 

      19. April 17:42:45 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Senden von kostenlosen ARPs auf eth0 für 192.168.207.140

      1. 19. April 17:42 :45 localhost Keepalived_vrrp: Netlink Reflector meldet IP 192.168.207.140 hinzugefügt 19. April 17:42:45 localhost Keepalived_healthcheckers: Netlink Reflector meldet IP 192.168.2 07.140 hinzugefügt
      2. 19. April 17:42:45 localhost avahi-daemon[4204]: Registrieren eines neuen Adressdatensatzes für 192.168.207.140 auf eth0

      3. Besuchen Sie weiterhin http://192.168.207.140, Sie können weiterhin auf die drei Back-End-Webserver zugreifen
        Öffnen Sie dann das Keepalived des ursprünglichen Besitzers, Sie können die Protokolle beobachten der ursprüngliche Slave-Keepalived-Server

        [einfache] Ansicht anzeigen Klarschrift

        1. 19. April 17:42:50 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Senden von kostenlosen ARPs auf eth0 für 192.168.207.140
        2. 19. April 17:44:06 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Anzeige mit höherer Priorität erhalten
        3. 19. April 17:44:06 localhost Keepalived_vrrp: VRRP_Instance( VI_1) Eintritt in den BACKUP-STATUS
        4. 19. April 17:44:06 localhost Keepalived_vrrp: VRRP_Instance(VI_1) entfernt Protokoll-VIPs. :06 localhost Keepalived_vrrp: Netlink Reflector meldet IP 192.168.207.140 entfernt
        5. 19. April 17:44:06 localhost Keepalived_healthcheckers: Netlink Reflector meldet IP 192.168.207.140 entfernt
        6. 19. April 17:44:06 localhost avahi-daemon[ 4204]: Adressdatensatz für 192.168.207.140 auf eth0 wird zurückgezogen. Das ursprüngliche Master-Slave-Ergebnis wird wiederhergestellt.
        7. In der Produktionsumgebung hängt sich möglicherweise auch der Back-End-Computer auf, aber Sie müssen sich darüber keine Sorgen machen, Nginx weist die Sitzung automatisch einem guten Back-End-Webserver zu
        ok, hier ist alles vorbei, üben Sie persönliche Tests, ich wünsche Ihnen viel Erfolg
        Von: http://blog.csdn.net/ zmj_88888888 /article/details/8825471
        Das Obige stellt den Hochverfügbarkeits-Lastausgleich von Nginx vor, einschließlich Aspekten des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn