首頁 > 運維 > Nginx > 主體

Nginx如何設定Tcp負載平衡

WBOY
發布: 2023-05-20 13:16:20
轉載
2692 人瀏覽過

本文使用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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!