亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > IIS > 正文

nginx+iis實現簡單的負載均衡

2024-08-29 03:16:18
字體:
來源:轉載
供稿:網友
這篇文章主要為大家詳細介紹了nginx+iis實現一個簡單的負載均衡的方法,感興趣的小伙伴們可以參考一下
 

最近在研究分布式系統架構方面的知識,包括負載均衡,數據庫讀寫分離,分布式緩存redis等。本篇先從負載均衡服務架構入手,關于負載均衡百度百科的定義如下:負載均衡,英文名稱為Load Balance,其意思就是分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。

我的解釋:一項任務交由一個開發人員處理總會有上限處理能力,這時可以考慮增加開發人員來共同處理這項任務,多人處理同一項任務時就會涉及到調度問題,即任務分配,這和多線程理念是一致的。nginx在這里的角色相當于任務分配者。

閱讀目錄

nginx安裝
站點搭建及配置 
問題分析
總結
一、nginx安裝

    Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,并在一個BSD-like 協議下發行。由俄羅斯的程序設計師Igor Sysoev所開發,供俄國大型的入口網站及搜索引擎Rambler(俄文:Рамблер)使用。其特點是占有內存少,并發能力強,事實上nginx的并發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、新浪、網易、騰訊等。

  最新版本的nginx版本為1.9.3,我這下載的是window版本的,一般實際場景都是安裝在linux系統下的,由于linux系統目前正在摸索中這里就不介紹。官方下載地址:nginx-1.9.3.zip 。下載完成之后解壓運行nginx.exe就啟動了nginx了,啟動后會在進程里面看到nginx。

nginx,iis,負載均衡

   要實現負載均衡需要修改conf/nginx.conf的配置信息,修改配置信息之后重新啟動nginx服務,可以通過nginx -s reload指令實現。這里我們使用 Ants 提供的一個批處理來操作。

nginx,iis,負載均衡

將nginx.bat文件放到nginx.exe相同文件夾下,直接運行就行了。文章結尾會提供本文用到的所有文件。

 nginx,iis,負載均衡

二、站點搭建及配置

