高并发解决方法-LVS、LVS-NAT、LVS-DR
前言:
集群功能分类:
1.LB Load Balancing,负载均衡(增加处理能力),有一定高可用能力,但不是高可用集群,是以提高服务的并发处理能力为根本着重点。LVS
2.HA High Availability 高可用集群(增加服务可用性),是以提升服务的始终在线能力为着重点,不会因为宕机而导致服务不可用。Keepalived
大型网站高并发解决方案LVS
负载均衡
(Load Balance)负载均衡,当然这是一个简单的概括,比如,我有10台机器都提供web服务,那么我如何均衡的利用这10台机器呢,让这10台机器保证高性能、高可用、高并发就是负载均衡要考虑和要做的事情。
实现负载均衡一般可以使用顺序、比重、流量、服务类别等进行分配,负载均衡的部署方式也分为路由和服务直接返回模式
负载均衡的主要方式
1.http重定向
2.DNS负载均衡
优点:
将负载均衡的工作交给了DNS,省却了网站管理维护负载均衡服务器的麻烦,同时许多DNS还支持基于地理位置的域名解析,将域名解析成距离用户地理最近的一个服务器地址,加快访问速度吗,改善性能。
缺点:
目前的DNS解析是多级解析,每一级DNS都可能化缓存记录A,当某一服务器下线后,该服务器对应的DNS记录A可能仍然存在,导致分配到该服务器的用户访问失败。
DNS负载均衡的控制权在域名服务商手里,网站可能无法做出过多的改善和管理。
不能够按服务器的处理能力来分配负载。DNS负载均衡采用的是简单的轮询算法,不能区分服务器之间的差异,不能反映服务器当前运行状态,所以其的负载均衡效果并不是太好。
可能会造成额外的网络问题。为了使本DNS服务器和其他DNs服务器及时交互,保证DNSs数据及时更新,使地址能随机分配,一般都要将DNS的刷新时间设置的较小,但太小将会使DNS流量大增造成额外的网络问题。3.反向代理负载均衡
4.ip负载均衡
优点:在响应请求时速度较反向服务器负载均衡要快。
缺点。如法处理更高级的请求5.数据链路层负载均衡
优点:不需要负载均衡服务器进行IP地址的转换。数据响应时,不需要经过负载均衡服务器。
缺点:负载均衡服务器的网卡带宽要求较高。
四层负载和七层负载
所谓四层就是基于IP+端口的负载均衡,主要代表有lvs。
七层负载也称内容交换,就是基于URL等应用层信息.的负载均衡,主要代表有nginx。
关于代理
正向代理
反向代理
LVS概述
LVS是Linux Virtual Server 也就是Linux虚拟服务器
LVS工作在一台server上提供Directory(负载均衡器)的功能,本身并不提供服务,只是把特定的请求转发给对应的real server(真正提供服务的主机),从而实现集群环境中的负载均衡。
LVS工作模式:
NAT转发模式
1.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP(客户端lP),后面统称为CIP,目标地址为VIP(负载均衡器前端地址,后面统称为VIP)。
2.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的目标IP地址改为了后端服务器的RIP地址并将报文根据算法发送出去。
R.报文送到Real Server后,由于报文的目标地址是自己,所以会响应该请求,并将响应报文返还给LVS。
4.然后LVS将此报文的源地址修改为本机并发送给客户端。
优点:
网络隔离安全,节约IP地址
还有DR直接路由模式、TUN-IP隧道模式、FULL-NAT等...
LVS-NAT实战案例
准备:
client: VMNET0 192.168.31.86
LVS: VMNET0 192.168.31.143
VMNET2 192.168.198.128
web1: VMNET 2 192.168.198.129
web2: VMNET 2 192.168.198.130
关闭防护墙 关闭selinux
步骤:
1.web1配置网站和路由
yum install -y httpd //先使用NAT网络连接 安装好httpd
systemctl start httpd
systemctl enable httpd //完成后切换为vmnet2仅主机网络
echo "web1" > /var/www/html/index.html
route add default gw 192.168.198.128 //配置真实服务器的网络出口 -net外部网络 gw网关
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="2a55dccb-7784-4b4e-a5e2-4004033803fa"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.198.129
NETMASK=255.255.255.0
GATEWAY=192.168.198.128 //只允许LVS的vmnet2通过
DNS1=114.114.114.114
2.web2配置网站和路由
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "web2" > /var/www/html/index.html
route add default gw 192.168.198.128 //配置真实服务器的网络出口 -net外部网络 gw网关
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_F