LVS調(diào)度器

四種LVS工作模型,十種調(diào)度算法

四種工作模型:

1送巡、lvs-nat:修改請求報文的目標(biāo)IP,多目標(biāo)IP的DNAT

請求報文:CIP-->路由器-->LVS-->RIP

回應(yīng)報文:RIP-->LVS-->路由器-->CIP

2旷祸、lvs-dr(直接路由):操縱封裝新的MAC地址

發(fā)送報文

①CIP-->VIP:SRC=CIP/CIPMAC,DST=VIP/VIPMAC

②DIP-->RIP:SRC=CIP/DIPMAC住拭,DST=VIP/LVSMAC

③LVS-->RS:SRC=CIP/LVSMAC撞反,DST=VIP/RS1MAC

回應(yīng)報文

④RS-->DIP:SRC=VIP/RS1MAC链瓦,DST=CIP/DIPMAC

⑤VIP-->CIP:SRC=VIP/VIPMAC蒲凶,DST=CIP/CIPMAC

3、lvs-tun(隧道):在原請求IP報文之外新加一個IP首部

請求報文通過LVS服務(wù)器杯道,但響應(yīng)卻直接回應(yīng)給客戶端匪煌,不通過LVS责蝠,可以跨路由

4、lvs-fullnat:修改請求報文的源和目標(biāo)IP

①CIP-->VIP

②DIP-->RIP

③RIP-->DIP

④VIP-->CIP

默認(rèn)kernel不支持

十種調(diào)度算法:

靜態(tài)方法:僅根據(jù)算法本身進(jìn)行調(diào)度
1萎庭、 RR:roundrobin霜医,輪詢
2、 WRR:Weighted RR驳规,加權(quán)輪詢
3肴敛、 SH:Source Hashing,實(shí)現(xiàn)session sticky吗购,源IP地址hash医男;將來自于同一個IP地址的請求始終發(fā)往第一次挑中的RS,從而實(shí)現(xiàn)會話綁定
4捻勉、 DH:Destination Hashing镀梭;目標(biāo)地址哈希,第一次輪詢調(diào)度至RS踱启,后續(xù)將發(fā)往同一個目標(biāo)地址的請求始終轉(zhuǎn)發(fā)至第一次挑中的RS报账,典型使用場景是正向代理緩存場景中的負(fù)載均衡,如:寬帶運(yùn)營商

動態(tài)方法:主要根據(jù)每RS當(dāng)前的負(fù)載狀態(tài)及調(diào)度算法進(jìn)行調(diào)度Overhead=value較小的RS將被調(diào)度
1埠偿、 LC:least connections 適用于長連接應(yīng)用
Overhead=activeconns256+inactiveconns
2透罢、 WLC:Weighted LC,默認(rèn)調(diào)度方法
Overhead=(activeconns
256+inactiveconns)/weight
3冠蒋、 SED:Shortest Expection Delay,初始連接高權(quán)重優(yōu)先
Overhead=(activeconns+1)*256/weight
4羽圃、 NQ:Never Queue,第一輪均勻分配抖剿,后續(xù)SED
5朽寞、 LBLC:Locality-Based LC,動態(tài)的DH算法斩郎,使用場景:根據(jù)負(fù)載狀態(tài)實(shí)現(xiàn)正向代理
6愁憔、 LBLCR:LBLC with Replication,帶復(fù)制功能的LBLC孽拷,解決LBLC負(fù)載不均衡問題,從負(fù)載重的復(fù)制到負(fù)載輕的RS

基于NAT模型的LVS

#環(huán)境:5臺機(jī)器    client:172.16.0.6   LVS:172.16.0.7半抱、192.168.37.7 RS1:192.168.37.17   RS2:192.168.37.27   mysql:192.168.37.17
#網(wǎng)卡:A與B橋接脓恕,B與C、D窿侈、E是NAT

#mysql
nmcli connection modify eth0 ipv4.addresses 192.168.37.37/24 ipv4.gateway 192.168.37.7 ipv4.method manual
nmcli connection up eth0
yum install mariadb-server
systemctl start mariadb
mysql -e "create database wordpress;grant all on wordpress.* to wordpress@'192.168.37.%' identified by 'centos'"
mysql -e "flush privileges;"

#RS1
nmcli connection modify eth0 ipv4.addresses 192.168.37.17/24 ipv4.gateway 192.168.37.7 ipv4.method manual
nmcli connection up eth0
yum install httpd mod_ssl php-fpm php-mysql -y
echo RS1 > /var/www/html/index.html
vim /etc/httpd/conf.d/fcgi.conf
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1

vim /etc/httpd/conf/httpd.conf
DirectoryIndex index.php index.html

