網站首頁 編程語言 正文
本文使用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
相關推薦
- 2022-10-29 Golang?動態腳本調研詳解_Golang
- 2021-12-02 docker容器時區錯誤問題_docker
- 2022-03-09 C語言直接插入排序算法介紹_C 語言
- 2022-06-28 Python利用shutil模塊實現文件的裁剪與壓縮_python
- 2022-07-10 所有文章標題顯示為彩色,自定義指令v-rainbow
- 2022-12-03 Nginx部署SSL證書的過程_nginx
- 2022-10-14 Sklearn中的二分類模型可以進行多分類的原理
- 2022-06-24 淺談React?中的淺比較是如何工作的_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支