運維知識-總結1
一、什么是集群?
集群是一組相互獨立的、通過高速網絡互聯的計算機,它們構成了一個組,并以單一系統的模式加以管理。一個客戶與集群相互作用時,集群像是一個獨立的服務器。集群配置是用于提高可用性和可縮放性。
通過集群技術,可以在付出較低成本的情況下獲得在性能、可靠性、靈活性方面的相對較高的收益,其任務調度則是集群系統中的核心技術。
簡單總結為:集群就是一組協同工作但對外表現為一個整體的服務器組
集群系統的優點:
高可擴展性:如上所述,可以通過增加服務器數量達到性能擴展。
高可用性:集群中的一個節點失效,它的任務可以傳遞給其他節點??梢杂行Х乐箚吸c故障。
高性能:負載均衡集群允許系統同時接入更多的用戶。
高性價比:可以采用廉價的硬件服務器構造高性能的系統。
拓展:負載和分布式的區別?
飯店原來只有一個廚師,切菜洗菜備料炒菜全干。后來客人多了,廚房一個廚師忙不過來,又請了個廚師,兩個廚師都能炒一樣的菜,這兩個廚師的關系是負載均衡。為了讓廚師專心炒菜,把菜做到極致,又請了個配菜師負責切菜,備菜,備料,廚師和配菜師的關系是分布式,一個配菜師也忙不過來了,又請了個配菜師,兩個配菜師關系是負載均衡
負載調度器:
調度器:F5>LVS>nginx>
真實服務器:Apache
共享存儲:MFS
二、集群的分類:
LBC(load balance cluster):負載均衡集群,將用戶壓力分膽至不同節點
調度器:
軟件:Nginx,LVS,Amoba、Ha-proxy
硬件:F5,BIG-IP,ROSE,安瑞科技
LVS:(linux vit ual server):linunx虛擬服務器,現在LVS已經是Linux標準內核的一部分。
HAC:高可用集群 提高服務器的可用性--多臺機器工作同一內容,一臺不行了,另外一臺頂替它工作。
1、原理:
心跳檢測(互相之間傳遞一條報文,判斷對方是否存在,如果不存在就進行替換)
前提是多臺機器之間互相連接信號
2、出現的問題:
腦分離(因為種種原因,相互之間無法聯系,但兩臺設備完好,導致上位沖突)
解決方案:
(1)心跳線冗余:兩臺機器間線斷了,再加一條線連接。
(2)串口線:另一種自動更換線的線種。
(3)電源交換機:強行將另一臺機器去掉,即使腦分離,不管它是否壞掉,強行更換另一臺機器頂替他。
實現方案:
軟件:keepalived、heartbeat
硬件:F5、Big-IP、ROSE、安瑞科技
高可用集群(HAC)(耦合概念)
盡可能的提高服務器的可用性
4種高可用性集群的標準:一年的宕機時常,越低越好,5個九基本不好實現。
99:最低標準 87.6小時
999:三九標準 8.8小時
9999:四九標準 53分鐘 一年的宕機時長
99999:最高標準 5分鐘
只能無限接近100%,但又達不到100%
考慮宕機成本和構建成本對比,宕機成本越高,那么相應的構建成本也越高
HPC:高性能運算集群 提供單臺計算機提供不了的運算能力,性能大大加強,穩定
三、提升服務器的性能的方式:
垂直拓展:換一臺更好性能的服務器,更換更強大的硬件
缺點:
上限瓶頸,服務器的性能是有限制的,不可能會無限制增加
服務訪問中斷
優點:
技術實現難度低,操作簡單
網絡拓撲結構無需更改
水平拓展:增加服務器數量,協同處理
優點:
上限高
添加節點,服務訪問不會中斷
性價比較高,性能差的服務器也能利用上
缺點:
技術實現難度較高
-------------------------------------------------------------------------------------------
1、LBC(負載均衡集群)和HPC(高性能集群)對于提升性能的區別:
原理上講:HPC會將一個任務 A平分成若干個小a,然后通過調度器分給各個集群中的機器,通過降低處理單個任務的時間的方法,提高工作效率,每個工作的節點都不同,處理完各個節點后合并完成任務。
而LBC不具備拆分任務的功能,只有調度的作用,LBC是通過提升單位時間處理的任務數來提高效率。顯而易見,如果再高并發的情況下HPC更適合。
例:測試題:
一個A(任務),可被拆分為10個a(任務),1a需要1個小時被處理完,有11臺機器可用;問以LBC方式集群和HPC方式集群處理A任務,各自的所需時間、節點、方式?
LBC: (1)A (0)a,(10)時間,(2)節點工作
HPC: (1)A (10)a,(1)時間,(11)節點工作
HPC早期的實際應用之一,SETI@HOME 由瑪雅公司創建,其原理就是利用高可用性集群來實現的。
2、LBC負載均衡集群:
調度器
應用方式分類:對于OSI七層模型:
二層:數據鏈路層 應用:F5
四層:傳輸層: 應用:LVS、Ha-Proxy、Nginx(新版本支持。老版本不支持四層)、F5
七層:應用層: 應用:Nginx、Ha-Proxy(支持跨平臺)、Amoeba、F5
原理:
二層:(MAC編址和尋址)應用在此層,其實是在通過控制數據報的物理出口來均衡分流;數據從物理出口出來,可以選擇電信,聯通輸送數據
四層:一次TCP連接,有C(客戶端)和RS(真實服務器)完成

