LVS+Nginx高可用集群---Nginx進階與實戰

1.Nginx中解決跨域問題

兩個站點的域名不一樣,就會有一個跨域問題。

跨域問題:了解同源策略:協議,域名,端口號都相同,只要有一個不相同那么就是非同源。
CORS全稱Cross-Origin Resource Sharing,意為跨域資源共享。當一個資源去訪問另一個不同域名或者同域名不同端口的資源時,就會發出跨域請求。如果此時另一個資源不允許其進行跨域資源訪問,那么訪問就會遇到跨域問題。

跨域指的是瀏覽器不能執行其它網站的腳本。是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript 施加的安全限制。
在這里插入圖片描述
前端有跨域嗎?有。請求資源跨域就有。記住同源策略問題。

Nginx跨域配置:
#允許跨域請求的域,*代表所有
add_header ‘Access-Control-Allow-Origin’ *;
#允許帶上cookie請求
add_header ‘Access-Control-Allow-Credentials’ ‘true’;
#允許請求的方法,比如 GET/POST/PUT/DELETE
add_header ‘Access-Control-Allow-Methods’ *;
#允許請求的header
add_header ‘Access-Control-Allow-Headers’ *;
在這里插入圖片描述

2.nginx中配置靜態資源防盜鏈

Nginx配置信息:

#對源站點驗證
valid_referers *.nly.com; 
#非法引入會進入下方判斷
if ($invalid_referer) {return 404;
} 

解析:匹配上面的驗證規則(域名為.nly.com)
匹配的話會繼續往下加載location配置。
沒有匹配的話,就會返回404

3.nginx的模塊化設計解析

在這里插入圖片描述
Nginx core:實現了底層的通信協議。也為其他的一些模塊和nginx的進程內容提供一個運行時的環境(類似于JVM),協調其他模塊。
Event module:epoll.操作操作系統層面的事件處理機制。
Phase handler:處理客戶端一些請求,以及一些相應內容的響應,
Output filter:過濾器。過濾內容返回瀏覽器。類比gzip(壓縮模塊)
Upstream:反向代理模塊
Load balancer:負載均衡器。實現集群,實現負載均衡的配置。
Extend module:第三方模塊。
nginx-1.22.0安裝包目錄下的內容。
在這里插入圖片描述

4.四層,七層DNS負載均衡

四層負載均衡:主要是基于ip和端口的負載均衡。原理是轉發請求到后臺的服務器。它是負責轉發,并且會記錄連接是由那個服務器處理的,后續這個連接的請求會由同一臺去處理。 (相當于常連接)
F5硬件負載均衡:成本高,穩定不錯。商業級別的負載均衡。
LVS四層負載均衡:linux內核負載均衡。主要是用來轉發請求的。
Hapooxy四層負載均衡:靈活性高。
Nginx四層負載均衡。

七層負載均衡:是基于url和ip的負載均衡。基于應用層,針對于http協議的負載均衡。
Nginx七層負載均衡:
Haproxy七層負載均衡:靈活性高
Apache七層負載均衡:并發不如nginx。
四層多用LVS,七層多用nginx.
七層主要是針對http協議,適用于web服務器,比如tomcat,Apache,nginx。七層會處理請求,比如:壓縮css,js等
四層主要是針對tcp/udp協議。主要運用于轉發請求而不是處理。
DNS地域負載均衡:
在這里插入圖片描述
在這里插入圖片描述

5.JMet測試單節點與集群的并發異常率

Jmeter工具:測試網站性能,apache.

