lvs+keepalived
負載均衡(dr)
為什麼要使 用負載均衡技術?
1、系統高可用性
2、 系統可擴充套件性
3、 負載均衡能力
1.1 lvs是什麼
lvs是linux virtual server的簡稱,也就是linux虛擬伺服器, 是乙個由章文嵩博士發起的自由軟體專案,它的官方站點是www.linuxvirtualserver.org。現在lvs已經是 linux標準核心的一部分,在linux2.4核心以前,使用lvs時必須要重新編譯核心以支援lvs功能模組,但是從linux2.4核心以後,已經完全內建了lvs的各個功能模組,無需給核心打任何補丁,可以直接使用lvs提供的各種功能。
1.2 lvs有什麼作用
lvs主要用於伺服器集群的負載均衡。它工作在網路層,可以實現高效能,高可用的伺服器集群技術。它廉價,可把許多低效能的伺服器組合在一起形成乙個超級伺服器。它易用,配置非常簡單,且有多種負載均衡的方法。它穩定可靠,即使在集群的伺服器中某台伺服器無法正常工作,也不影響整體效果。另外可擴充套件性也非常好。
lvs是乙個開源的軟體,可以實現linux平台下的簡單負載均衡。lvs是linux virtual server的縮寫,意思是linux虛擬伺服器。目前有三種ip負 載均衡技術(vs/nat、vs/tun和vs/dr);八種排程演算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。
2、實驗環境
3臺節點
3、安裝系統軟體
lvs + keepalived節點安裝
# yum install ipvsadm keepalived -yreal server + nginx服務的2個節點安裝
# yum install epel-release -y# yum install nginx -y
4、檢視是否都開啟允許路由**(lvs,real server)
# cat /etc/sysctl.conf#設定允許路由**
net.ipv4.ip_forward = 1
#重新整理設定# sysctl -p
5、設定配置指令碼
real server節點2臺配置指令碼:
vim /usr/local/sbin/realserver.sh#!/bin/bash
sns_vip=192.168.32.100
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $sns_vip netmask 255.255.255.255 broadcast $sns_vip
/sbin/route add -host $sns_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)
ifconfig lo:0 down
route del $sns_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 1
esac
exit 0[object object]
啟動real server
指令碼
chmod g+x /usr/local/sbin/realserver.sh/usr/local/sbin/realserver.sh start
啟動後出現乙個新增虛擬ip(vip)
6、keepalived節點配置:
設定虛擬ip
vim /etc/init.d/lvsdr.sh#!/bin/sh
# 定義虛擬ip
vip=192.168.32.100
# 定義realserver,並已逗號分開
rips=192.168.32.33,192.168.32.44 #,192.168.3.5,192.168.3.6
# 定義提供服務的埠
service=8080
# 呼叫init.d指令碼的標準庫
. /etc/rc.d/init.d/functions
case $1 in
start)
echo "start lvs of dr mode"
# lvs dr模式不需要路由**,但是keepalived需要
#echo "0" > /proc/sys/net/ipv4/ip_forward
# 開啟icmp包重定向
echo "1" > /proc/sys/net/ipv4/conf/all/send_redirects
echo "1" > /proc/sys/net/ipv4/conf/default/send_redirects
echo "1" > /proc/sys/net/ipv4/conf/eth0/send_redirects
# 繫結虛擬ip
ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev eth0:0
# 清除lvs規則
ipvsadm -c
# 新增一條虛擬伺服器記錄
# -p指定一定的時間內將相同的客戶端分配到同一台後端伺服器
# 用於解決session的問題,測試時或有別的解決方案時建議去掉
ipvsadm -a -t $vip:$service -s rr -p
# 新增真實伺服器記錄
for rip in `echo $rips sed -e 's/,/\n/g'`
doipvsadm -a -t $vip:$service -r $rip:$service -g -w 1
done
# 設定tcp tcpfin udp的超時連線值
ipvsadm --set 30 120 300
ipvsadm
;;stop)
echo "stop lvs dr"
ifconfig eth0:0 down
ipvsadm -c
;;*)
echo "usage:$0 "
exit 1
esac
設定keepalived配置檔案,使包**後台
vim /etc/keepalived/keepalived.conf! configuration file for keepalivedglobal_defs
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id lvs_devel
}vrrp_instance vi_1
virtual_ipaddress
}virtual_server 192.168.32.100 8080
}real_server 192.168.32.44 8080
}}
啟動keepalive指令碼
chmod g+x /etc/init.d/lvsdrservice lvsdr start
啟動後出現乙個新增虛擬ip(vip)
chkconfig keepalived onservice keepalived start
檢視ipvsadm -ln
7、驗證結果
可以使用命令檢視是否**成功
ipvsadm -lcn
可以進行抓包檢視是否有資料報通過埠
tcpdump host 192.168.32.100 and port 8080 -x -vv
LVS Keepalived負載均衡配置
lvs一般是和keepalived一起組合使用的,雖然也可以單獨使用lvs,但配置比較繁瑣,且可用性也沒有前者高。lvs和keepalived組合使用後,配置lvs的vip和負載均衡就都在keepalived中進行配置,只是在keepalived中呼叫lvs 配置 keepalived.conf g...
LVS keepalived負載均衡實戰
lvs keepalived負載均衡實戰 一 為什麼要使 用負載均衡技術?1 系統高可用性 2 系統可擴充套件性 3 負載均衡能力 lvs keepalived能很好的實現以上的要求,lvs提 供負載均衡,keepalived提供健康檢查,故障轉移,提高系統的可用性!採用這樣的架構以後 很容易對現有...
LVS Keepalived構建高可用負載均衡
lvs keepalived構建高可用負載均衡 一 位址規劃 功能 hostname ip位址 虛擬裝置名 虛擬ip director1 node0 192.168.32.30 eth0 0 192.168.32.21 director2 node1 192.168.32.31 eth0 0 192...