tar -xf wordpress-5.1.1-zh_CN.tar.gz -C /var/www/html/
cd /var/www/html/wordpress/
cp wp-config-sample.php wp-config.php 
vim wp-config.php 
/** WordPress數(shù)據(jù)庫的名稱 */
define( 'DB_NAME', 'wordpress' );

/** MySQL數(shù)據(jù)庫用戶名 */
define( 'DB_USER', 'wordpress' );

/** MySQL數(shù)據(jù)庫密碼 */
define( 'DB_PASSWORD', 'centos' );

/** MySQL主機(jī) */
define( 'DB_HOST', '192.168.37.37' ); 
[root@rs1 ~]# systemctl start httpd php-fpm
#此時使用瀏覽器訪問http://192.168.37.17/wordpress,進(jìn)行安裝
[root@rs1 wordpress]# cd ..
[root@rs1 html]# scp -r wordpress/ 192.168.37.27:/var/www/html
[root@rs1 html]# scp /etc/httpd/conf/httpd.conf 192.168.37.27:/etc/httpd/conf/  
[root@rs1 html]# scp /etc/httpd/conf.d/fcgi.conf 192.168.37.27:/etc/httpd/conf.d/

#RS2
nmcli connection modify eth0 ipv4.addresses 192.168.37.27/24 ipv4.gateway 192.168.37.7 ipv4.method manual
nmcli connection up eth0
yum install httpd mod_ssl php-fpm php-mysql -y
echo RS2 > /var/www/html/index.html
systemctl start httpd php-fpm

#LVS,初始化關(guān)閉防火墻炼幔、selinux、時間同步
vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.37.7
PREFIX=24
NAME=eth0
DEVICE=eth0
ONBOOT=yes

vim /etc/sysconfig/network-scripts/ifcfg-eth1 
TYPE=Ethernet
BOOTPROTO=none
IPADDR=172.16.0.7
PREFIX=24
NAME=eth1
DEVICE=eth1
ONBOOT=yes

vim /etc/sysctl.conf 
net.ipv4.ip_forward=1
sysctl -p

yum install ipvsadm
ipvsadm -A -t 172.16.0.7:80 -s rr                   #-s 調(diào)度輪詢史简,-p 持續(xù)連接(默認(rèn)360s)
ipvsadm -a -t 172.16.0.7:80 -r 192.168.37.17 -m  #-m nat模型
ipvsadm -a -t 172.16.0.7:80 -r 192.168.37.27 -m
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.0.7:80 rr
  -> 192.168.37.17:80             Masq    1      0          0         
  -> 192.168.37.27:80             Masq    1      0          0 
  
ipvsadm -A -t 172.16.0.7:443 -s rr
ipvsadm -a -t 172.16.0.7:443 -r 192.168.37.27 -m
ipvsadm -a -t 172.16.0.7:443 -r 192.168.37.17 -m
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.0.7:80 rr
  -> 192.168.37.17:80             Masq    1      0          0         
  -> 192.168.37.27:80             Masq    1      0          0         
TCP  172.16.0.7:443 rr
  -> 192.168.37.17:443            Masq    1      0          0         
  -> 192.168.37.27:443            Masq    1      0          0 
  
#client
vim /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
NAME="eth2"
IPADDR=172.16.0.6
PREFIX=24

[root@centos6 ~]$ while true;do curl 172.16.0.7;sleep 0.5;done
[root@centos6 ~]$ while true;do curl -k https://172.16.0.7;sleep 0.5;done
[root@centos6 ~]$ http://172.16.0.7/wordpress

使用firewall mark實(shí)現(xiàn)統(tǒng)一集群調(diào)度http乃秀,https

#LVS
ipvsadm -C      #清除所有
iptables -t mangle -A PREROUTING -d 172.16.0.7 -p tcp -m multiport --dport 80,443 -j MARK --set-mark 10
ipvsadm -A -f 10 -s rr
ipvsadm -a -f 10 -r 192.168.37.17 -m
ipvsadm -a -f 10 -r 192.168.37.27 -m
ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  10 rr
  -> 192.168.37.17:0              Masq    1      0          0         
  -> 192.168.37.27:0              Masq    1      0          0

#client
[root@centos6 ~]$ while true;do curl 172.16.0.7;sleep 0.5;done
[root@centos6 ~]$ while true;do curl -k https://172.16.0.7;sleep 0.5;done 
[root@centos6 ~]$ http://172.16.0.7/wordpress

基于DR模型的LVS

#跨網(wǎng)段LVS-DR
#環(huán)境:5臺機(jī)器,Client:172.16.0.6  Router:172.16.0.7、192.168.37.7跺讯、10.0.0.200   RS1:192.168.37.17枢贿、10.0.0.100    RS2:192.168.37.27、10.0.0.100    LVS:192.168.37.37刀脏、10.0.0.100
#router 2塊網(wǎng)卡局荚,橋接與nat模式,基本配置跟nat模型一樣

