19、LVS的簡介以及keepalived的高可用

1、簡述lvs四種集羣特點及使用場景

1、lvs-nat:
本質是多目標IP的DNAT,通過將請求報文中的目標地址和目標端口修改爲某挑
出的RS的RIP和PORT實現轉發
(1)RIP和DIP應在同一個IP網絡,且應使用私網地址;RS的網關要指向DIP
(2)請求報文和響應報文都必須經由Director轉發,Director易於成爲系統瓶頸
(3)支持端口映射,可修改請求報文的目標PORT
(4)VS必須是Linux系統,RS可以是任意OS系統
2、LVS-DR:Direct Routing,直接路由,LVS默認模式,應用最廣泛,通過爲請求報
文重新封裝一個MAC首部進行轉發,源MAC是DIP所在的接口的MAC,目標
MAC是某挑選出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目標
IP/PORT均保持不變
(1) Director和各RS都配置有VIP
(2) 確保前端路由器將目標IP爲VIP的請求報文發往Director
在前端網關做靜態綁定VIP和Director的MAC地址
在RS上使用arptables工具
arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
在RS上修改內核參數以限制arp通告及應答級別
/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce
LVS-DR模式
(3)RS的RIP可以使用私網地址,也可以是公網地址;RIP與DIP在同一IP網絡;
RIP的網關不能指向DIP,以確保響應報文不會經由Director
(4)RS和Director要在同一個物理網絡
(5)請求報文要經由Director,但響應報文不經由Director,而由RS直接發往
Client
(6)不支持端口映射(端口不能修敗)
(7)RS可使用大多數OS系統
3、lvs-tun:
轉發方式:不修改請求報文的IP首部(源IP爲CIP,目標IP爲VIP),而在原IP報文
之外再封裝一個IP首部(源IP是DIP,目標IP是RIP),將報文發往挑選出的目標
RS;RS直接響應給客戶端(源IP是VIP,目標IP是CIP)
(1) DIP, VIP, RIP都應該是公網地址
(2) RS的網關一般不能指向DIP
(3) 請求報文要經由Director,但響應不經由Director
(4) 不支持端口映射
(5) RS的OS須支持隧道功能
4、lvs-fullnat:通過同時修改請求報文的源IP地址和目標IP地址進行轉發
CIP --> DIP
VIP --> RIP
(1) VIP是公網地址,RIP和DIP是私網地址,且通常不在同一IP網絡;因此,
RIP的網關一般不會指向DIP
(2) RS收到的請求報文源地址是DIP,因此,只需響應給DIP;但Director還
要將其發往Client
(3) 請求和響應報文都經由Director
(4) 支持端口映射 
注意:此類型kernel默認不支持

2、描述LVS-DR工作原理,並配置實現。

LVS-DR就是操縱封裝新的MAC地址
配置和實現
#開啓核心轉發功能
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
關閉核心轉發功能
echo 0 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 >/proc/sys/net/ipv4/conf/all/arp_announce
echo 0 >/proc/sys/net/ipv4/conf/lo/arp_announce
LVS配置
yum install ipvsadm -y
ipvsadm -A -t 192.168.44.128:80 -s rr 創建VIP的DR模型
ipvsadm -a -t 192.168.44.128:80 -r 192.168.44.129  #增加服務器RS1
ipvsadm -a -t 192.168.44.128:80 -r 192.168.44.130  #增加服務器RS2

3、實現LVS+Keepalived高可用

單主模型IPVS示例
高可用的ipvs集羣示例:
vim /etc/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
vrrp_mcast_group4 224.0.100.10
}
單主模型IPVS示例
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 6
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 571f97b2
}
virtual_ipaddress {
192.168.4.128/24 dev eth0
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}
單主模型IPVS示例
virtual_server 192.168.44.128 80 {
delay_loop 3
lb_algo rr
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 80
real_server 192.168.44.129 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 1
nb_get_retry 3
delay_before_retry 1
}
}
}
單主模型IPVS示例
real_server 192.168.44.130 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 1
nb_get_retry 3
delay_before_retry 1
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章