第 二 十 八 天 :LB 负 载 均 衡 搭 建 之 LVS
小Q:抱怨,是一種負能量,猶如搬起石頭砸自己的腳,與人無益,于己不利,于事無補?
前面我們介紹了HA高可用集群,今天我們來了解下LB負載均衡集群,在學習完基本的搭建后,在擴展中方了解到他的知識量是挺大的,詳細的我會在開一個目錄,重點講解我所了解到的集群的概念與操作。下面我介紹的重點在于搭建一個簡單NAT和DR模式下的LVS集群以及我對LB和LVS的理解,有錯誤希望大家多多指教;
========================================簡介===========================================
LB=load balance ?負載均衡集群?
是集群中的一種集群方式,另外的有高可用集群,高性能計算機群;他主要是均衡客戶所帶來的巨大負載,比如我們一臺服務器智能處理1k并發量,但是當網站訪問量過大時,到達1w并發,我們就要用十臺機子進行合作處理,而搭建這種合作處理的方式就是負載集群;
上圖就是集群的本質,主要流程:大量的客戶發送服務請求,當director均衡服務器接收到請求后,通過LAN/WAN傳遞給后端的real服務器,分工形式的完成大并發量的服務。
負載均衡建立在網絡結構之上,所以實現他的軟件也是被根據網絡模型層次開發的:
常用的開源軟件:LVS(4層tcp/ip) nginx(7層應用層) ? ?keepalived?
商業的負載設備: F5、Netscale ? ? ? ? (這些我不太了解,還沒接觸過)
后面的我們會有nginx 和 keepalived的搭建步驟,下面主要是LVS的NAT和DR模式,采用wrr算法;
關于LVS:三種模式
VS/NAT模式(Network address translation)
VS/TUN模式(tunneling)
DR模式(Direct routing)
七種調度算法:
固定調度算法:rr,wrr,dh,sh
動態調度算法:wlc,lc,lblc,lblcr
==========================NAT模式搭建LVS負載均衡=======================
實際上NAT就是運用的一個防火墻的規則;所有請求進出都通過director server,所以造成了大量的壓力,所以它配置real server的上限就是20以內。
準備階段:
至少三臺機子(我用的虛擬機)
客戶端機 ? ? ? 192.168.21.190 ? ? ? ? ? ?必須能訪問外網,不能和下網段一樣
均衡服務器 ? ?192.168.11.190 ? ? ? ? ? ? director =dir
真實服務器 ? ?192.168.11.30 ? ? ? ? ? ? ? real server=rs1
? ? ? ? ? ? ? ? ? ? 192.168.11.20 ? ? ? ? ? ? ? real server=rs2
三臺機子都要安裝nginx或者Apache,因為三臺機子需要80端口開啟進行連接,yum一下就行;
更改一下主機名分別為dir ?rs1 ?rs2:舉例hostname ? dir ?>>> ?bash,方便管理;
dir主機:
安裝LVS核心軟件:
yum ? install ?-y ?ipvsadm
編寫shell腳本:
vim ? /usr/local/sbin/Lvs_nat.sh ? ?添加:
#!?/bin/bash #?director?????????? #服務器上開啟路由轉發功能:? echo?1?>?/proc/sys/net/ipv4/ip_forward? #?關閉icmp的重定向 echo?0?>?/proc/sys/net/ipv4/conf/all/send_redirects echo?0?>?/proc/sys/net/ipv4/conf/default/send_redirects echo?0?>?/proc/sys/net/ipv4/conf/eth0/send_redirects echo?0?>?/proc/sys/net/ipv4/conf/eth1/send_redirects #?director?設置nat防火墻 iptables?-t?nat?-F iptables?-t?nat?-X iptables?-t?nat?-A?POSTROUTING?-s?192.168.11.0/24??-j?MASQUERADE???????????#從哪個網段過來的包進行MASQUERADE #?director設置ipvsadm IPVSADM='/sbin/ipvsadm' $IPVSADM?-C $IPVSADM?-A?-t?192.168.21.190:80??-s?wrr??-p?300?#-s是算法?-p強制轉換訪問某臺真實機,舍去??? $IPVSADM?-a?-t?192.168.21.190:80??-r?192.168.11.20:80?-m?-w?1 $IPVSADM?-a?-t?192.168.21.190:80??-r?192.168.11.30:80?-m?-w?3-w 權重,交替訪問的次數用于wrr算法 ? ? ? ? ? ? ? -m 是上邊MASQUERADE,用NAT模式必須加上
-A增加一條director ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -a增加一條rs
當使用rr算法的時候,就是一機一次的訪問,就沒有下面的-w權重選項了
直接運行這個腳本就可以完成lvs/nat的配置了:?
/bin/bash(bash) ? ? ? /usr/local/sbin/lvs_nat.sh?
內網連網的話,要指定一個網關,和購買的外網IP通信,實現上網功能;而我們現在要實現rs與dir通信,所以要改網關為dir的IP;
兩個rs真機:
vi ? ?/etc/sysconfig/network-scripts/ifcfg-eth0
更改
GETWAY=192.168.11.190 ? ? ? ? ? ? ? ? 指向dir的IP
保存重啟:service ?network ?restart ? ?或者 ?ifdown ?eth0 ;ifup ?eth0
為了測試方便,我們更改一下nginx火Apache的網站默認頁面,找到所在路徑,一般可在配置文件下找到:
或通過配置文件查找一些相關的配置文件,再到那些配置中查看;
rs1上: echo "1111111" >/usr/share/nginx/html/index.html
rs2上: echo "2222222" >/usr/share/nginx/html/index.html
測試:瀏覽器 訪問192.168.21.190 ? ? ? ? ?刷新一次更新一次內容, ?11 與22交替出現次數分別是1>3>1
? ? ? ? ?有時瀏覽器會因為緩存等原因,出現頁面一直是當前頁面,其實就算不是緩存問題,對于大規模的
? ? ? ? ? 并發處理也沒事,因為即使一個用戶一直訪問rs1,那另一個用戶會主動訪問rs2 ?···········
? ? ? ? ? ? 服務器curl可以實現高效準確的訪問,一直 curl ? 192.168.21.190 ? ? ? ? ? 會發現明確交替現象 ? ? ? ??
==============================DR模式LVS負載均衡==============================
DR模式要使用三個外網IP,他是比較浪費IP,其實我們完全可以讓realserver使用局域網IP;但是他
支持負載集群多,因為她可以直接將數據傳給客戶端,緩解了負載均衡器;
? ? ? ? ??
因為我們上節配置了NAT模式的,要先清空配置和規則
查看: ipvsadm ?-ln
清空: ipvsadm ?-C
? ? ? ? ? ?iptables ? -t ?nat ? -F?
要求:有三個外網IP
dir ? ? ?192.168.11.100
rs1 ? ? ?192.168.11.20
rs2 ? ? ?192.168.11.30?
dir均衡機
DR模式下不需要客戶端的外網IP了,所以 ifdown ?eth1
編寫腳本: vim ? ?/usr/local/sbin/Lvs_dr.sh
#!?/bin/bash echo?1?>?/proc/sys/net/ipv4/ip_forward ipv=/sbin/ipvsadm vip=192.168.11.110??????????????????????設置虛擬IP rs1=192.168.11.20 rs2=192.168.11.30 ifconfig?eth0:0?$vip?broadcast?$vip?netmask?255.255.255.255?up????????注意網關是這個 route?add?-host?$vip?dev?eth0:0??????????????????????????添加靜態路由 $ipv?-C???????????????????????????????????????????????????????????????清空以前的規則 $ipv?-A?-t?$vip:80?-s?wrr???????????????????????????????????-s?是算法 $ipv?-a?-t?$vip:80?-r?$rs1:80?-g?-w?1 $ipv?-a?-t?$vip:80?-r?$rs2:80?-g?-w?1??????????????????-g代表DR模式執行?bash???/usr/local/sbin/Lvs_dr.sh兩臺rs真機
因為都要實現可以上網的功能,發送數據包給客戶端,所一網關要改回以前可以上網的網關,就是你的路由IP ? ? ??
vim /usr/local/sbin/lvs_dr_rs.sh
#!?/bin/bash vip=192.168.31.110???????????????????????????????????????對應虛擬IP,客戶連虛擬IP,和高可用方式類似 ifconfig?lo:0?$vip?broadcast?$vip?netmask?255.255.255.255?up?????????????????VIP網卡信息對應 route?add?-host?$vip?lo:0???????????????????????????????????????????????????????????????????????????????增加靜態路由 echo?"1"?>/proc/sys/net/ipv4/conf/lo/arp_ignore echo?"2"?>/proc/sys/net/ipv4/conf/lo/arp_announce echo?"1"?>/proc/sys/net/ipv4/conf/all/arp_ignore echo?"2"?>/proc/sys/net/ipv4/conf/all/arp_announce啟動:bash ? ? ?/usr/local/sbin/lvs_dr_rs.sh
測試:瀏覽器和curl訪問同上邊形式一樣,只不過是訪問VIP;
擴展:負載均衡http://blog.sina.com.cn/s/blog_90065bd00100wav5.html?
? ? ? ? ?特別好的文章?http://atong.blog.51cto.com/2393905/1348602?
轉載于:https://blog.51cto.com/tengxiansheng/1702222
總結
以上是生活随笔為你收集整理的第 二 十 八 天 :LB 负 载 均 衡 搭 建 之 LVS的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最小化托盘示例工程
- 下一篇: iOS 之 UITextField