#原LVS當(dāng)路由,router
yum remove ipvsadm
iptables -t mangle -F
nmcli connection modify eth0 +ipv4.addresses 10.0.0.200/8
nmcli connection up eth0

#RS1、RS2
ip address add 10.0.0.100/32 dev lo label lo:0
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

#原mysql當(dāng)LVS
ip address add 10.0.0.100/24 dev eth0 label eth0:0
yum install ipvsadm
iptables -t mangle -A PREROUTING -d 10.0.0.100 -p tcp -m multiport --dport 80,443 -j MARK --set-mark 10
ipvsadm -A -f 10 -s wrr
ipvsadm -a -f 10 -r 192.168.37.17 -g -w 1
ipvsadm -a -f 10 -r 192.168.37.27 -g -w 1
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  10 wrr
  -> 192.168.37.17:0              Route   1      0          0         
  -> 192.168.37.27:0              Route   1      0          0 
  
#client
[root@centos6 ~]$ vim /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
NAME="eth2"
IPADDR=172.16.0.6
PREFIX=24
GATEWAY=172.16.0.7
[root@centos6 ~]$ service network restart
[root@centos6 ~]$ while true; do curl http://10.0.0.100/index.html;sleep 0.5;done

監(jiān)控LVS

#ldirectord基本被keepalived替代了
#環(huán)境跟上面一樣

#LVS
ipvsadm -C
yum install http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-7/x86_64/ldirectord-3.9.6-0rc1.1.2.x86_64.rpm
cp /usr/share/doc/ldirectord-3.9.6/ldirectord.cf /etc/ha.d/
vim /etc/ha.d/ldirectord.cf
    checktimeout=3
    checkinterval=1
    autoreload=yes
    logfile="/var/log/ldirectord.log"
    quiescent=no                        #down時yes權(quán)重為0愈污,no為刪除
    virtual=10.0.0.100:80               #指定VS的FWM 或 IP:PORT
    real=192.168.37.17:80 gate          #DR模型
    real=192.168.37.27:80 gate
    fallback=127.0.0.1:80 gate          #sorry server
    service=http
    scheduler=wrr
    #persistent=600                     #持續(xù)連接
    protocol=tcp
    checktype=negotiate
    checkport=80
    request="index.html"
    #receive="Test Page"  
    #virtualhost=www.x.y.z
yum install httpd
echo "Error Server" > /var/www/html/index.html
systemctl start httpd ldirectord

#RS1耀态、RS2
ip address add 10.0.0.100/32 dev lo label lo:0
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

#client
while true; do curl http://10.0.0.100/index.html;sleep 0.5;done

#RS1俺猿、RS2停掉服務(wù),客戶端查看情況
systemctl stop httpd
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載荧琼,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者囱淋。
  • 序言:七十年代末刽酱,一起剝皮案震驚了整個濱河市豹芯,隨后出現(xiàn)的幾起案子醋界,更是在濱河造成了極大的恐慌服鹅,老刑警劉巖揽祥,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揍魂,死亡現(xiàn)場離奇詭異桨醋,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)现斋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門喜最,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人庄蹋,你說我怎么就攤上這事瞬内。” “怎么了限书?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵虫蝶,是天一觀的道長。 經(jīng)常有香客問我倦西,道長能真,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任扰柠,我火速辦了婚禮粉铐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘卤档。我一直安慰自己蝙泼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布劝枣。 她就那樣靜靜地躺著汤踏,像睡著了一般织鲸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上溪胶,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天搂擦,我揣著相機(jī)與錄音,去河邊找鬼载荔。 笑死盾饮,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的懒熙。 我是一名探鬼主播丘损,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼工扎!你這毒婦竟也來了徘钥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤肢娘,失蹤者是張志新(化名)和其女友劉穎呈础,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體橱健,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡而钞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拘荡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片臼节。...
    茶點(diǎn)故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖珊皿,靈堂內(nèi)的尸體忽然破棺而出网缝,到底是詐尸還是另有隱情,我是刑警寧澤蟋定,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布粉臊,位于F島的核電站,受9級特大地震影響驶兜,放射性物質(zhì)發(fā)生泄漏扼仲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一抄淑、第九天 我趴在偏房一處隱蔽的房頂上張望犀盟。 院中可真熱鬧,春花似錦蝇狼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贱枣。三九已至,卻和暖如春颤专,著一層夾襖步出監(jiān)牢的瞬間纽哥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工栖秕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留春塌,地道東北人。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓簇捍,卻偏偏與公主長得像只壳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子暑塑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容