nginx(engine x) 是一個 高性能 的 HTTP 和 反向代理 服務器、郵件代理服務器以及通用的 TCP/UDP 代理服務器。其特點為輕量級(占用系統資源少)、穩定性好、可擴展性(模塊化結構)、并發能力強、配置簡單等。 本文主要介紹在測試環境中通過 nginx 實現基本的 負載均衡 功能。 nginx 可以提供 HTTP 服務,包括處理靜態文件,支持 SSL 和 TLS SNI、GZIP 網頁壓縮、虛擬主機、URL 重寫等功能,可以搭配 FastCGI、uwsgi 等程序處理動態請求。 此外,nginx 還可以用于代理、反向代理、負載均衡、緩存等服務器功能,在集群環境中改善網絡負載、提高可用性。 一、搭建測試環境 這里的測試環境為通過VirtualBox 安裝的兩臺Lubuntu 19.04 虛擬機,Linux 系統安裝方法不作贅述。 為了保證兩臺 Linux 虛擬機之間的相互訪問,虛擬機的網絡配置除了默認的 NAT 方式外,還使用了 VirtualBox 軟件提供的內部網絡(Internal) 聯網方式。 此外,還需要將兩臺虛擬機中與“內部網絡”相關聯的網卡,綁定上 同一網段 的靜態 IP 地址,則兩臺主機形成局域網絡,相互之間可以直接訪問。 網絡配置 打開 VirtualBox 軟件,分別進入兩臺虛擬機的設置界面,為其添加 連接方式為內部網絡 的網絡連接,截圖如下(兩臺虛擬機作同樣的配置): 內部網絡 登錄進虛擬機系統,使用 ip addr 命令查看當前的網絡連接信息: $ ip addr ... 2: enp0s3: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:38:65:a8 brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3 valid_lft 86390sec preferred_lft 86390sec inet6 fe80::9a49:54d3:2ea6:1b50/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: enp0s8: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:0d:0b:de brd ff:ff:ff:ff:ff:ff inet6 fe80::2329:85bd:937e:c484/64 scope link noprefixroute valid_lft forever preferred_lft forever 可以看到,此時的 enp0s8 網卡還沒有綁定 IPv4 地址,需要為其手動指定靜態 IP。 需要 注意 的是,從 Ubuntu 17.10 版本開始,一個新的名為 netplan 的工具被引入,原來的網絡配置文件/etc/network/interfaces不再生效。 所以為網卡設置靜態 IP 時需要修改 /etc/netplan/01-network-manager-all.yaml 配置文件,示例如下: network: version: 2 renderer: NetworkManager ethernets: enp0s8: dhcp4: no dhcp6: no addresses: [192.168.1.101/24] # gateway4: 192.168.1.101 # nameservers: # addresses: [192.168.1.101, 8.8.8.8] 由于兩臺主機處于同一子網,網關和 DNS 服務器未配置的情況下仍可以互相訪問。對應的配置項暫時先注釋掉(后續可以嘗試自行搭建 DNS 服務器)。 編輯完成后運行sudo netplan apply命令,前面配置的靜態 IP 即可生效。 $ ip addr ... 3: enp0s8: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:0d:0b:de brd ff:ff:ff:ff:ff:ff inet 192.168.1.101/24 brd 192.168.1.255 scope global noprefixroute enp0s8 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe0d:bde/64 scope link valid_lft forever preferred_lft forever 登錄進另一臺虛擬機中,執行同樣的操作(注意配置文件中的 addresses 項改為 [192.168.1.102/24] )。兩臺虛擬機的網絡即配置完成。 此時有 Linux 虛擬機 server1,IP 地址為 192.168.1.101;Linux 虛擬機 server2,IP 地址為 192.168.1.102。兩臺主機可相互訪問。測試如下: starky@server1:~$ ping 192.168.1.102 -c 2 PING 192.168.1.102 (192.168.1.102) 56(84) bytes of data. 64 bytes from 192.168.1.102: icmp_seq=1 ttl=64 time=0.951 ms 64 bytes from 192.168.1.102: icmp_seq=2 ttl=64 time=0.330 ms --- 192.168.1.102 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 2ms rtt min/avg/max/mdev = 0.330/0.640/0.951/0.311 ms skitar@server2:~$ ping 192.168.1.101 -c 2 PING 192.168.1.101 (192.168.1.101) 56(84) bytes of data. 64 bytes from 192.168.1.101: icmp_seq=1 ttl=64 time=0.223 ms 64 bytes from 192.168.1.101: icmp_seq=2 ttl=64 time=0.249 ms --- 192.168.1.101 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 29ms rtt min/avg/max/mdev = 0.223/0.236/0.249/0.013 ms 二、安裝 nginx 服務器 nginx 的安裝方式主要有兩種:
本示例并沒有特殊的需求,所以直接選擇第一種安裝方式。命令如下: $ sudo apt-get update $ sudo apt-get install nginx 安裝成功后,通過systemctl status nginx命令查看 nginx 服務的運行狀態: $ systemctl status nginx ● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en Active: active (running) since Tue 2019-07-02 01:22:07 CST; 26s ago Docs: man:nginx(8) Main PID: 3748 (nginx) Tasks: 2 (limit: 1092) Memory: 4.9M CGroup: /system.slice/nginx.service ├─3748 nginx: master process /usr/sbin/nginx -g daemon on; master_pro └─3749 nginx: worker process 通過curl -I 127.0.0.1命令驗證 Web 服務器是否可以正常訪問: $ curl -I 127.0.0.1 HTTP/1.1 200 OK Server: nginx/1.15.9 (Ubuntu) ... 三、負載均衡配置 負載均衡(load-balancing)即按照一定的規則將負載分攤到多個操作單元上執行,從而提高服務的可用性和響應速度。 簡單的示例圖如下: load-balancing 如某網站應用部署在多臺主機構成的服務器集群上,負載均衡服務器位于終端用戶和服務器集群之間,負責接收終端用戶的訪問流量,并根據一定的規則將用戶訪問 分發 給后端的服務器主機,從而提高在高并發狀態下的響應速度。 負載均衡服務器 nginx 可以通過 upstream 選項配置負載均衡。這里使用虛擬機 server1 作為負載均衡服務器。 修改 serve1 上默認站點的配置文件( sudo vim /etc/nginx/sites-available/default ),改為如下內容: upstream backend { server 192.168.1.102:8000; server 192.168.1.102; } server { listen 80; location / { proxy_pass http://backend; } } 基于測試的目的,當前只有兩臺虛擬機。server1(192.168.1.101)已經作為負載均衡服務器,所以使用 server2(192.168.1.102)作為應用服務器。 這里借助 nginx 的虛擬主機功能,分別將 192.168.1.102 和 192.168.1.102:8000 “模擬”為兩臺不同的應用服務器。 應用服務器 修改 server2 上默認站點的配置文件( sudo vim /etc/nginx/sites-available/default ),改為如下內容: server { listen 80; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name 192.168.1.102; location / { try_files $uri $uri/ =404; } } 在 /var/www/html 目錄下創建 index.html 文件,作為 default 站點的 index 頁面,內容如下: <html> <head> <title>Index Page From Server1</title> </head> <body> <h1>This is Server1, Address 192.168.1.102.</h1> </body> </html> 運行 [code]sudo systemctl restart nginx [/code]命令重啟 nginx 服務,此時訪問http://192.168.1.102 即可獲取剛剛創建的 index.html 頁面: $ curl 192.168.1.102 <html> <head> <title>Index Page From Server1</title> </head> <body> <h1>This is Server1, Address 192.168.1.102.</h1> </body> </html> 配置“另一臺主機”上的站點,在 server2 上創建 [code]/etc/nginx/sites-available/server2 [/code]配置文件,內容如下: server { listen 8000; root /var/www/html; index index2.html index.htm index.nginx-debian.html; server_name 192.168.1.102; location / { try_files $uri $uri/ =404; } } 注意監聽端口和 index 頁面的配置變化。在 /var/www/html 目錄下創建 index2.html 文件,作為 server2 站點的 index 頁面,內容如下: <html> <head> <title>Index Page From Server2</title> </head> <body> <h1>This is Server2, Address 192.168.1.102:8000.</h1> </body> </html> PS:為了測試目的,default 站點和 server2 站點配置在同一個主機 server2 上,且頁面稍有不同。實際環境中通常將這兩個站點配置在不同的主機上,且內容一致。 運行sudo ln -s /etc/nginx/sites-available/server2 /etc/nginx/sites-enabled/命令啟用剛剛創建的 server2 站點。 重啟 nginx 服務,此時訪問 http://192.168.1.102:8000 即可獲取剛剛創建的 index2.html 頁面: $ curl 192.168.1.102:8000 <html> <head> <title>Index Page From Server2</title> </head> <body> <h1>This is Server2, Address 192.168.1.102:8000.</h1> </body> </html> 負載均衡測試 回到負載均衡服務器即虛擬機 server1 上,其配置文件中設置的 反向代理 URL 為 http://backend 。 由于未曾配置域名解析服務,無法將 URLhttp://backend 定位到正確的位置。 可以修改 server1 上的 /etc/hosts 文件,添加如下一條記錄: 127.0.0.1 backend 即可將該域名解析到本地 IP ,完成對負載均衡服務器的訪問。 重啟 nginx 服務,在 server1 上訪問http://backend ,效果如下: $ curl http://backend <html> <head> <title>Index Page From Server1</title> </head> <body> <h1>This is Server1, Address 192.168.1.102.</h1> </body> </html> $ curl http://backend <html> <head> <title>Index Page From Server2</title> </head> <body> <h1>This is Server2, Address 192.168.1.102:8000.</h1> </body> </html> $ curl http://backend <html> <head> <title>Index Page From Server1</title> </head> <body> <h1>This is Server1, Address 192.168.1.102.</h1> </body> </html> $ curl http://backend <html> <head> <title>Index Page From Server2</title> </head> <body> <h1>This is Server2, Address 192.168.1.102:8000.</h1> </body> </html> 從輸出中可以看出,server1 對負載均衡服務器http://backend 的訪問,完成了對應用服務器 server2 上兩個 Web 站點的 輪詢 ,起到負載均衡的作用。 四、負載均衡方法 nginx 開源版本提供四種負載均衡的實現方式,簡單介紹如下。 1. Round Robin 用戶請求 均勻 地分配給后端服務器集群(可以通過 weight 選項設置輪詢的 權重 ),這是 nginx 默認使用的負載均衡方式: upstream backend { server backend1.example.com weight=5; server backend2.example.com; } 2. Least Connections 用戶請求會優先轉發給集群中當前活躍連接數最少的服務器。同樣支持 weight 選項。 upstream backend { least_conn; server backend1.example.com; server backend2.example.com; } 3. IP Hash 用戶請求會根據 客戶端 IP 地址 進行轉發。即該方式意圖保證某個特定的客戶端最終會訪問 同一個 服務器主機。 upstream backend { ip_hash; server backend1.example.com; server backend2.example.com; } 4. Generic Hash 用戶請求會根據一個 自定義鍵值 確定最終轉發的目的地,該鍵值可以是字符串、變量或者組合(如源 IP 和端口號)。 upstream backend { hash $request_uri consistent; server backend1.example.com; server backend2.example.com; } 權重 參考下面的示例配置: upstream backend { server backend1.example.com weight=5; server backend2.example.com; server 192.0.0.1 backup; } 默認權重(weight)為 1 。 backup 服務器 只有在所有其他服務器全部宕機的情況下才會接收請求。 如上面的示例,每 6 個請求會有 5 個轉發給[code] backend1.example.com[/code],1 個轉發給 backend2.example.com。只有當 backend1 和 backend2 全部宕機時,192.0.0.1 才會接收并處理請求。 |
免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!
掃一掃,關注站長網微信
當我們在共享網絡訪問的時候,可能會遇到提示指定的網絡名不再可用的問題,這可能是由于我們的共享網絡出現了錯誤,也可能是被共享的對象所拒絕了。指定的網絡名 ......
文/曹楊 原標題:誰還看電視? 爸爸戴一副老花鏡,媽媽戴一副近視鏡,一人坐在沙發,一人躺在床上,各自刷著自己關注的博主更新的短視頻。電視也許開著,但只是背景。 這樣的畫面,幾乎成了洛奇家的常 ...
1、首先進入到“百度”軟件中, 2、然后在其中輸入“百度識圖”, 3、之后點擊圖中的“開始使用”按鈕, 4、緊接著點擊右下角的“相冊”功能, 5、在相冊下 ......
圖片來源于簡書 文/郭開森 楊帆 陸玖財經準備開新欄目了,每周一創始人郭開森和楊帆合體郭德帆,對行業進行一些觀察和評論,第一篇我們仍是打算寫社區團購,這是當下最火的話題。 來過陸玖財經做客的朋友們...
一、軟件沖突1、首先確認是否是應用程序沖突導致的。2、查看是否只有特定幾個游戲或應用會導致該問題。3、如果是應用沖突,那么只要卸載這些app就可以解決了。二 ......
電腦端:1、大家可以點擊右邊鏈接進入網頁版的百度網盤,進入之后點擊“去登錄”。https://pan.baidu.com/2、之后正確的輸入賬號密碼進行登錄就好啦。手機端:1 ......
一、N100對比intel i3 1、N100的跑分達到了147210分,這個數據可以達到i3的七代級別。 2、在跑分上也是超越了大部分的I3七代CPU,不過比I3八代要弱勢一些。 3 ......
8月15日消息 上周,有媒體報道前身為百度圖片的“榴蓮”APP含有大量不雅視頻內容被用戶舉報。對此,百度圖片官方進行了回應,百度圖片表示已經對報道中所涉及的“生吃旋風哥”等爭議內容進行了下線處理。 此外,百度...
在填寫一些項目申請書中,總是免不了要選擇一些數字,但是在方框中如何插入數字,該怎么辦呢?那么下面就由學習啦小編給大家分享下word在方框里輸入數字的技巧, ......
WPS Office手機版怎么加橫線?很多用戶還不知道WPS Office手機版怎么加橫線,WPS Office手機版怎么加橫線,WPS Office手機版怎么打橫線,WPS Office手機版怎么弄 ......
迅雷前綴是什么 答:迅雷前綴是(magnet:?xt=urn:btih:)括號里的就是了。 我們只要在這段文字之后輸入后續的內容,就可以創建下載鏈接了。 1、磁力鏈接不基于文 ......
一、內容特權。 1、半價點播。 許多站內視頻都需要付費觀看,而大會員用戶可以直接半價享受; 購買成功后的48h內無限次觀看。有部分的內容是只限在中國大陸內觀 ......
1、首先打開小米運動的“實驗室功能”。 2、接著點擊“門卡模擬”。 3、然后點擊“我知道了”。 4、最后貼近就可以刷卡成功了。...
答:華為P系列: 華為p40,華為p40plus,華為p50,華為p50e,華為p60 華為mate系列: 華為mate40,華為mate50,華為mate50e,華為mate60 華為nova系列: 華為n ......
近期有用戶反映,電腦在更新Windows 11 Insider Preview 25252.1000后,出現了應用和已壓縮的文件點擊毫無反應,拖拽都不行,只能從開始菜單打開的情況,這是怎 ......
可見單元格就是不包括隱藏或者篩選篩選后隱藏起來的單元格區域。方法:篩選或隱藏數據,復制需要粘貼的值,在目標單元格區域左上角的第一個單元格處右擊,選擇【 ......
答:驍龍8+更好。 驍龍7+gen2實際上就是驍龍8+的低配版本。 在一些其他的核心架構方面都是保持一致的,比如說CPU的架構、GPU的架構等等。 驍龍7+和驍龍8+具體 ......
文/黎明 一場針對中國互聯網巨頭的反壟斷風暴正在醞釀,而且這次動真格了。 11月10日,國家市場監管總局發布《關于平臺經濟領域的反壟斷指南(征求意見稿)》,要加大對互聯網巨頭涉嫌壟斷的調查和監管。 ...
win11系統如何釋放掉系統默認保留的存儲空間?一般情況下,Windows會保留一些存儲空間,以便設備獲得良好性能和成功更新。但是當出現系統盤儲存空間不足時,我們會將幾個G的保留空間釋放出來,以解燃眉之急。本期教...
文件被win10系統誤報病毒自動刪除了如何進行恢復?有用戶下載了某些破解軟件卻被Win10系統誤認為是病毒文件而自動刪除,當然系統自帶殺毒軟件其實挺不錯的,就是有時候會誤報,大家遇到這種情況的時候就希望把誤刪的...
1、先打開機頂盒進入主界面,并且使用遙控器打開設置。 2、然后選擇“賬號與安全”,并且進入。 3、最后往下面翻就可以看到“ADB調試”的選項,直接開啟就行了 ......
羅技g304dpi燈顏色代表什么:1、藍色:這種情況是正常工作的顯示,如果說是常亮或者閃爍,那都沒有問題這是在正常工作呢。2、紅色:如果說是紅燈閃爍的話那就是 ......
答:在3DMark壓力測試當中,顯卡需要超高97%才能夠算合格,證明顯卡的穩定性是過關的。 1、一般的默認情況下在2500~3000分就算很正常的了。 2、分數越高說明顯卡 ......
win11系統快速跳過聯網創建本地管理賬戶3種方法?現在市面上銷售的品牌筆記本和臺式機基本上都預裝Windows11家庭中文版正版操作系統,聯網后系統會自動激活。當用戶拿到新機器后還需要按照cortana(小娜)的提示一步...
我們經常用WPS的時候,如果需要輸入波浪號~,會發現鍵盤上的波浪號輸入之后在最上面,但是為了美觀,我們希望波浪號顯示在中間。這里總結了三個方法分享給大家 ......
答:中高端水平 i513500hx在處理器當中是處于一個中高端的水平。 i513500hx是第十一代酷睿處理器系列的一員,基礎頻率為2.4GHz,表現十分的不錯。 i513500hx介 ......
相信有非常多使用過筆記本的用戶都聽說過獨顯直連這個詞,但很多用戶并不了解獨顯直連是什么,又有什么用處,那么下面就和小編一起來看看什么是獨顯直連和開啟這 ......
win11系統開機總是自動登錄OneDrive如何關閉?win11系統開機的時候,會自動啟動OneDrive,不想要啟動,該怎么操作呢?下面我們就來看看詳細的教程。 在OneDrive界面點小齒輪按鈕,下拉菜單中點【設置】。 單擊【...
打開軟件,直接填寫就可以。 1、下載安裝easyconnect軟件, 2、打開easyconnect應用,在如圖所示的“服務器地址”一欄輸入如圖所示網址,點擊“連接”, 3、等 ......