2.nginx分佈式擴展

通過單機壓測可以看到,吞吐量在200-300之間,對於服務器的數據庫也有較大的壓力。

nginx反向代理負載均衡

在單機的情況下,容量總歸有上限,對於我們看服務器後臺進程情況,有這樣一個圖:

表象上:單機cpu使用率增高,內存佔用增加,網絡帶寬使用增加。

cpu us:用戶空間的cpu使用情況(用戶層代碼)

cpu sy:內核空間的cpu使用情況(系統調用)

load average:1,5,15分鐘load平均值,跟着核數係數,0代表通常,1代表打滿,1+代表等待阻塞

memory:free空閒內存,used使用內存

既然有上限,那麼我們需要進行水平擴展,也就是nginx反向代理,並且可以負載均衡。

對於系統可以分佈式部署,對於數據庫而言,在不考慮分庫分表的情況下,就需要開放遠端連接了。

接下來一步一步部署一下。


首先準備四臺服務器,一臺用來做nginx反向代理,兩臺做應用服務器,一臺做數據庫:

因爲我們之前已經把程序放在了一臺服務器上,所以要做轉移:

運行命令:scp -r //var/www [email protected]:/var/,直接使用阿里雲內網拷貝,另一臺也是一樣
然後安裝java,這裏不再贅述。

這裏需要注意的是,配置文件需要改數據庫地址:

當然數據庫並不是誰都能訪問的,所以我們需要添加數據庫的訪問權限,否則訪問不了,telnet ip port的時候會顯示拒絕連接,所以去數據庫服務器打開數據庫:

使用系統的mysql#user:

這裏展示了所有訪問權限,在這裏爲了方便起見,授權所有人只要知道密碼都可以訪問,使用命令:

grant all privileges on *.* to root@'%' identified by 'root';

這樣,就會添加一條,其他服務器就可以訪問了。


接下來部署nginx,nginx可以用來做web服務器,也可以作爲動靜分離服務器以及反向代理服務器。

由於nginx是具有高自由度的軟件,具有非常多的模塊,因此在配置的時候需要非常全面的考慮,所以我們選用OpenResty工具,它裏面集成了大多數nginx的常用模塊,並且可以支持lua。

去官網下載openresty後解壓, ./configure進行編譯,當然前提是安裝了pcre-devel、openssl-devel(yum install pcre-devel openssl-devel gcc curl),然後make install安裝,安裝後在/usr/local/openresty下,注意下/usr/local/openresty/nginx/sbin下會有一個nginx文件,後期如果openresty滿足不了需求,可以自己定製nginx生成文件後替換這個文件即可。

安裝好以後啓動一下,在nginx下sbin/nginx -c conf/nginx.conf,看下端口:

接下來把前端文件上傳到nginx下的html中,這樣前端就可以訪問了,但是我們需要nginx做轉發,所以需要實現當訪問靜態資源文件的時候是直接訪問,需要代理的時候做代理,因此還需要改下配置:

改爲下面的: 

alias就是做轉發定位用的,然後當然吧前端資源都放在resources中,接下來請求的時候需要加上resources:


由於要做到動靜分離服務,所以還需要部署反向代理服務器:

部署upstream server,打開配置文件添加下面配置:

代表這個nginx是應用服務器的client,所以http的host字段需要拼接。

代表真正的ip地址是遠端的ip地址,否則backend_server拿到的地址是nginx的地址.

代表這個nginx代理服務器轉發了對應的請求。

接下來sbin/nginx -s reload重新加載nginx即可。

 

然後開啓tomcat access log驗證

tomcat的access log顯然是記錄日誌用的,對後期拍錯非常有用,springboot默認關閉,所以在配置文件中加:

server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.directory=/var/www/miaosha/tomcat
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D

第三行分別代表:遠端請求ip地址,默認是“-”,遠端主機user,處理時長,請求url,http返回狀態碼,請求response大小,處理請求的時長。

重啓tomcat後請求,看下日誌:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章