LVS keepalived負載均衡 DR

2021-09-20 19:46:11 字數 4958 閱讀 5322

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 -y
real server + nginx服務的2個節點安裝

# yum install epel-release -y

# yum install nginx -y

4、檢視是否都開啟允許路由**(lvsreal 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 keepalived

global_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/lvsdr

service lvsdr start

啟動後出現乙個新增虛擬ip(vip)

chkconfig keepalived on 

service 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...