この記事では、負荷分散のためのプロキシ サーバーとして Nginx を使用します。これは単なる単純な応用例であり、原則は含まれません。
(ここでのホストは制限されています。42.192.22.128 ホストの 8000 ポートはプロキシ サーバーのリスニング ポートとして使用され、8181 はサービスのリスニング ポートです)
クライアントは次の手順でプロキシサーバーにアクセスします。プロキシサーバーはリクエストを対応するサーバーに振り分けます。
Nginx 構成ファイルを変更して Tcp ロード バランシングを構成します (Nginx インストール後の構成ファイルは /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; } }ここで重要なことは、2 つの構成ブロック
upstream と
server が関係することです。
upstream の 2 つのホストを定義し、
weight は重みを表します。ホストは両方とも 1 であり、プロキシ サーバーがクライアント要求を上流サーバーに均等に分散することを示します。
max_fails は
fail_timeout と組み合わせて使用されます。これは、## 内にあることを意味します。 #fail_timeout
期間 (if) 現在のアップストリーム サーバーが 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()); }2 つのクライアントを連続して起動し、TCP 経由で
42.192.22.128:8000
に接続します。そしてメッセージを送信すると、メッセージが 2 つのホストに分散されていることがわかります。これは、クライアントのリクエストが実際に異なるサーバーに分散されていることを示しています。以上がNginx で Tcp ロード バランシングを構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。