網站首頁 編程語言 正文
1,這里我們來說下很重要的負載均衡, 那么什么是負載均衡呢?
由于目前現有網絡的各個核心部分隨著業務量的提高,訪問量和數據流量的快速增長,其處理能力和計算強度也相應地增大,使得單一的服務器設備根本無法承擔。在此情況下,如果扔掉現有設備去做大量的硬件升級,這樣將造成現有資源的浪費,而且如果再面臨下一次業務量的提升時,這又將導致再一次硬件升級的高額成本投入,甚至性能再卓越的設備也不能滿足當前業務量增長的需求。
針對此情況而衍生出來的一種廉價有效透明的方法以擴展現有網絡設備和服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性的技術就是負載均衡(Load Balance)。
2, 負載均衡的種類
1)一種是通過硬件來進行解決,常見的硬件有NetScaler、F5、Radware和Array等商用的負載均衡器,但是它們是比較昂貴的
2)一種是通過軟件來進行解決的,常見的軟件有LVS、Nginx、apache等,它們是基于Linux系統并且開源的負載均衡策略.
3, 這里我們只來說Nginx(其他的大家有興趣可以自行查閱相關文檔)
Nginx(發音同 engine x)是一款輕量級的Web服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,并在一個BSD-like 協議下發行。由俄羅斯的程序設計師Igor Sysoev(伊戈爾·西索夫)所開發,供俄國大型的入口網站及搜索引擎Rambler(漫步者)(俄文:Рамблер)使用。其特點是占有內存少,并發能力強,事實上nginx的并發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:新浪、網易、騰訊等。
優點:
1:可運行linux,并有Windows移植版。
2:在高連接并發的情況下,Nginx是Apache服務器不錯的替代品Nginx在美國是做虛擬主機生意的老板們經常選擇的軟件平臺之一。能夠支持高達 50,000 個并發連接數的響應
4, 創建兩臺Nginx服務器
由于自己在自己電腦上搭建, 所以 現在只模擬搭建兩臺Nginx服務器.
負載均衡的功能:
轉發
故障移除
恢復添加
高可用 Ha
我們想要使用Nginx那么就必須滿足上面的四個條件.
我們配置負載均衡的目的是在于當用戶訪問我們的服務器的時候, 首先會通過 Nginx服務器來決定轉發到哪個Tomcat服務器上去給用戶提供服務, 當然這個概率是我們通過權重來配置的. 經過Nginx指派之后, 我們就可以處理高并發的訪問了, 這里就能達到負載均衡的目的.
5, 搭建Nginx
首先我們需要大家兩臺機器, 兩臺機器分別安裝了Nginx和Tomcat, IP分別為: 192.168.200.129. 192.168.200.130
接著我們需要將Nginx和Tomcat包分別拷貝到CentOS01和CentOS02上, 并且解壓好, 這里就不再復述這個過程了.
然后我們需要關閉Linux的防火墻, 否則的話啟動了Nginx也是連接不上的.
我們還是來再看下解壓吧:
解壓完之后我們需要編譯安裝:
./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
注意:上邊將臨時文件目錄指定為/var/temp/nginx,需要在/var下創建temp及nginx目錄
mkdir -p /var/temp/nginx
執行完上訴步驟后, 我們可以看到nginx目錄下生成了Makefile文件,我們接著往下:
后使用Make命令, 運行結束后在使用Make install命令進行安裝, 最后是啟動Nginx:
查看是否啟動成功:
配置反向服務代理器:
什么是反向服務呢? 首先說下正向服務, 例如爬蟲程序, 我們主動出擊去獲取資源. 而反向服務我們是等待用戶來訪問. 區別在于主動和被動.
配置文件Nginx/conf/nginx.conf
配置Nginx轉發條件
重啟Nginx服務器
為了測試, 我們在兩個Tomcat 服務器的index.jsp中分別加了這是來自于哪個ip下的Tomcat. 如下圖所示:
重啟好Nginx后, 我們再來訪問192.168.200.129 這臺機器, 我么可以發現其實訪問的是129.168.200.130這臺機器.
負債均衡的配置, 配置轉發的權重: (另一臺CentOS02 依然按照CentOS01的配置)
我們在這里配置了兩臺轉發機器: 192.168.200.129和192.168.200.130, 它們的權重分別是2/3 和1/3, 也就是說訪問三次192.168.200.129, 有兩次是192.168.200.129上的Tomcat來處理, 有一次是192.168.200.130上的Tomcat來處理. 如果我們的Tomcat服務器更多 那么就需要在這里配置更多, 權重根據實際需求來劃分.
同上, 搭建另一臺機器192.168.200.130的負載均衡:
搭建Keepalived:(Keepalived需要依賴openssl)
這里如果我們的機器192.168.200.129 出現故障了呢? 那么怎么使用192.168.200.130上的Nginx進行轉發呢? 怎么設置主機和備機呢? 如果主機死了怎么進行故障移除呢? 如果主機從不可用到可用狀態又怎么進行恢復添加呢? 這些功能都是可以通過Keepalived來進行設置的.
Keepalived原理:
首先Keepalived可以在主機上產生一個虛擬的ip, 這里叫做vip(v是virtual的意思):192.168.200.150, keepalived會將這個vip綁定到交換機上.
當用戶訪問主機:192.168.200.129時, 交換機會通過這個ip和vip的對應找到192.168.200.129上的Nginx進行處理.
如果當有一天192.168.200.129上的Nginx掛掉的時候, Keepalived會立即在備機上生成一個相同的vip:192.168.200.150, 當用戶繼續訪問192.168.200.129時, 交換機上已經綁定了vip, 這時發現這個vip是存在于192.168.200.130上面的, 所以直接將請求轉發到了備機上.
如果主機被修復好能夠繼續對外提供服務時, 這時keepalived會將主機上繼續生成這個vip, 同時回收在備機上生成的vip. 這個是通過心跳檢查來判斷主機已恢復使用.
我這里已經提前安裝好了oppenssl, 關于具體安裝方法大家可以自行百度.
檢查openssl 是否安裝成功:
Keepalived的安裝命令:
查看Keepalived的安裝目錄:
編輯Keepalived的配置文件:
首先我們來清空配置文件(清空后會自動再生成一個keepalived.conf, 但是里面的內容為空)
關于為什么要清空, 因為我們已經配置好了一些相關內容, 直接使用即可.
這里是來設置虛擬IP和eth1:
因為我的CentOS是拷貝過來的, 所以這里是eth1, 關于怎么查看, 我們在文章開頭有查看本機ip: ifconfig, 那里面有顯示我們的網卡就是eth1.
配置完成之后, 啟動keepalived:
檢測Keepalived是否啟動成功:
這里查看 我們的機器多了兩個ip, 其實這兩個ip都是虛擬ip
設置備機:|
這里的權重只要低于主機的100就好.
啟動備機的Keepalived:
當主機停止服務時, 備機即可接管繼續服務:
原文鏈接:https://www.cnblogs.com/ios9/p/15788584.html
相關推薦
- 2022-09-10 PyCharm:method?may?be?static問題及解決_python
- 2022-10-23 Python?Pandas數據合并pd.merge用法詳解_python
- 2022-09-29 淺談音視頻?pts?dts基本概念及理解_其它綜合
- 2022-04-25 深入理解React?三大核心屬性_React
- 2022-11-05 Android開發使用Databinding實現關注功能mvvp_Android
- 2022-05-18 Python繪制散點圖的教程詳解_python
- 2022-11-14 python中的運算符
- 2022-07-03 解決編碼問題:UnicodeDecodeError:?'utf-8'?codec?can't?dec
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支