七層:兩次TCP連接,由C與D(調度器),D與RS完成,中間涉及將數據報文重新封裝2次的過程,實現兩次TCP連接。

這里舉個‘栗子’方便理解:
實例1: A去一個寫字樓找B,但路過門口,C告訴A B在5樓514房間,那么C只負責引導A連接B,至此只需要一個TCP連接,只是中間涉及到C(調度器)的一個算法,就是將目標IP和源IP轉換的過程。
實例2: 還是A找B,但這次需要C去做中間人去給兩個人溝通,A只有通過C來回傳話才可以實現數據傳輸,那么A與C 是一個TCP連接,C與B是一個TCP連接,這中間涉及兩次(數據傳進,傳出)數據報文封裝,即兩次TCP連接才可以。
使用場景:
七層里 的Nginx: HTTP,SSL,SMTP,不能說整個七層,因為Amoeba負載只支持sql;
整個四層:支持c\s結構
比較:
完整性角度:七層>四層:比如SYN攻擊,七層會進行攔截掉攻擊。

并發量:四層>七層;七層支持域名解析從而分離負載
3、LBC在四層應用中的軟件 ------LVS(Linux Virtual Server)linux 虛擬服務
LVS有兩種模塊:
用戶態: ipvsadm-----暴露在用戶空間的管理工具
內核態: ipvs------運行在內核空間的核心代碼
這里內核態涉及的一個鉤子函數:其原理是由內核機制,使內核空間具有優先獲得數據報文的權力。使數據包先通過ipvs內核態,然后再進入用戶態。

這時數據報文進入到調度器LVS后,數據被內核空間通過鉤子函數攔截后,通過算法將數據包的目標IP和源IP進行IP轉換;那么這個算法需要在ipvsadm工具編寫,然后轉換目標IP為所分擔壓力的集群IP。如下圖:


4、LVS工作的三種模式:
NAT模式:轉發模式
1、調度器必須是Linux系統,真實服務器可以不是Linux系統。
2、調度器必須是工作在客戶端與真實服務器之間,并且真實服務器需要把網關指向調度器
3、入站及出站報文都要經過負載調度器
4、支持端口映射(例如80映射至 8080)
ARP通訊行為:只要Linux支持

DR模式:直接路由
1、調度器與真實服務器都必須是Linux系統
2、調度器與真實服務器必須是工作在同一個廣播域內
3、數據報文入站由調度器完成,出站由真實服務器完成
4、不支持端口映射

TUN模式,隧道路由
1、調度器與真實服務器必須是Linux系統
2、調度器與真實服務器必須擁有公網IP,或者公網IP控制權
3、入站由調度器完成,出站由真實服務器完成
4、不支持端口映射
并發量:DR > TUN >NAT
靈活性:NAT >TUN >DR

