Heim >Betrieb und Instandhaltung >Nginx >So konfigurieren Sie den TCP-Lastausgleich in Nginx

So konfigurieren Sie den TCP-Lastausgleich in Nginx

WBOY
WBOYnach vorne
2023-05-20 13:16:202718Durchsuche

Dieser Artikel verwendet Nginx als Proxyserver für den Lastausgleich. Es handelt sich lediglich um ein einfaches Anwendungsbeispiel und beinhaltet keine Prinzipien.

So konfigurieren Sie den TCP-Lastausgleich in Nginx

(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配置文件中添加如下字段:

So konfigurieren Sie den TCP-Lastausgleich in Nginx

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;
    }
}

这里主要涉及两个配置块upstreamserver
upstream中定义了两台主机,weight表示权重,两台主机都为1,说明代理服务器会平分客户端请求给上游服务器,max_failsfail_timeout配合使用,指在fail_timeout时间段内,如果向当前的上游服务器转发失败次数超过3次,则认为在当前的fail_timeout时间段内这台上游服务器不可用。fail_timeout表示该时间段内转发失败多少次后就认为上游服务器暂时不可用。
server中指定了代理服务器监听的端口号8000proxy_pass指定upstream块中的名字Server
配置完成后,使用nginx -s reload使运行中的Nginx重读配置项并生效。
上游服务器使用“瑞士军刀”nc命令来模拟TCP服务端,监听在相应的端口:(这里的Ip地址是云主机的内网ip)

So konfigurieren Sie den TCP-Lastausgleich in Nginx

客户端用一个简单的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

So konfigurieren Sie den TCP-Lastausgleich in Nginx

rrreeeSo konfigurieren Sie den TCP-Lastausgleich in Nginx Hier geht es im Wesentlichen um zwei Dinge. Die Konfigurationsblöcke upstream und server

definieren zwei Hosts in 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) # 🎜🎜## 🎜🎜#So konfigurieren Sie den TCP-Lastausgleich in Nginx #🎜🎜##🎜 🎜#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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen