이 문서에서는 로드 밸런싱을 위한 프록시 서버로 Nginx를 사용합니다. 단순한 응용예일 뿐이고 원칙은 없습니다.
(여기서는 호스트가 제한되어 있습니다. 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
配置文件中添加如下字段:
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; } }
这里主要涉及两个配置块upstream
和server
在upstream
中定义了两台主机,weight
表示权重,两台主机都为1,说明代理服务器会平分客户端请求给上游服务器,max_fails
与fail_timeout
配合使用,指在fail_timeout
时间段内,如果向当前的上游服务器转发失败次数超过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()); }
先后启动两个客户端,通过TCP连接至42.192.22.128:8000
nginx.conf
구성 파일에 다음 필드를 추가합니다:
rrreee
여기에는 주로업스트림
및 두 구성 블록이 포함됩니다. server
🎜두 개의 호스트가 upstream
에 정의되어 있습니다. weight
는 두 호스트 모두 1이며, 이는 프록시 서버가 클라이언트의 요청을 균등하게 나눕니다. max_fails
는 fail_timeout
과 함께 사용됩니다. 이는 fail_timeout
기간 내에 전달 실패 횟수가 현재 업스트림 서버가 3회를 초과하면 fail_timeout
기간 동안 현재 이 업스트림 서버를 사용할 수 없는 것으로 간주됩니다. fail_timeout
은 업스트림 서버를 일시적으로 사용할 수 없는 것으로 간주되기 전까지 이 기간 내에 전달 실패 횟수를 나타냅니다. 🎜server
는 프록시 서버가 수신 대기하는 포트 번호 8000
를 지정하고 proxy_pass
는 업스트림
의 이름을 지정합니다. >서버
를 차단하세요. 🎜구성이 완료된 후 nginx -s reload
를 사용하여 실행 중인 Nginx가 구성 항목을 다시 읽고 적용되도록 합니다. 🎜업스트림 서버는 "Swiss Army Knife" nc
명령을 사용하여 TCP 서버를 시뮬레이션하고 해당 포트에서 수신 대기합니다. (여기서 IP 주소는 클라우드 호스트의 인트라넷 IP입니다.) 🎜🎜🎜🎜클라이언트는 간단한 Qt 애플릿을 사용합니다. 시뮬레이션하려면:🎜 rrreee🎜두 개의 클라이언트를 차례로 시작하고 TCP를 통해 42.192.22.128:8000
에 연결하고 메시지를 보내는 것을 볼 수 있습니다. 클라이언트의 요청은 실제로 다른 서버에 배포됩니다. 🎜🎜🎜🎜위 내용은 Nginx에서 Tcp 로드 밸런싱을 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!