-----------------------------------------------------------------------
在集群中調度器分配真實服務器所采用的算法:
1、分類:
固定算法(靜態調度算法):只根據算法本身去調度,不考慮服務器本身情況,盡管服務器狀態很差,依然根據算法去調度。
動態算法(動態調度算法): 除了考慮算法本身,還要考慮服務器狀態去調度,更加靈活。
2、靜態調度算法的分類
(1)RR(round robin)輪詢:將每次用戶的請求分配給后端的服務器,從第一臺服務器開始分配至第N臺結束,然后循環。
優點:簡單,操作方便 缺點:對于一些性能差距較大的服務器容易造成分配不均
(2)WRR加權輪詢:按照權重比實現在多臺服務器之間進行調度。
(3)SH(source hash)源地址散列:將同一個IP的用戶請求,發送給同一個服務器
(4)DH(destination hash)目標地址散列:將同一個目標地址的用戶請求發送給同一個真實服務器(提高緩存命中率)。
3、動態調度算法的分類:
(1)LC(lest-connection)最少連接:將新的連接請求,分配給連接數最少的服務器。
涉及的算法:公式: 連接數=活動連接數*256+非活動連接數
(2)WLC加權最少連接:特殊的最少連接算法,權重越大承擔的請求越多,它是基于LC基礎上的算法
計算公式:連接數=(活動連接數*256+非活動連接數)/權重
計算出來的權重越大,則連接數越少,分配的連接越多。
(3)SED最短期望延遲:特殊的WLC算法,為了約束當活動鏈接數為0時的分配問題
算法:連接數=(活動連接數+1)*256/權重 ----
(4)NQ永不排隊:特殊的 SED 算法,無需等待,如果有真實服務器的連接數等于0那就直接分配不需要運算
(5)LBLC特殊的DH算法:即能提高緩存命中率,又要考慮服務器性能
(6)LBLCR LBLC+緩存:盡可能提高負載均衡和緩存命中率的折中方案
4、有狀態服務和無狀態服務
有狀態服務:受狀態影響 例:mysql服務,一旦從一組服務中移出,再次放入服務中,數據庫變化較大,無法再繼續工作。
無狀態服務:不受狀態影響,例如Apache服務,數據存在數據庫,所以移出服務,再放入依然能繼續正常工作。
http是一個無狀態協議:當我們第一期訪問網頁后,再一次訪問時,Apache不會記錄你訪問的內容,以及你的登錄用戶名及密碼等。
中心化服務:正常的集群LBC
去中心化服務:redis集群
Cookie:有時也用其復數形式Cookies,指某些網站為了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端上的數據(通常經過加密)
Session:尤其是在網絡應用中,稱為"會話控制"。Session 對象存儲特定用戶會話所需的屬性及配置信息;當用戶請求來自應用程序的 Web 頁時,如果該用戶還沒有會話,則 Web 服務器將自動創建一個 Session 對象。當會話過期或被放棄后,服務器將終止該會話。Session 對象最常見的一個用法就是存儲用戶的首選項。例如,如果用戶指明不喜歡查看圖形,就可以將該信息存儲在 Session 對象中。
脫敏
4、持久化連接:即每次連接都連接到設定好持久化的那個對象上。
1、LVS獨有的特性,類似于SH算法
2、調度算法可以持久化共用,但持久化的優先級大于算法。
原理:在內存中維護hash表,表中記錄著C》RS客戶端到真實服務器之間的連接信息,如果hash表到期,信息消亡;;例如時間為100s,在有限時間內,再次訪問,時間會自動增加,但不會超過最大到期時間;
持久化(PCC)分類:
(1)持久化客戶端連接:每客戶端持久;將來自于同一個IP的請求統統定向到此前選定的RS;也就是只要是IP相同,就調度的RS不變,不考慮端口。
例:
Client》RS 192.168.1.1>D:22>RS1
192.168.1.1>D:80>RS1
例:ipvsadm -A -t 172.16.0.0:0 -s wlc -p 120
(2)持久化端口連接:每客戶端持久;將來自于同一IP同一端口的請求,統統定向至此前連接的RS,需要同時滿足IP相同,端口相同。
Client》RS 192.168.1.1>D:22>RS1
192.168.1.1>D:80>RS2
如果持久化不滿足時,可以加上RR算法,
ipvsadm -A -t 172.16.0.0:80 -s rr -p 120
(3)持久化防火墻標記連接:將來自于同一客戶端的指定服務的請求,始終定向至此選定的RS。不過它可以將兩個毫不相干的端口定義為一個集群服務
example:
iptables -t mangle -A PREROUTING -d 192.168.25.159 -p tcp --dport 80 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -d 192.168.25.159 -p tcp --dport 443 -j MARK --set-mark 10
這里的Mark就是設定的值,他可以根據值來分配集群
當目標地址是10.10.10.12 目標端口是80時 5(給的值是5)
當目標地址是10.10.10.12 目標端口是443時 5(給的值是5)
當目標地址是10.10.10.13 目標端口是22時 10(給的值是10)
當目標地址是10.10.10.12 目標端口是22時 10(給的值是10)
則記錄的5值的集群就是:
10.10.10.12:80
10.10.10.12:443
則記錄的10值的集群就是:
10.10.10.13:22
10.10.10.12:22
1、ARP響應
(1)ARP-響應級別
Arp-ignore
0 默認級別,只要本機配置有相應IP地址就響應
1 僅在請求的目標地址配置在請求到達的網絡接口上時,才給予響應
(2)arp-announce
0 默認級別,將本機任何網絡接口上的任何地址都向外通告
1 盡可能避免向目標網絡通告與網絡不匹配的地址信息表
2 僅向目標網絡通告與其網絡相匹配的地址信息。
VIP(虛擬IP),又叫集群IP,浮點IP:應用與在集群中傳遞數據包、訪問集群。
持久化的意義:為了https,因為HTTPS每一次連接過程很繁瑣,適合建立起一個穩定的連接,不要每次連接都重新走一遍加密連接,揮手握手等過程。所以這里需要持久化來維持或保證https的穩定連接,節省系統資源。
Ipvsadm 的一些命令:
#修改集群服務的調度算法:
Ipvsadm -E -t 192.168.13.100:80 -s wlc
#清除所有集群服務
IPvsadm -C
#修改一個真實服務器的權重值
Ipvsadm -e -t 192.168.13.100:80 -r ip:80
HAC高可用性集群
概念部分:
實現原理:心跳檢測
問題:腦分裂
解決方案:
(1)心跳線冗余
(2)串口線
(3)電源交換機
實現軟件:
1、keepalived:
它是一種健康檢查工具:依靠VRRP協議(虛擬路由冗余協議)
特點:(1)支持故障的自動切換主從節點
(2)支持節點健康狀態檢查
搶占模式:適用于M(主) B(從)節點性能不一致的情況下
非搶占模式:適用于M(主) B(從)節點性能一致的情況下
2、heartbeat:依靠腳本實現高可用

