Nginx Reverse Proxy- und Load Balancing-Konfiguration
Serverplattform CentOS 6
Ladeplanung: 192.168.137.16 Nginx-1.5.2
Server 1: 192.168.137.17 Nginx integriert php
server2: 192.168.137.18 Nginx integriert php
MySQL-Proxy: 192.168.137.26 MySQL-Proxy
mysqlmaster: 192.168.137.27 mysqlmaster
mysqlslave1: 192.168.137.28 mysqlslave1
mysqlslave2: 192.168.137.29 mysqlslave2
WIN7-Client 192.168.137.1 IE-Kernel-Browser
Umsetzungsprozess: Kunde stellt eine Anfrage,Es wird auf die IP des Lastplanungsservers aufgelöst,Der Scheduling-Server leitet die Anfrage weiter an
Mitgliedsserver server1 oder server2, Der Mitgliedsserver verarbeitet die Anfrage,Durch direktes Finden statischer Daten oder Abfragen des mysql-Master-Slave des Backends
Cluster,Geben Sie das Ergebnis an den Lastplanungsserver zurück,Abschließend erhält der Client das Ergebnis vom Load-Dispatch-Server。
1. Laden Sie die Scheduling-Serverinstallation nginx-1.5.2
(1) Führen Sie rpm -qa aus, um gcc zu überprüfen , gcc-c ++ ,machen ,Ob libtool etc. installiert sind,Wenn nicht, verwenden Sie zur Installation bitte den Befehl rpm oder yum。
(2) Installieren Sie die openssl-Bibliothek
tar zxvf openssl-1.0.1c.tar.gz
./konfigurieren (Es müssen keine benutzerdefinierten Parameter hinzugefügt werden)
machen && make install
(3) PCRE installieren
tar -zxvf pcre-8.34.tar.gz
./konfigurieren –Präfix = / usr / local / pcre
machen && make install
(4) Installieren Sie die neueste Bibliotheksdatei von zlib
tar zxvf zlib-1.2.8.tar.gz
./konfigurieren –Präfix = / usr / local / zlib
machen && make install
(5) Installieren Sie nginx-1.5.2
groupadd -r nginx
useradd -r -g nginx -s /bin/false -M nginx
nginx Konfigurationsparameter
./konfigurieren –Präfix = / usr / local / nginx \
–error-log-path=/var/log/nginx/error.log \
–http-log-path=/var/log/nginx/access.log \
–pid-path=/var/run/nginx/nginx.pid \
–lock-path=/var/lock/nginx.lock \
–user=nginx \
–Gruppe=nginx \
–with-http_ssl_module \
–with-http_stub_status_module \
–http-proxy-temp-path = / var / tmp / nginx / proxy \
–http-fastcgi-temp-path=/var/tmp/nginx/fcgi \
–mit-pcre
Kompilieren und installieren
machen && make install
nginx starten
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
Browsereingabe http://localhost gibt die nginx-Seite erfolgreich zurück。
(6) nginx-Konfiguration
vim /usr/local/nginx/conf/nginx.conf
unter dem http-Modul,Fügen Sie den stromaufwärts gelegenen Teil hinzu,Wählen Sie den geeigneten Algorithmus entsprechend Ihren Anforderungen,Wenn die Leistung der Mitgliedsserver stark variiert,
Sie können das entsprechende Gewicht (Gewicht) einstellen, Mitglieder mit höherem Gewicht,Je größer die Wahrscheinlichkeit, die Anfrage zu erhalten。
stromaufwärts 192.168.137.16 {
ip_hash;
Server 192.168.137.17:80;
Server 192.168.137.18:80;
}
Ort / Abschnitt ändern,Dieser Teil zeigt die Annahme jeder Anfrage an,Leiten Sie jetzt einfach die empfangene Anfrage an http weiter://192.168.137.16,
Upstream wird nach einem bestimmten Ausgleichsalgorithmus server1 und server2 zugewiesen。
wie folgt:
Ort / {
# Root-HTML;
# index index.html index.htm;
Proxy_pass http://192.168.137.16;
proxy_set_header Host $host;
Proxy_Set_Header X-Real-IP $remote_addr;
Proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Abschließend speichern und beenden,nginx neu starten,Der Lastplanungsserver ist konfiguriert。
2. Mitgliedsserver server1 und server2 Konfiguration
Da Mitgliedsserver tatsächlich die Anforderungsverarbeitung durchführen,Geben Sie entweder statische Abfrageergebnisse direkt zurück,Verbinden Sie sich entweder über PHP mit mysql und geben Sie das Ergebnis dynamisch zurück,
Daher müssen Mitgliedsserver nginx installieren und php integrieren ,mysql kann auf demselben Server installiert werden,Kann auch auf anderen Servern installiert werden。Hier
Wählen Sie die Bereitstellung von drei zusätzlichen MySQL-Servern aus,Und konfigurieren Sie die Master-Slave-Synchronisation,Realisieren Sie eine Lese-Schreib-Trennung。Bieten Sie starke Unterstützung für hohen gleichzeitigen Zugriff。
Die Konfiguration von Server1 und Server2 kann sich auf die LNMP-Umgebungskonstruktion dieser Site beziehen
Nach erfolgreicher Installation von LNMP,Öffnen Sie die Ports 80 und 3306。nginx.conf bearbeiten ,Ändern Sie den Domänennamen in www.roamway.com
Die Konfigurationsdatei ist wie folgt:
Benutzer nginx nginx;
worker_processes auto;
error_log /var/log/nginx_error.log ;
pid /usr/local/nginx/logs/nginx.pid;
#Gibt den Wert für maximale Dateideskriptoren an, die von diesem Prozess geöffnet werden können.
worker_rlimit_nofile 5120;
Veranstaltungen
{
epol verwenden;
worker_connections 5120;
multi_accept ein;
}
http
{
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 50m;
sendfile on;
tcp_nopush ein;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
gzip an;
#limit_conn_zone $binary_remote_addr zone=perip:10m;
##Wenn Sie limit_conn_zone aktivieren,hinzufügen “limit_conn perip 10;” zum Serverbereich.
server_tokens aus;
#Protokollformat
log_format Zugriff ‘$remote_addr – $remote_user [$time_local] “$Anfrage” ‘
‘$status $body_bytes_gesendet “$http_referer” ‘
‘”$http_user_agent” $http_x_forwarded_for’;
access_log aus;
Server
{
Hör mal zu 80;
Servername www.roamway.com;
index index.html index.htm index.php;
root /usr/local/nginx/html;
#Fehlerseite 404 /404.html;
binden Sie enable-php.conf ein;
Standort /nginx_status
{
stub_status an;
access_log aus;
}
Lage ~ .*\.(gif|jpg|JPEG|png|bmp|swf)$
{
läuft am 30d ab;
}
Lage ~ .*\.(js|CSS)?$
{
läuft 12h ab;
}
Lage ~ /\.
{
alles leugnen;
}
access_log /var/log/nginx/access.log-Zugriff;
}
include vhost / *. conf;
}
Erstellen Sie eine neue Datei phpinfo.php,Schreiben Sie den folgenden Code:
<?php
phpinfo();
?>
Der Browser gibt die
http://192.168.137.17/phpinfo.php, http://192.168.137.18/phpinfo.php
Sie können den PHP-Parsing-Effekt von server1 und server2 sehen。
3. Website importieren
Verwenden Sie einen FTP-Client,Laden Sie meine Website www.roamway.com und die lokale Datenbank herunter,wie folgt:
Laden Sie es dann in das Webverzeichnis von server1 hoch,/usr/local/nginx/html
Mit dem phpmyadmin-Tool,Erstellen Sie eine Roamway-Datenbank,Laden Sie dann roamway.sql hoch,Das Ergebnis ist wie folgt:
Server2 und server1 funktionieren gleich,Nicht mehr, nicht länger。
4. Client-Tests
Der Windows-Client fügt die Auflösungsbeziehung zwischen dem Hauptserver 192.168.137.16 und www.roamway.com in der Hosts-Datei hinzu,
Natürlich können Sie auch den DNS-Server konfigurieren,Vorwärts- und Rückwärtsanalyse hinzufügen,Bitte beziehen Sie sich auf:https://www.roamway.com/?p=993
ping www.roamway.com, Erfolgreich aufgelöst zu 192.168.137.16
Um zu überprüfen, ob der Lastausgleich wirklich erreicht wird,Erstellen Sie eine neue Homepage index.html im Website-Verzeichnis von server1 und server2
Schreiben Sie service1 hinein: 192.168.137.17oder Server2: 192.168.137.18 Speichern und schließen。
Browser-Test,Immer wieder aktualisieren,Die folgenden zwei Seiten erscheinen in einer Schleife。
Löschen Sie die Datei index.html im Webverzeichnis von server1 und server2。Browsertyp www.roamway.com
Ende:Die obige Demonstration der Nginx-Load-Balancing-Konfiguration ist nur ein ungefährer Prozess,Die eigentliche Operation wird viel komplizierter sein。Es gab auch eine kleine Episode,
Plötzlicher Stromausfall während der MySQL-Kompilierung,Verursacht Datenverlust und viele unbekannte Ausfälle,mit Geduld,Konfiguration fortzusetzen。
Diese Konfiguration verwendet den Nginx-Reverse-Proxy,Cluster-basiert。MySQL-Master-Slave-Synchronisation und Lese-Schreib-Trennung,Wird demonstriert, wenn es die Zeit erlaubt。
beigefügt:Die neuesten Kompilierungsparameter
nginx-Version: nginx/1.15.3
gebaut von gcc 4.4.7 20120313 (roter Hut 4.4.7-4) (GCC)
gebaut mit OpenSSL 1.1.1-dev xx XXX xxxx
TLS SNI-Unterstützung aktiviert
Argumente konfigurieren: –Benutzer = www –Gruppe = www –Präfix = / usr / local / nginx \
–with-http_stub_status_module –with-http_ssl_module –with-http_v2_module \
–with-http_gzip_static_module –with-http_sub_module –with-http_realip_module \
–with-openssl=/usr/local/openssl/ –with-openssl-opt = ’enable-tls1_3 enable-schwach-ssl-chiffren’ \
–with-cc-opt = -DTCP_FASTOPEN = 23 –with-file-aio \
–http-client-body-temp-path = / var / tmp / nginx / client / \
–http-proxy-temp-path = / var / tmp / nginx / proxy \
–add-module=/usr/local/nginx-ct/ –add-module = / usr / local / nginx_upstream_check \
–without-mail_pop3_module –without-mail_imap_module –without-mail_smtp_module \
–without-http_uwsgi_module –ohne-http_scgi_module
Beispiel für ein nginx Upstream-Modul