當你的Web應用程序訪問量大的時候,一臺服務器可能會由於壓力過大而沒法處理全部的請求。此時,能夠增長服務器,採用負載均衡來分擔全部的請求。關於Nginx的做用,自行百度瞭解。總之,在Windows平臺下,你能夠用它和IIS來實現你的Web應用程序的負載均衡。簡單說,就是它會根據幾臺服務器的空閒程度,將接收到的Web請求分發到相應的服務器進行處理(固然它會選擇比較空閒的服務器來處理當前的請求,不然用它有什麼意義呢)。接下來,採用兩臺虛擬機,建立簡單的ASP.Net應用程序,使用Nginx+IIS實現負載均衡。html
1、環境nginx
Client: Win7 X64, Visual Studio2010, IP:59.78.184.11web
Server1: 虛擬機Win7 X64, IIS,Nginx IP:59.78.184.151 開放端口80(Nginx)、8080(IISweb)編程
Server2:虛擬機Win7 X64, IIS, IP:59.78.184.136 開放端口80(IISWeb)瀏覽器
2、建立ASP.Net應用程序,併發布至兩臺Server上服務器
VS中建立ASP.Net應用程序,爲了測試負載均衡效果,咱們只在應用程序中獲取當前處理Web請求的Server名。在項目中的Default.aspx.cs文件中寫以下代碼,Default.aspx頁面中放置一個Label控件。併發
protected void Page_Load(object sender, EventArgs e) { HostNameLbl.Text = "UserHostName:" + Request.UserHostName.ToString() + "<br/>UserHostAddress:" + Request.UserHostAddress.ToString() + "<br/>Url.Host:" + Request.Url.Host.ToString() + "<br/>Server:" + Server.MachineName.ToString(); ; }
接着,生成項目,將項目發佈至已經準備好的兩臺Server中。在Server1的IIS上,建立站點,將路徑指向該項目,並將8080端口分配給該站點。(注意,默認站點的端口爲80,由於Server1一會須要將80端口給Nginx,因此咱們從新給站點一個端口)。防火牆上將8080端口打開。一樣的步驟,在Server2上再走一遍(Server2上直接將80端口給新建的站點就能夠了)。app
3、安裝Nginx並進行配置負載均衡
去官網上下載一個Nginx,在Server1的C盤中解壓。找到conf文件夾,打開裏面的nginx.conf文件。找到http塊,往下須要配置的地方:tcp
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream localhost{
server 59.78.184.151:8080;
server 59.78.184.136:80;
}
server {
listen 80;
server_name 59.78.184.151;
#charset koi8-r;
#access_log logs/host.access.log main;
#location / {
# root html;
# index index.html index.htm;
#}
#my own location
location / {
proxy_pass http://localhost;
proxy_redirect default;
}
接着啓動nginx。
啓動:打開cmd,進入Nginx目錄,輸入nginx.exe回車。此時查看任務管理器中,有兩個nginx進程即啓動成功。
關閉:打開cmd,進入Nginx目錄,輸入nginx.exe –s stop回車,便可關閉nginx。若是在此你修改了配置文件,致使nginx沒法關閉。cmd上會提示配置文件的哪一行出錯,能夠追蹤到該行去進行相應的修改。
在瀏覽器中訪問咱們的應用程序。注意觀察Server的值是WIN-KKRTSU3Q756
刷新瀏覽器,再次查看結果,以下:此時的Server編程了WIN-VM3BU2IPGM4。然而對於用戶來講,我並無察覺到,訪問的依舊是Server1的地址。