Net分散式系統之二:CentOS系統搭建Nginx負載均衡

發表於2016-06-09

一、關於CentOS系統介紹

CentOS(Community Enterprise Operating System,中文意思是:社群企業作業系統)是Linux發行版之一,它是來自於Red Hat Enterprise Linux依照開放原始碼規定釋出的原始碼所編譯而成。基於Red Hat持續升級,和對已知BUG修復,所以CentOS更多用於搭建大型企業級伺服器。目前較新版本為7.0,本文使用CentOS7 64bit進行搭建系統負載均衡。

二、安裝VMWare

VMWare (Virtual Machine ware)是一個“虛擬PC”軟體公司.它的產品可以使你在一臺機器上同時執行二個或更多Windows、DOS、LINUX系統。與“多啟動”系統相比,VMWare採用了完全不同的概念。多啟動系統在一個時刻只能執行一個系統,在系統切換時需要重新啟動機器。本文使用VMWare WorkStation12安裝CentOS作業系統。詳細安裝步驟參考:檢視, 百度軟體下載點選

三、安裝CentOS系統

首先需要下載CentOS安裝包,下載IOS格式,本文使用CentOS7 64bit 版本,下載

詳細安裝步驟請點選檢視

注意事項:

1、分割槽的時候,選擇EXT4格式,boot分割槽為400m,/分割槽為8G,/home分割槽為7G,var分割槽為6G,swap分割槽為2G

2、使用者和組ID,都設為 1000

3、安裝完成重啟後提示License的,輸入:1、2、r、yes 完成進入成功進入系統

4、ctrl+alt 滑鼠切回本機電腦,不在虛擬機器裡

四、安裝Nginx和配置

1、Nginx介紹

Nginx是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,並在一個BSD-like 協議下發行。由俄羅斯的工程師Igor Sysoev研發,供俄國大型的入口網站Rambler使用。其特點是佔有記憶體少,併發能力強,事實上nginx的併發能力確實在同型別的網頁伺服器中表現較好。

2、安裝部署

在CentOS7通過命令列安裝Nginx伺服器。

(1)新增Nginx倉儲,新增 epel repository

(2)檢查是否已安裝過nginx

(3)如果有安裝則刪除

(4)安裝nginx

(5)啟動nginx

(6)將nginx 設定為啟動系統自動啟動nginx

(7)檢視本機IP,為了後續配置nginx.conf所用

(8)修改nginx.conf配置檔案

(9)主要配置節點,192.168.119.1:8081 和 192.168.119.1:8082 分別部署在 IIS7的兩個ASP.NET MVC 開發的站點(在另一臺電腦),設計軟體架構解決方案後續介紹。

(10)重啟nginx服務

以上記錄在CentOS7作業系統搭建Nginx負載均衡解決方案記錄。後續簡介通過Keepalived搭建Nginx負載高可用解決方案。

接下來介紹通過Nginx將請求分發到各web應用處理服務。

一、Web應用開發

1、asp.net mvc5開發

(1)新建一個MVC5工程,新建一個Controller,在Index方法實現將當前時間儲存到Session[“mysession”],並寫Cookies[“mycookies”]儲存主機名和當前時間。

(2)在Controller中新增第二個方法GetSession,顯示Session和Cookies的值。

(3)將session和cookies資訊在頁面顯示,GetSession檢視程式碼如下:

以上實現session和cookies讀寫,為了驗證負載均衡下,每次請求處理是否保持一致,接下來重要內容,做負載均衡如何如何保持session一致,對於asp.net技術session原理此處不做介紹,網上搜尋下大把。

2、Session共享技術

.Net平臺對支援幾種session儲存模式:

(1)InProc 模式

session儲存於當前站點在同一個程式內,修改web.config或者bin中檔案更新,會導致session丟失。此模式為預設模式。

(2)aspnet state 模式

aspnet state是將session儲存在狀態服務中,需要啟動ASP.NET State Service,能看到程式aspnet_state.exe。還需要在web.config配置此模式。

(3)SQLServer 模式

此模式需要SQL Server配置相關資訊,啟動代理服務、資料庫賬號及表,並將web.config指向資料庫。

(4)第三方擴充套件 模式

本框架採用此模式,將session儲存到其他儲存,比如:Memcached、redis快取中,達到共享session的目的。可以通過實現ASP.NET中的SessionStateStoreProviderBase這個抽象類擴充套件。本系統採用將session儲存在redis快取中,通過引入  RedisSessionStateProvider元件。

3、Nginx服務狀態情況

在centos終端輸入命令service nginx status 檢視情況,確保服務正常執行。

1

  4、Web站點部署

部署兩個站點分別為:

站點A:埠為8081,

站點B:埠為8082,

  2

二、功能效果展現

(1)瀏覽器訪問Index方法,http://192.168.119.128/demo,顯示如下:

3       8

(2)瀏覽器訪問GetSession方法,http://192.168.119.128/demo/getsession,顯示如下:

4   9

通過以上驗證,獲取到的session和cookies都是一致。

相關文章