使用jmeter工具。注意點:如何使用jmeter?配置環境變量。安裝時候需要修改哪些變量(注冊表的信息,添加注冊表對應位置的權限,創造對應的文件,然后修改了#server.rmi.ssl.disable=false 去掉注釋 修改末尾的false–>true Jmeter)

測試單個tomcat運行:(用戶即線程)
1.50個用戶,100次請求–無異常
2.200個用戶,100次請求–異常率高達18.51%。

集群測試:
測試結果對比:
在這里插入圖片描述
區別在于平均值,異常率,以及吞吐量。
正常情況下,公司異常率有臨界點。超過臨界點,并發就認為已經封頂了。然后就需要做一些處理,例如,硬件配置的升級,擴容。

6.負載均衡

負載均衡值輪巡
Nginx訪問多臺服務器時,采用的是輪詢的方式。
負載均衡之權重:
根據機械性能配置權重。數值越小,訪問的頻率越低。
在這里插入圖片描述

7.upstream 指令

upstream 指令參數值-maxconns
在這里插入圖片描述
max_conns:限制每臺server的連接數,用于保護避免過載,可起到限流的作用
配置模板:設置為1,避免使用到共享內存

worker進程設置1個,便于測試觀察成功的連接數

worker_processes  1;upstream tomcats {server 192.168.1.173:8080 max_conns=2;server 192.168.1.174:8080 max_conns=2;server 192.168.1.175:8080 max_conns=2;
}

測試:jmeter配置間隔時間為0.
當配置的連接數達到最大連接數(3*2=6),就無法處理請求了。

slow_start:將不健康的服務器變成健康的服務器
在這里插入圖片描述
配置參考如下:
upstream tomcats {
server 192.168.1.173:8080 weight=6 slow_start=60s;

server 192.168.1.190:8080;

    server 192.168.1.174:8080 weight=2;server 192.168.1.175:8080 weight=2;

}
down:用于標記服務結點不可用
配置模板:
upstream tomcats {
server 192.168.1.173:8080 down;

server 192.168.1.190:8080;

    server 192.168.1.174:8080 weight=1;server 192.168.1.175:8080 weight=1;

}

Backup:表示當前服務器節點是備用機,只有在其他服務器都宕機以后,自己才會加入集群中,被用戶訪問到。
配置模板:
upstream tomcats {
server 192.168.1.173:8080 backup;

server 192.168.1.190:8080;

    server 192.168.1.174:8080 weight=1;server 192.168.1.175:8080 weight=1;

}

max_fails:表示失敗幾次,則標記server已經宕機,剔除上游服務。
fail_timeout:表示失敗的重試時間。
在這里插入圖片描述
在這里插入圖片描述
max_fails=2 fail_timeout=15s
則代表在15秒內請求某一server失敗達到2次后,則認為該server已經掛了或者宕機了,隨后再過15秒,這15秒內不會有新的請求到達剛剛掛掉的節點上,而是會請求到正常運作的server,15秒后會再有新請求嘗試連接掛掉的server,如果還是失敗,重復上一過程,直到恢復。

8.使用keepalived提高吞吐量

配置信息:
Keepalive:表示的是要保持的連接數(將一些鏈接作為常鏈接)
keepalived: 設置長連接處理的數量
proxy_http_version:設置長連接http版本為1.1
proxy_set_header:清除connection header 信息
官方模版:
在這里插入圖片描述
自定義模板:
在這里插入圖片描述
提升了吞吐量,以及接受跟傳輸的量(kb)

9.負載均衡原理-ip_hash;url hash 與least_conn
Ip_hash:可以保證用戶訪問可以請求到上游服務中固定的服務器,前提是用戶ip沒有發生改變(本質上是根據用戶ip hash了以后,根據hash值再分配到一臺特定的服務器里)

hash算法:
在這里插入圖片描述
配置模板:

upstream tomcats {ip_hash;server 192.168.1.173:8080;server 192.168.1.174:8080 down;server 192.168.1.175:8080;
}

具體算法:
可以在/home/software/nginx-1.22.0/src/http/modules目錄下看到算法。

當需要臨時將一臺服務器進行移除時,需要標記該臺服務器為down.不能直接移除
當使用hash算法時,算法中使用的是ip地址的前三部分。舉例:192.168.56.102 hash算法中使用的是192.168.56來進行計算的
一致性hash算法
hash算法帶來的問題:后臺服務器的節點的增多或者減少,緩存等問題可以會降低效率

在這里插入圖片描述
一致性hash算法的高明之處在于:保證絕大多數的請求能訪問到原來的計算機節點,僅僅只有一部分的請求會發生變化
(降低節點宕機或者新增節點時,對于用戶的影響或者可以說緩存的影響)
負載均衡之url_hash:
原理:hash處理url,然后求模,計算index.(根據index去訪問)
在這里插入圖片描述
配置模板:
upstream tomcats {
# url hash
hash $request_uri;
# 最少連接數
# least_conn

server 192.168.1.173:8080;
server 192.168.1.174:8080;
server 192.168.1.175:8080;

}
server {
listen 80;
server_name www.tomcats.com;

location / {proxy_pass  http://tomcats;
}

}
Url:使用www.nly.com/nginx-url-hash/account跟使用www.nly.com/nginx-url-hash/account/的結果不同
負載均衡:Least_conn:根據哪臺服務器的連接數最少就請求哪一臺。

10.Nginx 控制瀏覽器緩存

緩存:
在這里插入圖片描述
瀏覽器緩存加速單個用戶的訪問。Nginx緩存,優化在內網的傳輸(提升所有訪問到nginx端的用戶;提升訪問上游(upstream)服務器的速度;用戶訪問仍然會產生流量)。(內網請求到不同的服務器,會有帶寬的損耗,所以會有請求以及響應的時間)
瀏覽器緩存,當status顯示為304時,表示的是緩存.Expire限制的是過期時間。
通過設置expire定義過期時間。看cache-control選項:
在這里插入圖片描述
expire設置模板:

location /files {alias /home/imooc;# expires 10s;設置過期時間# expires @22h30m;設置持續多久# expires -1h;距離現在時間的前一個小時已經失效了# expires epoch;表示no-cache# expires off;默認nginx中的expire處于關閉狀態。瀏覽器端還是有默認的機制的expires max;最大時間,即永不過期
}

11.Nginx 反向代理緩存

配置模板:

# proxy_cache_path 設置緩存目錄
#       keys_zone 設置共享內存以及占用空間大小
#       max_size 設置緩存大小
#       inactive 超過此時間則被清理
#       use_temp_path 臨時目錄,使用后會影響nginx性能
proxy_cache_path /usr/local/nginx/upstream_cache keys_zone=mycache:5m max_size=1g inactive=1m use_temp_path=off;location / {proxy_pass  http://tomcats;# 啟用緩存,和keys_zone一致proxy_cache mycache;# 針對200304狀態碼緩存時間為8小時proxy_cache_valid   200 304 8h;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/43410.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/43410.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/43410.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大模型知識大全1-基礎知識【大模型】

文章目錄 大模型簡介以后的介紹流程基礎知識訓練流程介紹pre-train對齊和指令微調規模拓展涌現能力 系統學習大模型的記錄https://github.com/LLMBook-zh/LLMBook-zh.github.io 大模型簡介 歷史我就不寫了,簡單說說大模型的應用和特點。人類使用大模型其實分為兩個…

linux高級編程(OSI/UDP(用戶數據報))

OSI七層模型: OSI 模型 --> 開放系統互聯模型 --> 分為7層: 理想模型 --> 尚未實現 1.應用層 QQ 應用程序的接口 2.表示層 加密解密 gzip 將接收的數據進行解釋&#xff…

【shell】—雙引號引用變量

文章目錄 一、舉例—單、雙引號引用變量的結果差異二、使用雙引號引用變量的場景1、使用雙引號—可以防止字符串被分割2、使用雙引號—特殊字符變為普通字符3、使用雙引號—保存原始命令的輸出格式4、使用雙引號—具有強約束的單引號變為普通單引號字符5、注意 一、舉例—單、雙…

挑戰杯 opencv python 深度學習垃圾圖像分類系統

0 前言 🔥 優質競賽項目系列,今天要分享的是 🚩 opencv python 深度學習垃圾分類系統 🥇學長這里給一個題目綜合評分(每項滿分5分) 難度系數:3分工作量:3分創新點:4分 這是一個較為新穎的競…

昇思25天學習打卡營第13天|應用實踐之ResNet50遷移學習

基本介紹 今日的應用實踐的模型是計算機實踐領域中十分出名的模型----ResNet模型。ResNet是一種殘差網絡結構,它通過引入“殘差學習”的概念來解決隨著網絡深度增加時訓練困難的問題,從而能夠訓練更深的網絡結構。現很多網絡極深的模型或多或少都受此影響…

數據鏈路層(超詳細)

引言 數據鏈路層是計算機網絡協議棧中的第二層,位于物理層之上,負責在相鄰節點之間的可靠數據傳輸。數據鏈路層使用的信道主要有兩種類型:點對點信道和廣播信道。點對點信道是指一對一的通信方式,而廣播信道則是一對多的通信方式…

算法工程師第五天(● 哈希表理論基礎 ● 242.有效的字母異位詞 ● 349. 兩個數組的交集 ● 202. 快樂數● 1. 兩數之和 )

參考文獻 代碼隨想錄 一、有效的字母異位詞 給定兩個字符串 s 和 t ,編寫一個函數來判斷 t 是否是 s 的字母異位詞。 注意:若 s 和 t 中每個字符出現的次數都相同,則稱 s 和 t 互為字母異位詞。 示例 1: 輸入: s "anagram", …

風險評估:Tomcat的安全配置,Tomcat安全基線檢查加固

「作者簡介」:冬奧會網絡安全中國代表隊,CSDN Top100,就職奇安信多年,以實戰工作為基礎著作 《網絡安全自學教程》,適合基礎薄弱的同學系統化的學習網絡安全,用最短的時間掌握最核心的技術。 這一章節我們需…

grafana數據展示

目錄 一、安裝步驟 二、如何添加喜歡的界面 三、自動添加注冊客戶端主機 一、安裝步驟 啟動成功后 可以查看端口3000是否啟動 如果啟動了就在瀏覽器輸入IP地址:3000 賬號密碼默認是admin 然后點擊 log in 第一次會讓你修改密碼 根據自定義密碼然后就能登錄到界面…

高職物聯網實訓室

一、高職物聯網實訓室建設背景 隨著《中華人民共和國國民經濟和社會發展第十四個五年規劃和2035年遠景目標綱要》的發布,中國正式步入加速數字化轉型的新時代。在數字化浪潮中,物聯網技術作為連接物理世界與數字世界的橋梁,其重要性日益凸顯…

Golang | Leetcode Golang題解之第224題基本計算器

題目&#xff1a; 題解&#xff1a; func calculate(s string) (ans int) {ops : []int{1}sign : 1n : len(s)for i : 0; i < n; {switch s[i] {case :icase :sign ops[len(ops)-1]icase -:sign -ops[len(ops)-1]icase (:ops append(ops, sign)icase ):ops ops[:len(o…

Knife4j的原理及應用詳解(三)

本系列文章簡介&#xff1a; 在當今快速發展的軟件開發領域&#xff0c;API&#xff08;Application Programming Interface&#xff0c;應用程序編程接口&#xff09;作為不同軟件應用之間通信的橋梁&#xff0c;其重要性日益凸顯。隨著微服務架構的興起&#xff0c;API的數量…

價值投資者什么時候賣出股票?

經常有人說&#xff0c;會買的只是徒弟&#xff0c;會賣的才是師傅。 在閱讀《戰勝華爾街》的過程中&#xff0c;也多次感受到林奇先生的賣出邏輯&#xff0c;當股票的價格充分體現了公司的價值的時候&#xff0c;就是該賣出股票的時候。但這只是理論上的&#xff0c;從林奇先…

數據中臺指標管理系統

您所描述的是一個數據中臺指標管理系統&#xff0c;它基于Spring Cloud技術棧構建。數據中臺是企業數據管理和應用的中心平臺&#xff0c;它整合了企業內外部的數據資源&#xff0c;提供數據服務和數據管理能力。以下是您提到的各個模塊的簡要概述&#xff1a; 1. **首頁**&am…

JSP WEB開發(四) MVC模式

MVC模式介紹 MVC&#xff08;Model-View-Controller&#xff09;是一種軟件設計模式&#xff0c;最早出現在Smalltalk語言中&#xff0c;后來在Java中得到廣泛應用&#xff0c;并被Sun公司推薦為Java EE平臺的設計模式。它把應用程序分成了三個核心模塊&#xff1a;模型層、視…

2024年有多少程序員轉行了?

疫情后大環境下行&#xff0c;各行各業的就業情況都是一言難盡。互聯網行業更是極不穩定&#xff0c;頻頻爆出裁員的消息。大家都說2024年程序員的就業很難&#xff0c;都很焦慮。 在許多人眼里&#xff0c;程序員可能是一群背著電腦、進入高大上寫字樓的職業&#xff0c;他們…

SVN 80道面試題及參考答案(2萬字長文)

目錄 解釋SVN的全稱和主要功能。 SVN與CVS相比,有哪些主要改進? 描述SVN的工作流程。 什么是版本庫(repository)?它存儲了什么? 解釋工作副本(working copy)的概念。 SVN如何處理文件的版本控制? SVN中的“commit”是什么意思? 解釋“update”操作的作用。 如何…

Datawhale AI 夏令營 機器學習挑戰賽

一、賽事背景 在當今科技日新月異的時代&#xff0c;人工智能&#xff08;AI&#xff09;技術正以前所未有的深度和廣度滲透到科研領域&#xff0c;特別是在化學及藥物研發中展現出了巨大潛力。精準預測分子性質有助于高效篩選出具有優異性能的候選藥物。以PROTACs為例&#x…

Hi3861 OpenHarmony嵌入式應用入門--MQTT

MQTT 是機器對機器(M2M)/物聯網(IoT)連接協議。它被設計為一個極其輕量級的發布/訂閱消息傳輸 協議。對于需要較小代碼占用空間和/或網絡帶寬非常寶貴的遠程連接非常有用&#xff0c;是專為受限設備和低帶寬、 高延遲或不可靠的網絡而設計。這些原則也使該協議成為新興的“機器…