本文使用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
,并发送消息,可以看到消息被分发到了两台主机上,说明客户端的请求确实被分发到了不同的服务端上 。
【Nginx配置Tcp负载均衡的方法】以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com 。
-- 展开阅读全文 --
推荐阅读
- 使用nginx实现动静分离
- Tomcat配置https SSL证书的项目实践
- win10怎样启用安装.net framework3.5?Win10启用.NET框架3.5操作教程
- u盘插到mac上不显示怎么办? Mac插上u盘移动硬盘桌面不显示的解决办法
- 苹果电脑怎么显示虚拟键盘? Mac系统显示屏幕虚拟键盘的技巧
- lol预期之外的错误怎么办_英雄联盟一直预期之外的错误如何解决
- 爱情征途上最有拼劲的星座
- 电脑找不到音频设备是怎么回事_电脑没有音频设备怎么处理
- 最死心塌地爱你的12星座