3、需要背下的一些概念:
虛擬設備:由一個“主( Master )”設備和多個“備( Backup )"設備組成的一個虛擬網關
主設備( Master ):負責轉發數據報文和周期性向備設備發送 VRRP 協議報文
備設備( Backup ):不負責轉發數據報文,在 Master 設備發生故障的時候會通過選舉形式成為新的 Master 設備,該角色會接收來自 Master 設備的 VRRP 報文并加以分析
VRID:用來表示一個 VRRP 組
虛擬IP:配置在虛擬設備上的虛擬IP地址,一個虛擬設備可以擁有一個或者多個虛擬IP地址。
IP 地址擁有者:分配給虛擬設備的虛擬 IP 的真實擁有者,IP 擁有者會直接跳過選舉成為 Master,并且是不可搶占的
虛擬 MAC 地址:由虛擬設備生成的虛擬 MAC 地址,每一個虛擬設備都會自動生成一個虛擬 MAC 地址,這個 MAC 地址是用于虛擬設備處理 ARP 報文的
優先級:用于表示物理設備的優先級,這個參數用于 Master 的選舉,取值范圍是 1-254,這個有優先級有兩個比較特殊的值,分別是 0 和 255,優先級 0 是由原來 Master 設備發送的,這個優先級是聲明此設備不再參與 VRRP 組。優先級為 255 的是 IP 擁有者的優先級,擁有這個優先級會直接成為 Master。(優先級數值越低優先級則越高)
搶占模式:當 Backup 設備接收到的 VRRP 報文通過分析得出當前 Master 設備的優先級低于 Backup 設備,則 Backup 設備會切換為 Master 設備。
VRRP 一共有三種狀態,分別是:初始狀態( Initialize )、活動狀態( Master )、備份狀態( Backup )
4、VRRP主節點需要做的事情:
(1)定期發送 VRRP 報文
(2)以虛擬 MAC 地址響應對虛擬 IP 地址的 ARP 請求
(3)轉發目的 MAC 地址為虛擬 MAC 地址的 IP 報文
(4)如果它是這個虛擬 IP 地址的擁有者,則接收目的 IP 地址為這個虛擬 IP 地址的 IP 報文。否則,丟棄這個 IP 報文
(5)如果收到比自己優先級大的報文則轉為 Backup 狀態
(6)如果收到優先級和自己相同的報文,并且發送端的 IP 地址比自己的 IP 地址大,則轉為 Backup 狀態
(7)當接收到接口的 Shutdown 事件時,轉為Initialize
5、VRRP從(備份)節點需要做的事情
(1)接收 Master 發送的 VRRP 報文,判斷 Master 的狀態是否正常
(2)對虛擬 IP 地址的 ARP 請求,不做響應
(3)丟棄目的 MAC 地址為虛擬 MAC 地址的 IP 報文
(4)丟棄目的 IP 地址為虛擬 IP 地址的IP報文
(5)Backup 狀態下如果收到比自己優先級小的報文時,丟棄報文,立即切換為 Master( 僅在搶占模式下生效 )
(6)如果收到優先級和自己相同或者比自己高的報文,則重置定時器,不進一步比較 IP 地址
(7)當接收到接口的 Shutdown 事件時,轉為 Initialize
(8)如果 MASTER_DOWN_INTERVAL 定時器超時,則切換為 Master
VRRP協議在網絡環境的工作模式:
主備份模式
負載分擔模式
SQUID-代理服務器:
1、意義:
squid服務程序是一款在Unix系統中最為流行的高性能代理服務軟件,通常會被當作網站的前置緩存服務,用于替代用戶向網站服務器請求頁面數據并進行緩存,通俗來講,Squid服務程序會接收用戶的請求,然后自動去下載制定數據(如網頁)并存儲在服務器內,當以后的用戶再來請求相同數據時,則直接將剛剛存儲在服務器本地的數據交給用戶,較少用戶的等待時間。
緩存存儲在硬盤內:
2、作用:
Squid服務程序配置起來相對簡單,效率高、支持如HTTP、FTP、SSL等多種協議的數據緩存,還支持基于ACL訪問控制列表和ARL訪問權限列表功能的內容過濾與權限管理功能,禁止用戶訪問存在威脅或不適宜的網站資源,保證內網安全的同時還整體的提高了客戶機的訪問速度,幫助節省網絡寬帶,尤其適合安裝在內存大,硬盤轉速塊的服務器上。
3、從作用分為正向代理和反向代理:
正向代理:
讓用戶可以通過Squid服務程序獲取網站頁面的數據,具體工作形式分為標準代理模式與透明代理模式
(1)標準正向代理模式:將網站的數據緩存在服務器本地,提高數據資源被再次訪問時的效率,但用戶必需在上網時指定代理服務器的 IP 地址與端口,否則將不使用 Squid 服務。

