首頁  >  文章  >  運維  >  Nginx如何設定Tcp負載平衡

Nginx如何設定Tcp負載平衡

WBOY
WBOY轉載
2023-05-20 13:16:202645瀏覽

本文使用Nginx作為代理伺服器,用來做負載平衡。只是一個簡單的應用範例,並不涉及原理。

Nginx如何設定Tcp負載平衡

(這裡主機有限,42.192.22.128主機8000埠用來做代理伺服器監聽端口,8181是服務監聽埠)
客戶端存取代理伺服器,由代理伺服器分發請求給相應的服務端。
修改Nginx的設定檔來設定Tcp負載平衡(Nginx安裝後設定檔在/usr/local/nginx/conf/nginx.config中,Nginx可執行程式在/usr /local/nginx/sbin目錄下)
nginx.conf設定檔中加入以下欄位:

Nginx如何設定Tcp負載平衡##

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)

Nginx如何設定Tcp負載平衡

客戶端用簡單的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,並且發送訊息,可以看到訊息被分發到了兩台主機上,說明客戶端的請求確實被分發到了不同的服務端。

Nginx如何設定Tcp負載平衡

以上是Nginx如何設定Tcp負載平衡的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除