本文使用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;
}
}
这里主要涉及两个配置块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,并发送消息,可以看到消息被分发到了两台主机上,说明客户端的请求确实被分发到了不同的服务端上。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文地址:https://blog.csdn.net/gaoyuelon/article/details/124668967
声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。