簡單聊聊不可或缺的Nginx反向代理伺服器——實現負載均衡
今天又是新的一周,我養足了精神去對待新一周的工作,但是今天到公司發現還是有一點空閑時間的,所以就想與之前接觸過的Nginx再交往得更深一點兒。
什麼是Nginx:Nginx是一款高性能的http伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器。官方測試nginx能夠支撐5萬並發鏈接,但是實際生產環境能到2-3萬並發連接數(只是聽說),並且cpu、內存等資源消耗缺非常低,運行非常穩定。
Nginx在實際生產中的應用場景:上面已經說了,Nginx是一款高性能的http伺服器,所以它可以提供單獨的http服務,經常在開發中用作靜態網頁伺服器來使用;還有一點就是它的核心應用,即反向代理伺服器和負載均衡:其實反向代理這一點並不難理解,就是通過配置將伺服器的IP和指定域名進行映射即可。至於負載均衡,就是當某個網站的訪問量達到一定程度後,並且單台伺服器不能提供服務的情況下,我們就需要藉助軟體技術能夠讓多台伺服器輪流分擔訪問壓力,目的是達到不會因為某台伺服器負載高宕機而某台伺服器閑置的這種不公平情況,經常我們會採取某種輪詢機制來讓它們正常工作。
什麼是負載均衡(Load Balance):一台普通伺服器的處理能力是有限的,假如能達到每秒幾萬個到幾十萬個請求,但卻無法在一秒鐘內處理上百萬個甚至更多的請求。但若能將多台這樣的伺服器組成一個系統,並通過軟體技術將所有請求平均分配給所有伺服器,那麼這個系統就完全擁有每秒鐘處理幾百萬個甚至更多請求的能力。這就是負載均衡最初的基本設計思想。
負載均衡是由多台伺服器以對稱的方式組成一個伺服器集合,每台伺服器都具有等價的地位,都可以單獨對外提供服務而無須其他伺服器的輔助。通過某種負載分擔技術,將外部發送來的請求按照某種策略分配到伺服器集合的某一台伺服器上,而接收到請求的伺服器獨立地回應客戶的請求。負載均衡解決了大量並發訪問服務問題,其目的就是用最少的投資獲得接近於大型主機的性能。
在Linux環境上安裝Nginx:
第一步:安裝GCC,因為Nginx是用C語言開發的,所以在安裝的時候需要編譯:
yum install –y gcc-c++
第二步:需要安裝第三方軟體:
- 安裝PCRE
yum install –y pcrepcre-devel
- 安裝ZLIB
yum install –y zlibzlib-devel
- 安裝OPENSSL
yum install –y opensslopenssl-devel
第三步: 將Nginx源碼包上傳到linux系統(我這裡使用的是nginx-1.8.0.tar.gz),並且解壓縮:
tar -xf nginx-1.8.0.tar.gz
第四步:配置參數,進入nginx的解壓目錄下,執行以下命令:【注意,在配置命令中指定了安裝Nginx的臨時目錄/var/temp/nginx,必須手動創建該結構的目錄mkdir /var/temp/nginx -p】
./configure
--prefix=/usr/local/nginx
--pid-path=/var/run/nginx/nginx.pid
--lock-path=/var/lock/nginx.lock
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--with-http_gzip_static_module
--http-client-body-temp-path=/var/temp/nginx/client
--http-proxy-temp-path=/var/temp/nginx/proxy
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi
--http-scgi-temp-path=/var/temp/nginx/scgi
第五步:編譯Nginx源碼包:
make
第六步:安裝Nginx:
make install
第七步:查看Nginx安裝目錄,如果存在conf、html、sbin三個目錄,則基本安裝成功:
第八步:啟動Nginx、停止Nginx、重啟Nginx:
啟動:進入/usr/local/nginx/sbin目錄下執行命令 ./ngnix
重啟:./nginx–s reload
快速停止:./nginx -s stop
完整停止:./nginx -s quit
第九步:打開瀏覽器輸入安裝了Nginx的伺服器IP地址即可出現歡迎頁面,則安裝成功。
Nginx實現負載均衡:需求:當我們在瀏覽器訪問某一地址時,後台由多個不同埠的伺服器來輪詢響應?
實現步驟:
第一步、準備2台或2台以上的Tomcat伺服器,並且保證它們的埠號不發生衝突並能正常訪問,我這裡準備了2台並且在每個Tomcat中扔進一個運行正常的web項目。
第二步、配置Nginx的負載均衡,我這裡採用輪詢+權重的機制來實現的,說明一點:正常情況下負載均衡的配置是通過域名映射來訪問的,我這兒沒有映射域名,如果各位想通過映射域名則配置域名然後去修改hosts文件即可。
切換到Nginx安裝目錄下,進入conf目錄,編輯nginx.conf配置文件(如果想了解更詳細的配置說明,推薦http://www.cnblogs.com/xiaogangqq123/archive/2011/03/02/1969006.html):
第三步、通過配置文件中的配置,訪問資源,最後發現倆個Tomcat伺服器上的web應用輪詢響應(這裡本應該給各位上傳一段測試後的視頻的,但是諮詢了一下午沒能做到,還望各位將就一下吧)。
※一次花費了一兩個小時的mysql問題排查
※springboot用thymeleaf模板的paginate分頁
※MySQL系列(三)——索引
TAG:科技優家 |
※Nginx基礎,反向代理,負載均衡配置,僅此一篇文章就夠了
※Nginx反向代理伺服器目錄介紹與配置
※Nginx高性能的HTTP和反向代理伺服器
※Nginx反向代理和負載均衡部署指南
※華為Mate 20 Pro的反向充電,也帶不動它們
※新一代iPhone或支持反向無線充電,做Apple Watch最佳伴侶
※蘋果發布會不見硬體,但新iPhone或支持18W快充和無線反向充電!
※Udp的反向代理:nginx
※別驚訝,這款手機反向充電可以充滿零電量的iPhone X
※華為Mate 20 Pro的反向無線充電實用嗎?速度其實很慢
※開掛的惡意軟體——Part 1:簡單的CMD反向shell
※Hinton反思新作:我說反向傳播不好,但還是沒誰能顛覆它
※Mate20 Pro的沙雕操作,反向無線充電還能這麼用?
※蘋果真的也就這樣了,iPhone 11的反向充電有什麼價值?
※新iPhone功能曝光,反向充電加持,展現蘋果真正實力!
※華為Mate20 Pro這個功能你用沒?反向無線充電圈粉老外
※支持反向無線充電!iPhone 11 Pro真機大曝光
※dnf:反向祈願?那都不存在的,反手單吊直接一弔一個準
※iPhone11真機/手機盒實錘:為「浴霸」正名!反向充電
※Linux內核崩潰panic信息反向解析和保存在文件系統目錄