1.搭建兩個iis站點

 站點下只有一個簡單的index頁面,用來輸出當前服務器信息。由于我沒有兩臺機器,所以將兩個站點都部署到本機了,分別綁定了8082和9000兩個端口。

 protected void Page_Load(object sender, EventArgs e) {  Label0.Text = "請求開始時間:"+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");  Label1.Text = "服務器名稱:" + Server.MachineName;//服務器名稱   Label2.Text = "服務器IP地址:" + Request.ServerVariables["LOCAL_ADDR"];//服務器IP地址   Label3.Text = "HTTP訪問端口:" + Request.ServerVariables["SERVER_PORT"];//HTTP訪問端口"  Label4.Text = ".NET解釋引擎版本:" + ".NET CLR" + Environment.Version.Major + "." + Environment.Version.Minor + "." + Environment.Version.Build + "." + Environment.Version.Revision;//.NET解釋引擎版本   Label5.Text = "服務器操作系統版本:" + Environment.OSVersion.ToString();//服務器操作系統版本   Label6.Text = "服務器IIS版本:" + Request.ServerVariables["SERVER_SOFTWARE"];//服務器IIS版本   Label7.Text = "服務器域名:" + Request.ServerVariables["SERVER_NAME"];//服務器域名   Label8.Text = "虛擬目錄的絕對路徑:" + Request.ServerVariables["APPL_RHYSICAL_PATH"];//虛擬目錄的絕對路徑   Label9.Text = "執行文件的絕對路徑:" + Request.ServerVariables["PATH_TRANSLATED"];//執行文件的絕對路徑   Label10.Text = "虛擬目錄Session總數:" + Session.Contents.Count.ToString();//虛擬目錄Session總數   Label11.Text = "虛擬目錄Application總數:" + Application.Contents.Count.ToString();//虛擬目錄Application總數   Label12.Text = "域名主機:" + Request.ServerVariables["HTTP_HOST"];//域名主機   Label13.Text = "服務器區域語言:" + Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"];//服務器區域語言   Label14.Text = "用戶信息:" + Request.ServerVariables["HTTP_USER_AGENT"];  Label14.Text = "CPU個數:" + Environment.GetEnvironmentVariable("NUMBER_OF_PROCESSORS");//CPU個數   Label15.Text = "CPU類型:" + Environment.GetEnvironmentVariable("PROCESSOR_IDENTIFIER");//CPU類型   Label16.Text = "請求來源地址:" + Request.Headers["X-Real-IP"]; }

2.修改nginx配置信息

  修改nginx監聽端口,修改http server下的listen節點值,由于本機80端口已經被占用,我改為監聽8083端口。

   listen       8083;

  在http節點下添加upstream(服務器集群),server設置的是集群服務器的信息,我這里搭建了兩個站點,配置了兩條信息。

 #服務器集群名稱為Jq_one upstream Jq_one {   server 127.0.0.1:9000;    server 127.0.0.1:8082;  }

 在http節點下找到location節點修改

location / {  root html;  index index.aspx index.html index.htm; #修改主頁為index.aspx #其中jq_one 對應著upstream設置的集群名稱 proxy_pass  http://Jq_one;  #設置主機頭和客戶端真實地址,以便服務器獲取客戶端真實IP proxy_set_header Host  $host;  proxy_set_header X-Real-IP $remote_addr;  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }

修改完成配置文件以后記得重啟nginx服務,最終完整配置文件信息如下

3.運行結果

  訪問http://127.0.0.1:8083/index.aspx ,多訪問幾次,著重關注標紅部分。

nginx,iis,負載均衡

nginx,iis,負載均衡

可以看到,我們的請求被分發到了8082站點和9000站點,并且第一次是8082站點第二次9000。出現這樣的結果證明我們負載均衡搭建成功了。 嘗試關閉其中的9000站點,然后刷新頁面發現輸出的http端口一直是8082,也就是說其中一個站點掛了,只要還有一個站點是好的,我們的還是可以服務。

四、問題分析

  雖然我們搭建好了負載均衡站點,但是還存在以下問題。

  1.如果站點使用了session,請求平均分配到兩個站點,那么必然存在session共享問題,該如何解決?

使用數據庫保存session信息
使用nginx將同一ip的請求分配到固定服務器,修改如下。ip_hash會計算ip對應hash值,然后分配到固定服務器

  upstream Jq_one{   server 127.0.0.1:8082 ;    server 127.0.0.1:9000 ;   ip_hash;  }

搭建一臺Redis服務器,對session的讀取都從該Redis服務器上讀取。后面的文章將介紹分布式緩存Redis的使用
  2.管理員更新站點文件,該怎么操作,現在還只有兩臺服務器,可以手工將文件更新到兩臺服務器,如果是10臺呢,那么手工操作必然是不可行的

多服務器站點更新可以使用GoodSync 文件同步程序,會自動檢測文件的修改新增,然后同步到其它服務器上。在linux下可以使用rsync
  3.站點中的文件上傳功能會將文件分配到不同的服務器,文件共享問題如何解決。

使用文件服務器將所有文件存儲到該服務器上,文件操作讀取寫入都在該服務器上。這里同樣會存在一個問題,文件服務器存在讀寫上限。
  4.負載的服務器配置不一樣,有的高有的低可不可以讓配置高的服務器處理請求多一些

這里講一下,負載均衡有好幾種算法  輪轉法,散列法, 最少連接法,最低缺失法,最快響應法,加權法。我們這里可以使用加權法來分配請求。

 upstream Jq_one{   server 127.0.0.1:8082 weight=4;    server 127.0.0.1:9000 weight=1;  }

     通過weight設置每臺服務器分配請求站的權重,值越高分配的越多。

 5.由于請求是經過nginx轉發過來的,可以在代碼里面獲取到用戶請求的實際ip地址嗎?

答案是肯定的,在localtion節點設置如下請求頭信息   

 #設置主機頭和客戶端真實地址,以便服務器獲取客戶端真實IP proxy_set_header Host  $host;  proxy_set_header X-Real-IP $remote_addr;  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    代碼里面通過Request.Headers["X-Real-IP"],就能獲取到真實ip

 6.nginx實現靜態文件(image,js,css)緩存

在server節點下添加新的localtion

 #靜態資源緩存設置 location ~ /.(jpg|png|jpeg|bmp|gif|swf|css)$ {   expires 30d;  root /nginx-1.9.3/html;#root: #靜態文件存在地址,這里設置在/nginx-1.9.3/html下  break; } 

    這是index頁面的代碼 <li><img src="/images/1.jpg"/></li>

總結

  通過nginx我們實現了一個簡單的負載均衡,實際情況比這復雜很多。比如nginx服務器掛了,那我們的站點就直接掛了,正確的通過keepalived組件來搭建多臺nginx服務提供服務。本篇只做為分布式系統的開篇,后續會陸續推出Redis緩存,數據庫實現分布式架構的文章,敬請期待!



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
黑人巨大精品欧美一区免费视频| 亚洲精品日韩丝袜精品| 国产一区二区三区在线看| 亚洲国产精品久久久| 日韩精品欧美激情| 日韩中文av在线| 久久久精品电影| 国产精品一区二区三区毛片淫片| 国产丝袜一区二区三区免费视频| 欧美成人在线网站| 欧美在线一区二区三区四| 亚洲精品日产aⅴ| 精品电影在线观看| 少妇久久久久久| 日韩有码在线观看| 久久免费精品日本久久中文字幕| 欧美国产一区二区三区| 九九久久久久久久久激情| 中文字幕国产亚洲| 日韩在线观看免费高清| 日韩av影视综合网| 欧美日韩国产专区| 欧美性猛交xxxx黑人猛交| 国产日本欧美一区| 国产成人激情小视频| 日韩av影视综合网| 欧美黄色www| 精品视频久久久| 亚洲免费视频在线观看| 孩xxxx性bbbb欧美| 在线国产精品视频| 久久国产精品久久精品| 欧美老妇交乱视频| 亚洲免费一级电影| 国产91精品久久久| 综合136福利视频在线| 亚洲综合第一页| 成人免费高清完整版在线观看| 中文字幕在线观看日韩| 久久人人爽亚洲精品天堂| 97人人爽人人喊人人模波多| 日韩av免费看网站| 538国产精品一区二区免费视频| 国产精品免费电影| 国产精品视频自在线| 欧美激情国产高清| 国产精品美女av| 日韩经典第一页| 亚洲欧美成人精品| 日韩最新在线视频| 亚洲视频在线看| 亚洲国产成人在线视频| 国产ts人妖一区二区三区| 欧美视频在线观看免费| 欧美精品国产精品日韩精品| 好吊成人免视频| 亚洲精品国产精品久久清纯直播| 在线观看精品自拍私拍| 夜色77av精品影院| 黑人巨大精品欧美一区二区免费| 成人国产精品久久久久久亚洲| 亚洲美女av电影| 亚洲欧美一区二区三区久久| 国产精品永久免费观看| 国产欧美一区二区三区在线看| 精品国产91久久久| 国产精品久久久久久中文字| 国产日韩在线看| 欧美性xxxx在线播放| 97视频在线观看免费| 中文字幕亚洲色图| 日韩风俗一区 二区| 欧美在线视频在线播放完整版免费观看| 成人午夜激情网| 51ⅴ精品国产91久久久久久| 国产精品无av码在线观看| 成人福利在线视频| 欧美丰满少妇xxxx| 国产精品亚洲第一区| 日本不卡高字幕在线2019| 国产午夜精品免费一区二区三区| 亚洲人成在线观看| 国a精品视频大全| 日韩欧美在线看| 色与欲影视天天看综合网| y97精品国产97久久久久久| 国产精品日韩在线观看| 日韩精品欧美国产精品忘忧草| 欧美日韩成人精品| 国产精品国产三级国产aⅴ浪潮| 亚洲高清色综合| 成人福利视频在线观看| 欧美视频第一页| 欧美日韩国产在线| 国产精品爽黄69天堂a| 中文字幕亚洲一区二区三区| 成人久久久久久| 欧美丰满老妇厨房牲生活| 色偷偷偷综合中文字幕;dd| 91在线精品视频| 亚洲福利在线播放| 欧美小视频在线| 日韩一区av在线| 热久久视久久精品18亚洲精品| 久久青草福利网站| 色综合导航网站| 欧美在线性视频| 欧美午夜精品久久久久久浪潮| 91po在线观看91精品国产性色| 日韩有码在线电影| 日韩成人av在线| 91九色国产社区在线观看| 精品无人国产偷自产在线| 亚洲视频在线免费观看| 国产ts一区二区| 日韩欧美国产免费播放| 国产亚洲成av人片在线观看桃| 色狠狠久久aa北条麻妃| 欧美日韩亚洲激情| 国产精品99久久久久久久久| 91在线精品播放| 欧美另类暴力丝袜| 欧洲成人免费视频| 国产99久久久欧美黑人| 夜夜嗨av一区二区三区四区| 日韩综合视频在线观看| 欧美精品久久久久| 久久久久久久成人| 国产精品亚洲片夜色在线| 欧美日韩一区二区精品| 成人性生交大片免费看小说| 精品日韩中文字幕| 久久精彩免费视频| 亚洲精品免费在线视频| 97精品视频在线| 精品国产乱码久久久久久虫虫漫画| 成人黄在线观看| 欧美国产高跟鞋裸体秀xxxhd| 国产精品大陆在线观看| 国产精品永久免费视频| 色小说视频一区| 亚洲欧美一区二区三区情侣bbw| 日本成人免费在线| 亚洲国产第一页| 中文字幕亚洲综合久久| 亚洲xxx视频| 伊人久久久久久久久久久久久| 亚洲精品91美女久久久久久久| 日韩欧美在线看| 久久久久久欧美| 黑人精品xxx一区一二区| 在线a欧美视频| 国产精品美女主播在线观看纯欲| 成人一区二区电影| 欧美理论电影在线观看| 清纯唯美日韩制服另类| 亚洲乱码国产乱码精品精天堂| 国产91色在线播放| 色香阁99久久精品久久久| 精品欧美aⅴ在线网站| 国产日韩欧美夫妻视频在线观看| 国产精品91在线观看| 久久久噜噜噜久久久| 色伦专区97中文字幕|