>  기사  >  운영 및 유지보수  >  Nginx에서 Tcp 로드 밸런싱을 구성하는 방법

Nginx에서 Tcp 로드 밸런싱을 구성하는 방법

WBOY
WBOY앞으로
2023-05-20 13:16:202644검색

이 문서에서는 로드 밸런싱을 위한 프록시 서버로 Nginx를 사용합니다. 단순한 응용예일 뿐이고 원칙은 없습니다.

Nginx에서 Tcp 로드 밸런싱을 구성하는 방법

(여기서는 호스트가 제한되어 있습니다. 42.192.22.128 호스트 포트 8000은 프록시 서버 수신 포트로 사용되며 8181은 서비스 수신 포트로 사용됩니다.)
클라이언트가 프록시 서버에 액세스하고 프록시 서버가 요청을 분산시킵니다. 해당 서버.
Nginx 구성 파일을 수정하여 Tcp 로드 밸런싱을 구성합니다(Nginx 설치 후 구성 파일은 /usr/local/nginx/conf/nginx.config에 있고 Nginx 실행 프로그램은 에 있음) /usr/local/nginx/sbin 디렉터리) /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:8000nginx.conf 구성 파일에 다음 필드를 추가합니다:

Nginx에서 Tcp 로드 밸런싱을 구성하는 방법Nginx에서 Tcp 로드 밸런싱을 구성하는 방법rrreee

여기에는 주로 업스트림 두 구성 블록이 포함됩니다. server🎜두 개의 호스트가 upstream에 정의되어 있습니다. weight는 두 호스트 모두 1이며, 이는 프록시 서버가 클라이언트의 요청을 균등하게 나눕니다. max_failsfail_timeout과 함께 사용됩니다. 이는 fail_timeout 기간 내에 전달 실패 횟수가 현재 업스트림 서버가 3회를 초과하면 fail_timeout 기간 동안 현재 이 업스트림 서버를 사용할 수 없는 것으로 간주됩니다. fail_timeout은 업스트림 서버를 일시적으로 사용할 수 없는 것으로 간주되기 전까지 이 기간 내에 전달 실패 횟수를 나타냅니다. 🎜server는 프록시 서버가 수신 대기하는 포트 번호 8000를 지정하고 proxy_pass업스트림의 이름을 지정합니다. >서버를 차단하세요. 🎜구성이 완료된 후 nginx -s reload를 사용하여 실행 중인 Nginx가 구성 항목을 다시 읽고 적용되도록 합니다. 🎜업스트림 서버는 "Swiss Army Knife" nc 명령을 사용하여 TCP 서버를 시뮬레이션하고 해당 포트에서 수신 대기합니다. (여기서 IP 주소는 클라우드 호스트의 인트라넷 IP입니다.) 🎜🎜Nginx에서 Tcp 로드 밸런싱을 구성하는 방법🎜🎜클라이언트는 간단한 Qt 애플릿을 사용합니다. 시뮬레이션하려면:🎜 rrreee🎜두 개의 클라이언트를 차례로 시작하고 TCP를 통해 42.192.22.128:8000에 연결하고 메시지를 보내는 것을 볼 수 있습니다. 클라이언트의 요청은 실제로 다른 서버에 배포됩니다. 🎜🎜🎜🎜

위 내용은 Nginx에서 Tcp 로드 밸런싱을 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제