Heim >Betrieb und Instandhaltung >Nginx >So konfigurieren Sie den TCP-Lastausgleich in Nginx
Dieser Artikel verwendet Nginx als Proxyserver für den Lastausgleich. Es handelt sich lediglich um ein einfaches Anwendungsbeispiel und beinhaltet keine Prinzipien.
(Der Host hier ist begrenzt, 42.192.22.128 Host-Port 8000 wird als Proxy-Server-Abhörport verwendet, 8181 ist der Dienst-Abhörport) # 🎜🎜#Kunde Der Client greift auf den Proxyserver zu und der Proxyserver verteilt die Anfrage an den entsprechenden Server.
Ändern Sie die Nginx-Konfigurationsdatei, um den TCP-Lastausgleich zu konfigurieren (die Konfigurationsdatei nach der Nginx-Installation befindet sich in /usr/local/nginx/conf/nginx.config
und das ausführbare Nginx-Programm befindet sich in /usr/local/nginx/sbin
-Verzeichnis)
Fügen Sie die folgenden Felder in der nginx.conf
-Konfigurationsdatei hinzu: /usr/local/nginx/conf/nginx.config
中,Nginx可执行程序在/usr/local/nginx/sbin
目录下)
在nginx.conf
配置文件中添加如下字段:
stream { upstream Server { server 42.192.22.128:8181 weight=1 max_fails=3 fail_timeout=30s; server 1.13.180.100:8181 weight=1 max_fails=3 fail_timeout=30s; } server { listen 8000; proxy_pass Server; } }
这里主要涉及两个配置块upstream
和server
在upstream
中定义了两台主机,weight
表示权重,两台主机都为1,说明代理服务器会平分客户端请求给上游服务器,max_fails
与fail_timeout
配合使用,指在fail_timeout
时间段内,如果向当前的上游服务器转发失败次数超过3次,则认为在当前的fail_timeout
时间段内这台上游服务器不可用。fail_timeout
表示该时间段内转发失败多少次后就认为上游服务器暂时不可用。server
中指定了代理服务器监听的端口号8000
,proxy_pass
指定upstream
块中的名字Server
。
配置完成后,使用nginx -s reload
使运行中的Nginx重读配置项并生效。
上游服务器使用“瑞士军刀”nc
命令来模拟TCP服务端,监听在相应的端口:(这里的Ip地址是云主机的内网ip)
客户端用一个简单的Qt小程序模拟一下:
void Widget::on_btnConnection_clicked() { m_pTcpSocket->connectToHost(ui->lineeditIp->text(), ui->lineeditPort->text().toUShort()); qDebug() << m_pTcpSocket->state(); } void Widget::on_btnSend_clicked() { qDebug() << m_pTcpSocket->state(); QByteArray byteArray; byteArray.append(ui->texteditMsg->toPlainText()); const char *pChatMsg = byteArray.data(); qDebug() << m_pTcpSocket->write(pChatMsg, byteArray.size()); }
先后启动两个客户端,通过TCP连接至42.192.22.128:8000
rrreee Hier geht es im Wesentlichen um zwei Dinge. Die Konfigurationsblöcke upstream
und server
upstream
und weight stellt die Gewichtung beider Hosts dar, was bedeutet, dass der Proxyserver die Anfrage des Clients gleichmäßig auf den Upstream-Server aufteilt. <code>max_fails
wird in Verbindung mit fail_timeout
verwendet. Dies bezieht sich auf die Zeit von fail_timeout
. Wenn innerhalb dieses Zeitraums die Anzahl der Weiterleitungsfehler an den aktuellen Upstream-Server das Dreifache übersteigt, gilt der Upstream-Server innerhalb des aktuellen fail_timeout als nicht verfügbar. Code> Zeitraum. <code>fail_timeout
gibt die Anzahl der Weiterleitungsfehler innerhalb dieses Zeitraums an, bevor der Upstream-Server als vorübergehend nicht verfügbar gilt. #🎜🎜#server
gibt die Portnummer 8000
an, auf die der Proxyserver lauscht, und proxy_pass
gibt die Portnummer im Upstream an
BlocknameServer
. #🎜🎜#Nachdem die Konfiguration abgeschlossen ist, verwenden Sie nginx -s reload
, damit das laufende Nginx die Konfigurationselemente erneut liest und wirksam wird. #🎜🎜#Der Upstream-Server verwendet den Befehl „Swiss Army Knife“ nc
, um den TCP-Server zu simulieren und den entsprechenden Port abzuhören: (Die IP-Adresse hier ist die Intranet-IP des Cloud-Hosts) # 🎜🎜## 🎜🎜# #🎜🎜##🎜 🎜#Verwenden Sie ein einfaches Qt-Applet, um den Client zu simulieren: #🎜🎜#rrreee#🎜🎜#Starten Sie zwei Clients nacheinander, stellen Sie über TCP eine Verbindung zu 42.192.22.128:8000
her und Wenn Sie Nachrichten senden, können Sie sehen, dass die Nachricht an zwei Hosts verteilt wird, was darauf hinweist, dass die Clientanforderung tatsächlich an verschiedene Server verteilt wird. #🎜🎜##🎜🎜##🎜🎜##🎜🎜#Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie den TCP-Lastausgleich in Nginx. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!