lvs是linux virtual server的簡寫,意即linux虛擬伺服器,是乙個虛擬的伺服器集群系統。本專案在2023年5月由章文嵩博士成立,是中國國內最早出現的自由軟體專案之一。目前有三種ip負載均衡技術(vs/nat、vs/tun和vs/dr)
本文主要介紹dr模式運用
dr模式是什麼?撇開lvs排程演算法部分,dr模式的原理就是,將報文直接路由給目標伺服器(direct routing),其實這裡沒有routing啥事情,叫做direct select更準確一些,為什麼這麼說呢?因為他直接不修改資料報,他直接把資料報打包成乙太網的資料幀,只是這個資料幀裡的目標mac位址是最終的真實伺服器的mac位址,所以dr模式要求在同乙個物理網段,不能跨路由。
當目標伺服器收到這個資料幀的時候,把它解包,當伺服器發現資料報的目標位址(也就是vip)是在本地的網路裝置上(一般都是在真實伺服器的lo:0上繫結乙個vip位址),伺服器處理這個資料報,然後根據本地路由表將響應報文直接返回給客戶
2.1 keepalived
這裡是用keepalived來進行lvs的建立和伺服器和vip的健康檢查,其實keepalived就像乙個shell,他自動的給你做lvs+vrrp。
keepalived本身來做真實伺服器的健康檢查,vrrp來做vip的冗餘。
vip:192.168.2.240
lvs:192.168.2.210 192.168.2.211
realserver: 192.168.2.212 192.168.2.213
所需軟體:keepalived
ipvsadm(主要是管理檢視作用)
# ln -s /usr/src/kernels/2.6.18-92.el5-i686 /usr/src/linux
# tar -zxvf ipvsadm-1.24.tar.gz
先配置 realserver 指令碼:
/opt/lvs_server.sh 192.168.2.212
#!/bin/bash# description: config realserver
vip=192.168.2.240
/etc/rc.d/init.d/functions
case"$1
"instart)
/sbin/ifconfig lo:0 $vip netmask 255.255.255.255
broadcast $vip
/sbin/route add -host $vip dev 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
sysctl -p > /dev/null
2>&1
echo
"realserver start ok";;
stop)
/sbin/ifconfig lo:0
down
/sbin/route del $vip > /dev/null
2>&1
echo"0
" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo"0
" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo"0
" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo"0
" > /proc/sys/net/ipv4/conf/all/arp_announce
echo
"realserver stoped";;
*)
echo
"usage: $0
"exit
1esac
exit
0
# scp /opt/lvs_server.sh [email protected]:/opt/
加入到開
vim /etc/rc.d/rc.local/bin/bash /opt/lvs_real start
配置keepalived :
vim /etc/keepalived/keepalived.conf 192.168.2.210
! configuration file forkeepalived
global_defs
notification_email_from jackchengwc@
163.com
smtp_server smtp.
163.com
smtp_connect_timeout
30router_id lvs_devel
}vrrp_instance vi_1
virtual_ipaddress
}virtual_server
192.168.2.24080}
real_server
192.168.2.213
80 }
}
# scp /etc/keepalived/keepalived.conf [email protected]:/etc/keepalived/
lvs_sync_daemon_inteface eth0 #負載均衡器之間的監控介面,類似於ha heartbeat的心跳線。但它的機制優於heartbeat,因為它沒有「裂腦」這個問題,它是以優先順序這個機制來規避這個麻煩的。在dr模式 中,lvs_sync_daemon_inteface 與服務介面inte***ce 使用同乙個網路介面
virtual_router_id 51 #虛擬路由標識,這個標識是乙個數字,並且同乙個vrrp例項使用唯一的標識。即同乙個vrrp_stance,master和backup的virtual_router_id是一致的,同時在整個vrrp內是唯一的
mcast_src_ip 192.168.2.240
#mcast_src_ip #多播的源ip,設定為這台lvs的ip 好像不用也行
priority 100 #路由的優先級別,主lvs要設定的比從lvs要高
advert_int 1
authentication {
auth_type pass #同一vrrp例項master與backup 使用相同的密碼才能正常通訊
auth_pass 1111
virtual_ipaddress {
192.168.11.240 #虛擬ip,也就是vip位址。可以設定很多組vip
delay_loop 3 #健康檢查的間隔
lb_algo wlc #lvs的排程演算法
lb_kind dr #lvs的排程模式
persistence_timeout 50 #連線保持的超時時間,保證乙個使用者的連線總是導向到同乙個伺服器,當使用者第一次訪問的時候,他的訪問請求被負載均衡器轉給某個真實伺服器,這樣他看到乙個登陸頁面,第一次訪問完畢;接著他在登陸框填寫使用者名稱和密碼,然後提交;這時候,問題就可能出現了—登陸不能成功。因為沒有會話保持,負載均衡器可能會把第2次的請求**到其他的伺服器
#用ipvsadm -lcn 觀察是否生效
protocol tcp
ha_suspend #禁止,vip失效的時候對真實伺服器進行健康檢查(也就是說備用伺服器不會去做真實伺服器的健康檢查)
# ipvsadm -l -n 這個命令檢視
LVS Keepalived負載均衡配置
lvs一般是和keepalived一起組合使用的,雖然也可以單獨使用lvs,但配置比較繁瑣,且可用性也沒有前者高。lvs和keepalived組合使用後,配置lvs的vip和負載均衡就都在keepalived中進行配置,只是在keepalived中呼叫lvs 配置 keepalived.conf g...
安裝lVS keepalived心得
接著昨天蛋疼地無網裝keepalived,今天又在裝lvs。首先按照網上的教程做 這裡就說自己遇到的問題,第乙個是找不到 usr src kernels下的核心檔案。要先rpm kernel devel才會有。其次,用ln s 軟鏈結一直鏈不上去,可以在安裝keepalived的 configure...
LVS keepalived負載均衡實戰
lvs keepalived負載均衡實戰 一 為什麼要使 用負載均衡技術?1 系統高可用性 2 系統可擴充套件性 3 負載均衡能力 lvs keepalived能很好的實現以上的要求,lvs提 供負載均衡,keepalived提供健康檢查,故障轉移,提高系統的可用性!採用這樣的架構以後 很容易對現有...