1Linux集羣及系統擴展的方式概述mysql
集羣是有多臺服務器組織在一塊兒,一塊兒工做,由於單臺服務器的併發響應能力是有限的,響應處理能力也是有限的全部有了集羣的出現linux
在系統擴展有2種方法:nginx
1 向上擴展:是指換一臺性能更高的服務器來取代現有服務器,但這樣子由於單臺的服務器運算性能是有限的,並且這樣造價至關昂貴。算法
2向外擴展:是指多增長一臺服務器來分擔現服務器的工做。sql
2Linux集羣類型及調度方法詳解數據庫
集羣的類型有:後端
1 lvs:負載均衡:將客戶端的請求經過必定的調度算法分發給不一樣的後端服務器來處理服務器
注意在lvs若是一個客戶發送請求,被分發給後端某一個服務器上,當這個客戶端再次發送請求時,可能會被髮送的另外一臺後端的服務器上,這樣一次的會話內容信息就會丟失,爲了解決這一問題有一下幾種方法:網絡
1 作靜態綁定,將同一臺客戶端的請求分發給同一臺後端服務器上,但這樣一來就破壞的負載均衡的意義session
2 在後端服務器的後面作共享存儲,如結構化數據能夠存放在mysql等關係型數據庫中,非結構化數據如圖片存放在nfs當中,
3 在後端服務器之間作信息的共享
2 HA:高可用集羣:它具備冗餘性注重服務器的在線使用時間指高可用性 MTBF (平均無端障時間)/MTBF+MTTR(故障修復時間)
3 HP:高性能集羣是把計算量分隔出去
負載均衡的調度算法:
1 經過硬件設備實現調度:如 big-ip A10 等硬件設備
2 經過軟件層來實現調度:
經常使用的軟件調度:
lvs:它是工做在傳輸層 內核空間的 因此他響應併發是不受到套接字的限制,可是他沒有客戶端工具,調度能力有限不能完成更高級的調度設置,因此一般用lvs作一級調度,用nginx來最二級調度。
咱們知道iptables是指定規則的用戶空間工具,在iptables有5個鏈;
通常數據的流向是2種:1 prerouting------input----到用戶空間------output -------postrouting
2 prerouting ------forward ------------------------------------postrouting
但lvs 工做在input鏈上,它的工做數據流:prerouting -----------input--------------postrouting
ipvs框架是來判斷是不是集羣的,如果直接交給postrouting ,管理工具是ipvsadm
Nginx和haproxy是應用層的程序不過他們能夠模擬工做在傳輸層
http fastcgi ats perlbal 工做在應用層
3 lvs常見的四種集羣lvs-nat、lvs-dr、lvs-tun、lvs-fullnat優勢及使用場景
lvs 常見的有四種類型:
1 lvs—nat:
1修改請求報文的目標ip將客戶端的vip改成後端服務器的rip ,進行分發它請求響應都須要通過director, 因爲請求和響應都經director,因此調度器容易成爲集羣瓶頸
2 rip與dip必須同一網段 rip的網關指向dip
3支持端口映射,能夠修改請求報文的目標端口
4 vs必須是linux系統, rs能夠是任意
2 lvs-dr :直接路由:經過封裝的MAC地址進行響應,
1 Director與rs 都接在同一個交換機上 ,客戶端:經過廣播方式獲得vs的MAC地址,封裝原MAC 和目標MAC 傳給director,Director:在將原MAC地址爲dip所在接 口的MAC 目標mac給爲rs的rip網口的 MAC地址 派發給rs 而客戶端請求時的原ip和目標ip不變 、,Rs 接收到後應爲rs上也配有vip因此將直接響應客戶端,再也不通過 director
但有個問題:
1此處:在客戶端廣播是,rs的vip地址不作響應
2在接入這個網絡後vip不作經過,防止ip衝突
實現的辦法有:
1 arptables / nftables 來寫規則阻斷
2 在linux內核中有兩個參數來設置 arp_announce =2 arp_ignore =1
3 作與director作靜態綁定,
1 rs的rip能夠作私網地址也能夠作公網地址,與dip在同一網絡 rip網關不指向dip
2 rs與director在同一個物理網絡
3請求報文通過director 響應不通過director
4 並不支持端口映射
3 lvs-tun:隧道: 在原ip報文外面在封裝一個ip首部 不修改請求報文首部而是在原ip報文外再封裝一個ip首部,將報文發送爲rs
1 dip vip rip 都在公網地址
2rs的網關不指向dip
3請求報文通過director 響應報文不通過director
4不支持端口映射
5 rs的os系統必須支持隧道功能
4lvs-fullnat:非標準的 能夠是跨機房在director上有個nat追加表,能夠根據nat表的記錄進行將ip的修改
請求響應都通過director
1 vip公網地址 ,rip 和dip 是私網地址且同常不在同一網絡中
2 rs收到請求的源地址是dip 只需響應給director 再由director響應給客戶端
3 請求和響應都通過director
4 支持端口映射
調度算法:根據調度時是否考慮各rs當前負載狀態能夠分爲靜態和動態
靜態: 僅根據算法自身進行調度
1 RR: 輪詢
2WRR: 加權輪詢
3SH:實現session sticy 源ip地址hash表未來自同一ip地址請求始終發送給以前的同一個rs 實現會話綁定。
4 DH 目標地址哈希:將發往同一目標地址的請求始終轉發到第一次的rs上
動態方法: 主要根據每一個RS當前的負載狀態和調度算法進行調度
1 LC: 最小鏈接 當overhead 值最小的 Overhead = activconns * 256 + inctiveconns
2 WLC: 加權最小鏈接 Overhead = (activconns * 256 + inctiveconns)/weight
3 SED:小的值挑出 權重大的挑中 Overhead=(activeconns + 1) * 256 /weight
4 NQ:從不排隊
5 LBLC:動態的DH算法
6LBLR:帶複製功能的LBLC