架構之路 之 Nginx實現負載均衡
【前言】
在大型網站中,負載均衡是有想當必要的。尤其是在同一時間訪問量比較大的大型網站,例如網上商城,新聞等CMS系統,為了減輕單個伺服器的處理壓力,我們引進了負載均衡這一個概念,將一個伺服器的壓力分攤到幾個伺服器上,一方面減輕了宕機的幾率,另一方面也使得宕機後還要其他伺服器可以繼續穩定運行,提高了系統的健壯性。
【實現功能】這篇文章將要介紹的主要內容如下:
1、配置三台伺服器2、分別在三台伺服器上部署同樣的服務代碼3、使用Nginx實現負載均衡【實現思路】我們的Nginx負載均衡器將部署在一台交互伺服器上,配置與其他兩台伺服器的連接,所有的請求直接訪問Nginx服務介面,然後Nginx負載均衡器將自行選擇真實調用的伺服器埠。
【開發及部署環境】
開發環境:Windows 7 x64 sp1 英文版
VisualStudio 2017
部署環境:阿里雲 ECS實例 windows server 2012 x64
IIS 7.0
【所需技術】ASP.NET WebApi2【實現過程】
使用ASP.NET webapi2 寫一個簡單地返回json的介面,為了展示我們調用的是不同伺服器上的介面,我們以數字形式分別生成三個介面服務,並且分別部署到三台伺服器的iis中。
1 public IHttpActionResult GetTest
2 {
3 //throw new Exception_DG_Internationalization(1001);
4 string ip = Request.GetIpAddressFromRequest;
5 return OK("Test Api . Client Ip Address is -> "+ip+" The Server is ===== 333 =====");
6 }
我部署的三台伺服器後面的數字分別是 111,222,333
註:return OK是本人自定義的返回格式,具體簡單代碼可以直接return Json;
Request.GetIpAddressFromRequest;是本人擴展的獲取ip地址的方法,具體實現請按自身情況實現。
【系統測試】我們將三個後台代碼生成後,分別部署到三個伺服器上。
為了保密伺服器信息,以下我的所有ip地址都將以ip_A,ip_B,ip_C來標識
然後我們啟動服務:
cmd命令切換到nginx的根目錄下
這樣,服務就算啟動了... 吐槽一句,為什麼不提示一句服務啟動成功呢..欸,不人性化!
然後我們打開任意一個介面測試工具,分別執行三次相同的請求:
請求一、
請求二、
請求三、
可以發現,我們每一次的請求,調用的後台服務介面都不是同一個,這樣就保證了在大量客戶訪問同一個伺服器地址時候,可以將一個伺服器的壓力分別分攤到幾個伺服器上,達到了負載均衡的目的。


※設計模式解密(10)-迭代器模式
※阿里巴巴2018屆應屆生在線編程測驗-研發工程師C/C++
※Redis 錯誤1067:進程意外終止,Redis不能啟動,Redis啟動不了
※ASP.NET Core MVC 過濾器介紹
TAG:科技優家 |
※Feign實現和負載均衡
※網站集群架構實戰(LVS負載均衡Nginx代理緩存Nginx動靜分離等)
※nginx 負載均衡
※在 Linux 上用 DNS 實現簡單的負載均衡
※Linux下Nginx+多Tomcat負載均衡實現詳解
※Keepalived+Nginx實現負載均衡高可用
※負載均衡zookpeer之輪詢演算法
※負載均衡-Ribbon 的負載均衡策略
※LVS/DR+keepalived負載均衡實現
※Django(Ngnix)項目部署 負載均衡
※負載均衡器HAProxy 2.0發布,支持更完善動態配置功能
※nginx負載均衡與調度演算法
※搭建高可用負載均衡器:haproxy+keepalived
※Facebook開源最新網路負載均衡軟體Katran
※Portworx與HPE合作為容器工作負載提速
※Spring Cloud客戶端負載均衡Ribbon筆記
※史上最詳細的Nginx負載均衡教程
※ApsaraClouder雲計算專項技能認證超大流量網站的負載均衡考試
※Facebook 開源可擴展的網路負載均衡軟體 Katran
※Ansible自動部署nginx+keepalived高可用負載均衡