(2)透明正向代理模式:功能作用域標準正向代理模式完全相同,但用戶不需要指定代理服務器的 IP 地址. 與端口號,所以這種代理服務對于用戶來講完全透明的。

反向代理
反向代理則是為了降低網站服務器負載而設計的,反向代理服務器負責回應用戶對原始網站服務器的靜態頁面請求,即 如果反向代理服務器中正巧有用戶的靜態則直接將緩存的內容發送給用戶,減少了對原始服務器的部分數據資源請求。

CDN(內容分發網絡):服務器數量多才有意義


CDN的全稱是Content Delivery Network,即內容分發網絡。CDN是構建在現有網絡基礎之上的智能虛擬網絡,依靠部署在各地的邊緣服務器,通過中心平臺的負載均衡、內容分發、調度等功能模塊,使用戶就近獲取所需內容,降低網絡擁塞,提高用戶訪問響應速度和命中率。CDN的關鍵技術主要有內容存儲和分發技術
關于SQUID的其他補充:
軟件包:squid-3.xxxx
系統服務:squid
主程序:/usr/sbin/squid
主配置文件:/etc/squid/squid.conf
默認監聽端口:TCP 3128
默認訪問日志:/var/log/squid/access.log
配置文件中的一些權限:
http_port 3128 #端口
access_log /var/log/squid/access.log squid #訪問日志存放位置
cache_mem 64 MB #緩存熱數據最大占用服務器內存大小
cache_dir ufs /var/spool/squid 100 16 256 #緩存目錄:100:緩存最大100MB(到達100M后,之前的緩存記錄被擠掉),最多16個一級緩存目錄,256個二級緩存目錄
visible_hostname proxy.benet.com #可用主機名,隨便起名,不設置會報警
dns_testnames www.google.com www.163.com #dns測試域名,測試squid自己能訪問公網
maximum_object_size 4096 KB #最大緩存對象的大4MB
reply_body_max_size 10 MB #允許下載的單個文件最大大小
Squid--ACL權限設置:訪問控制列表
ACL( Access Control List ,訪問控制列表):
根據源地址、目標URL、文件類型等定義列表
acl 列表名稱 列表類型 列表內容 ...
針對已定義的acl列表進行限制
http_access allow或deny 列表名稱 ...
[root@localhost ~]# vi /etc/squid/squid.conf
……
acl a1 src 0.0.0.0/0.0.0.0
http_access deny a1
[root@localhost ~]# service squid reload
可設置的控制選項:
src à 源地址
dst à 目標地址
port à 目標端口
dstdomain à 目標域
time à 訪問時間
maxconn à 最大并發連接
url_regex à 目標URL地址
www.baidu.com
Urlpath_regex à 整個目標URL路徑
http://www.baidu.com/1.jpeg
本文來自博客園,作者:{白白愛幻想},書山有路勤為徑,學海無涯苦作舟,轉載請注明原文鏈接:http://www.rzrgm.cn/moutain94/articles/baiyunlong-0912.html

浙公網安備 33010602011771號