(一)LVS+OSPF+Nginx高可用高并发Web架构

图片

原理:

简介

       这是一个高并发高可用的Web架构实现,从网络层的OSPF协议的负载均衡到LVS的四层负载均衡,再到Nginx的七层负载均衡,实现了一整套Web入口架构。适用于高可用高并发,大流量的场景。

        其中,OSPF负载均衡的实现需要和网络三层设备配合。如:路由器或者三层交换机。结合软路由Quagga来实现。

架构:

架构图如下:

图片

配置:

1.quagga之zebra配置:

# cat /etc/quagga/zebra.conf
hostname Router
password zebra
enable password zebra
!
interface eth0
ipv6 nd suppress-ra
!
interface eth1
ipv6 nd suppress-ra
!
interface lo
!
access-list 10 deny any
!
route-map denyany deny 10
match ip address 10
!
!
ip protocol ospf route-map denyany
!
line vty
!

2.quagga之ospf配置:

# cat /etc/quagga/ospfd.conf
hostname ospfd
password zebra
log stdout
log file /var/log/quagga/ospf.log
!
!
!
interface eth0
ip ospf hello-interval 1
ip ospf dead-interval 3
ip ospf priority 0


!
router ospf
ospf router-id LOCAL_IP
network LOCAL_IP_net/mask area 0.0.0.0
network VIP1/32 area 0.0.0.0
network VIP2/32 area 0.0.0.0
network VIP3/32 area 0.0.0.0
!
line vty
!

3.keepalive的配置:

# cat keepalived.conf
# Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}

virtual_server VIP1 80 {
delay_loop 6
lb_algo wrr
lb_kind TUN
persistence_timeout 0
protocol TCP

real_server RS1_IP 80 {
weight 10
TCP_CHECK {
connect_port 80
connect_timeout 8
nb_get_retry 3
delay_before_retry 3
}
}
real_server RS2_IP 80 {
weight 10
TCP_CHECK {
connect_port 80
connect_timeout 8
nb_get_retry 3
delay_before_retry 3
}
}
}

4.lvs节点的vip配置脚本配置:

# cat lvs_ospf_vip
#!/bin/bash

#description : VIP configuration.
VIP1=xxx.xxx.xxx.xxx
VIP2=xxx.xxx.xxx.xxx
VIP3=xxx.xxx.xxx.xxx

STATUS=0
case "$1" in
start)
ip addr add ${VIP1}/32 dev lo:${VIP1#*.} label lo:${VIP1#*.} || STATUS=1
ip addr add ${VIP2}/32 dev lo:${VIP1#*.} label lo:${VIP2#*.} || STATUS=1
ip addr add ${VIP3}/32 dev lo:${VIP1#*.} label lo:${VIP3#*.} || STATUS=1

[ $STATUS -eq 0 ] && echo 'Start VIP ok.' || echo 'Start VIP failed.'
;;
stop)
VIPS=`ip addr show label "lo:*"|awk '{print $2}'|cut -d'/' -f1`
for VIP in ${VIPS}
do
ip addr del ${VIP}/32 dev lo || STATUS=1
done
[ $STATUS -eq 0 ] && echo 'Stop VIP ok.' || echo 'Stop VIP failed.'
;;
restart)
$0 stop
$0 start
;;
*)
echo 'Usage: $0 {start|stop|restart}'
exit 1
esac

5.nginx后端代理节点的lvs脚本配置:

# cat lvs_real_tun
#!/bin/bash

#description : start realserver
VIP1=xxx.xxx.xxx.xxx
VIP2=xxx.xxx.xxx.xxx
VIP3=xxx.xxx.xxx.xxx
#/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/modprobe ipip
/sbin/ifconfig tunl0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up
/sbin/ifconfig tunl0:1 $VIP2 broadcast $VIP2 netmask 255.255.255.255 up
/sbin/ifconfig tunl0:2 $VIP3 broadcast $VIP3 netmask 255.255.255.255 up
/sbin/route add -host $VIP1 dev tunl0
/sbin/route add -host $VIP2 dev tunl0:1
/sbin/route add -host $VIP3 dev tunl0:2
#echo "0" >/proc/sys/net/ipv4/ip_forward
echo "1" >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/tunl0/rp_filter
echo "0" >/proc/sys/net/ipv4/conf/all/rp_filter
sysctl -p >/dev/null 2>&1
/sbin/ifconfig eth0 mtu 1440
;;
stop)
echo " stop LVS of RealServer"
echo "0" >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/tunl0/rp_filter
echo "1" >/proc/sys/net/ipv4/conf/all/rp_filter
/sbin/ifconfig tunl0 down
/sbin/modprobe -r ipip
/sbin/ifconfig eth0 mtu 1500
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac

未完待续:部署优化,CPU绑核 。。。。。。

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/235163.html

(0)
联系我们
联系我们
分享本页
返回顶部