首页 » 网站建设 » phpnginx物理拓扑技巧_美团资深架构师给你讲述不一样的lvsnginx负载均衡

phpnginx物理拓扑技巧_美团资深架构师给你讲述不一样的lvsnginx负载均衡

访客 2024-11-20 0

扫一扫用手机浏览

文章目录 [+]

理解lvs负载均衡的三种模式。

理解lvs-DR负载均衡支配方法。

phpnginx物理拓扑技巧_美团资深架构师给你讲述不一样的lvsnginx负载均衡

节制nginx实现负载均衡的方法。

phpnginx物理拓扑技巧_美团资深架构师给你讲述不一样的lvsnginx负载均衡
(图片来自网络侵删)

节制lvs+nginx负载均衡拓扑构造。

2 负载均衡方案2.1什么是负载均衡

一台普通做事器的处理能力是有限的,如果能达到每秒几万个到几十万个要求,但却无法在一秒钟内处理上百万个乃至更多的要求。
但若能将多台这样的做事器组成一个别系,并通过软件技能将所有要求均匀分配给所有做事器,那么这个别系就完备拥有每秒钟处理几百万个乃至更多要求的能力。
这便是负载均衡最初的基本设计思想。

负载均衡是由多台做事器以对称的办法组成一个做事器凑集,每台做事器都具有等价的地位,都可以单独对外供应做事而无须其他做事器的赞助。
通过某种负载分担技能,将外部发送来的要求按照某种策略分配到做事器凑集的某一台做事器上,而吸收到要求的做事器独立地回应客户的要求。
负载均衡办理了大量并发访问做事问题,其目的便是用最少的投资得到靠近于大型主机的性能。

2.2 干系技能2.2.1 基于DNS的负载均衡

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够利用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
通过主机名,终极得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
DNS协议运行在UDP协议之上,利用端口号53。

DNS负载均衡技能是最早的负载均衡办理方案,它是通过DNS做事中的随机名字解析来实现的,在DNS做事器中,可以为多个不同的地址配置同一个名字,而终极查询这个名字的客户机将在解析这个名字时得到个中的一个地址。
因此,对付同一个名字,不同的客户机会得到不同的地址,它们也就访问不同地址上的Web做事器,从而达到负载均衡的目的。

如下图:

优点:实现大略、履行随意马虎、本钱低、适用于大多数TCP/IP运用;

缺陷:

1、 负载分配不屈均,DNS做事器将Http要求均匀地分配到后台的Web做事器上,而不考虑每个Web做事器当前的负载情形;如果后台的Web做事器的配置和处理能力不同,最慢的Web做事器将成为系统的瓶颈,处理能力强的做事器不能充分发挥浸染;

2、可靠性低,如果后台的某台Web做事器涌现故障,DNS做事器仍旧会把DNS要求分配到这台故障做事器上,导致不能相应客户端。

3、变更生效韶光长,如果变动NDS有可能造成相称一部分客户不能享受Web做事,并且由于DNS缓存的缘故原由,所造成的后果要持续相称长一段韶光(一样平常DNS的刷新周期约为24小时)。

2.2.2 基于四层交流技能的负载均衡

基于四层交流技能的负载均衡是通过报文中的目标地址和端口,再加上负载均衡设备设置的做事器选择办法,决定终极选择的内部做事器与要求客户端建立TCP连接,然后发送Client要求的数据。

如下图:

client发送要求至4层负载均衡器,4层负载均衡器根据负载策略把client发送的报文目标地址(原来是负载均衡设备的IP地址)修正为后端做事器(可以是web做事器、邮件做事等)IP地址,这样client就可以直接跟后端做事器建立TCP连接并发送数据。

具有代表意义的产品:LVS(开源软件),F5(硬件)

优点:性能高、支持各种网络协议

缺陷:对网络依赖较大,负载智能化方面没有7层负载好(比如不支持对url个性化负载),F5硬件性能很高但本钱也高须要公民币几十万,对付小公司就望而生畏了。

2.2.3 基于七层交流技能的负载均衡

基于七层交流技能的负载均衡也称内容交流,也便是紧张通过报文中的真正故意义的运用层内容,再加上负载均衡设备设置的做事器选择办法,决定终极选择的做事器。

如下图:

七层负载均衡做事器起了一个代理做事器的浸染,client要访问webserver要先与七层负载设备进行三次握手后建立TCP连接,把要访问的报文信息发送给七层负载均衡;然后七层负载均衡再根据设置的均衡规则选择特定的webserver,然后通过三次握手与此台webserver建立TCP连接,然后webserver把须要的数据发送给七层负载均衡设备,负载均衡设备再把数据发送给client。

具有代表意义的产品:nginx(软件)、apache(软件)

优点:对网络依赖少,负载智能方案多(比如可根据不同的url进行负载)

缺陷:网络协议有限,nginx和apache支持http负载,性能没有4层负载高

2.3 确定利用四层+七层负载结合方案

四层负载利用lvs软件或F5硬件实现。

七层负载利用nginx实现。

如下图是lvs+nginx的拓扑构造:

2.4 nginx集群背景

在keepalived+nginx的主备容灾高可用的架构中,nginx是作为外部访问系统的唯一入口,理论上一台nginx的最大并发量可以高达50000,但是当并发量更大的时候,keepalived+nginx的高可用机制是没办法知足需求的,由于keepalived+nginx的架构中确确实实是一台nginx在事情,只有当master宕机或非常时候,备份机才会上位。
那么如何办理更大的高并发问题呢,大概会问能不能搭建nginx集群,直接对外供应访问?

很显然这是不当善的,由于当nginx作为外部的唯一访问入口,没办法直接以集群的形式对外供应做事,没有那么多的公网ip资源可用,既太摧残浪费蹂躏也不友好。
但是在内网环境下,是可以用nginx集群(nginx横向扩展做事凑集)的,当然总得有一个对外入口,以是须要在nginx集群之上,再加一层负载均衡器,作为系统的唯一入口。

3 lvs实现四层负载DR模式(理解)3.1 什么是lvs

LVS是Linux Virtual Server的简写,意即Linux虚拟做事器,是一个虚拟的做事器集群系统。
本项目在1998年5月由章文嵩博士成立,是中国海内最早涌现的自由软件项目之一。

3.2 lvs实现负载的三种办法

运行 lPVS软件的做事器,在全体负载均衡集群中承担一调度角色 软件的做事器,(即 向真实做事器分配从客户端过来的要求。
LVS中的调度方法有三种 :NAT(Network Address Translation网络地址转换)、TUN(tunnel 隧道)、DR(direct route 直接路由)

3.2.1 LVS-DR 模式

要求由LVS接管,由真实供应做事的做事器(RealServer, RS)直接返回给用户,返回的时候不经由LVS。

DR模式下须要LVS做事器和RS绑定同一个VIP, 一个要求过来时,LVS只须要将网络帧的MAC地址修正为某一台RS的MAC,该包就会被转发到相应的RS处理,把稳此时的源IP和目标IP都没变,RS收到LVS转发来的包,创造MAC是自己的,创造IP也是自己的,于是这个包被合法地接管,而当RS返回相应时,只要直接向源IP(即用户的IP)返回即可,不再经由LVS。

DR模式下,lvs吸收要求输入,将要求转发给RS,由RS输出相应给用户,性能非常高。

它的不敷之处是哀求负载均衡器与RS在一个物理段上。

3.2.2 LVS-NAT模式

NAT(Network Address Translation)是一种外网和内网地址映射的技能。
NAT模式下,LVS须要作为RS的网关,当网络包到达LVS时,LVS做目标地址转换(DNAT),将目标IP改为RS的IP。
RS吸收到包往后,处理完,返回相应时,源IP是RS IP,目标IP是客户真个IP,这时RS的包通过网关(LVS)中转,LVS会做源地址转换(SNAT),将包的源地址改为VIP,对付客户端只知道是LVS直接返回给它的。

NAT模式要乞降相应都须要经由lvs,性能没有DR模式好。

3.2.3 LVS-TUN模式

TUN模式是通过ip隧道技能减轻lvs调度做事器的压力,许多Internet做事(例如WEB做事器)的要求包很短小,而应答包常日很大,负载均衡器只卖力将要求包分发给物理做事器,而物理做事器将应答包直接发给用户。
以是,负载均衡器能处理很巨大的要求量。
比较NAT性能要高的多,比DR模式的优点是不限定负载均衡器与RS在一个物理段上。
但是它的不敷须要所有的做事器(lvs、RS)支持"IP Tunneling"(IP Encapsulation)协议。

3.3 lvs-DR环境

vip:192.168.101.100

lvs-director:192.168.101.8

nginx1:192.168.101.3

nginx2:192.168.101.4

3.4 lvs调度做事器Director安装3.4.1 安装lvs

在192.168.101.8上安装lvs

centos6.5自带lvs,检讨linux内核是否集成lvs模块:

modprobe -l | grep ipvs

3.4.2 安装lvs的管理工具ipvsadm安装依赖

yum install -y gcc gcc-c++ makepcre pcre-devel kernel-devel openssl-devel libnl-devel popt

安装ipvsadm

将ipvsadm-1.26.tar.gz拷贝至/usr/local/下

cd /usr/localtar -zxvf ipvsadm-1.26.tar.gzcd ipvsadm-1.26makemake install

校验是否安装成功:

3.5 真实做事器Real Server安装

在192.168.101.3和192.168.101.4上安装nginx。

3.5.1 nginx配置文件

创建nginx-lvs.conf,http内容如下:

http { include mime.types; default_type application/octet-stream; sendfile on; server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } }3.6 Director Server配置3.6.1 在eth0上绑定虚拟ip

ifconfig eth0:0 192.168.101.100 broadcast 192.168.101.100 netmask 255.255.255.255 up

此处在eth0设备上绑定了一个虚拟设备eth0:0,同时设置了一个虚拟IP是192.168.101.100,然后指定广播地址也为192.168.101.100,须要特殊把稳的是,虚拟ip地址的广播地址是它本身,子网掩码是255.255.255.255。

3.6.2 添加路由规则

route add -host 192.168.101.100 dev eth0:0

3.6.3 启用系统的包转发功能

echo "1" >/proc/sys/net/ipv4/ip_forward

参数值为1时启用ip转发,为0时禁止ip转发。

3.6.4 打消原有转发规则

ipvsadm --clear3.6.5 添加虚拟IP规则

ipvsadm -A -t 192.168.101.100:80 -s rr

-s rr表示采取轮询策略。

:80表示负载转发的端口是80

3.6.6 在虚拟IP中添加做事规则

ipvsadm -a -t 192.168.101.100:80 -r 192.168.101.3:80 -gipvsadm -a -t 192.168.101.100:80 -r 192.168.101.4:80 -g

在新加虚拟IP记录中添加两条新的Real Server记录,-g表示指定LVS 的事情模式为直接路由模式。

lvs进行负载转发须要担保lvs负载的端口要和nginx做事的端口的同等,这里都为80。

3.6.7 重启lvs

ipvsadm

3.7 Real Server配置

在lvs的DR和TUn模式下,用户的访问要求到达真实做事器后,是直接返回给用户的,而不再经由前真个Director Server,因此,就须要在每个Real server节点上增加虚拟的VIP地址,这样数据才能直接返回给用户。

3.7.1 在回环设备上绑定了一个虚拟IP地址

ifconfig lo:0 192.168.101.100 broadcast 192.168.101.100 netmask 255.255.255.255 up/sbin/route add -host 192.168.101.100 dev lo:0

3.7.2 关闭arp解析

arp_announce :定义不同级别:当ARP要求通过某个端口进来是否利用这个接口来回应。

0 -利用本地的任何地址,不管配置在哪个接口上去相应ARP要求;

1 - 避免利用其余一个接口上的mac地址去相应ARP要求;

2 - 尽可能利用能够匹配到ARP要求的最佳地址。

arp_ignore:当ARP要求发过来后创造自己正在要求的地址是否相应;

0 - 利用本地的任何地址,不管配置在哪个接口上去相应ARP要求;

1 - 哪个接口上接管ARP要求,就从哪个端口上回应。

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announce sysctl -p #利用修正生效

sysctl -p #利用修正生效

3.8 测试3.8.1 预期目标

由于lvs设置为rr轮询策略,当访问虚IP http://192.168.101.100,每次刷新要求通过lvs负载到不同的做事器。

3.8.2 把稳事变

1、测试时须要在nginx的http中设置keepalive_timeout 0; 取消利用http持久连接模式,担保每次客户端发起要求都须要向做事端建立连接,这样做是为了每次刷新页面都要经由lvs负载转发。

2、lvs进行负载转发须要担保lvs负载的端口要和nginx做事的端口的同等,这里都为80。

keepalive_timeout解释:

在nginx中keepalive_timeout的默认值是75秒,默认利用http持久连接模式,可使客户端到做事器真个连接持续有效,当涌现对做事器的后继要求时,可避免建立或重新建立连接。
生产环境建议keepalive_timeout不要设置为0。

3.8.3 测试过程

修正192.168.101.3和192.168.101.4下html目录中index.html的内容使之个性化。

第一次要求:http://192.168.101.100

刷新,相称于第二次要求:

依次交替测试,创造每次要求被负载到不同的nginx上。

任意停滞掉一个nginx,要求http://192.168.101.100连续可以浏览,由于lvs采取轮询策略如果个中一个nginx要求不可到达则去要求其余的nginx。

3.9 脚本封装

为了方便配置启动lvs将上边Director Server和Real Server的配置过程封装在shell脚本中。

3.9.1 Director Server配置

在/etc/init.d下创建lvsdr,内容如下:

#!/bin/sh# 定义虚拟ipVIP=192.168.101.100 #虚拟 ip根据需求修正# 定义realserver,并已空格分开,根据需求修正RIPS="192.168.101.3 192.168.101.4"# 定义供应做事的端口SERVICE=80# 调用init.d脚本的标准库. /etc/rc.d/init.d/functionscase $1 in start) echo "Start LVS of DR Mode" # 开启ip转发 echo "1" > /proc/sys/net/ipv4/ip_forward # 绑定虚拟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 # 添加真实做事器记录 for RIP in $RIPS do echo $RIP:$SERVICE; ipvsadm -a -t $VIP:$SERVICE -r $RIP:$SERVICE -g done # 设置tcp tcpfin udp的超时连接值 ipvsadm --set 30 120 300 ipvsadm ;; stop) echo "Stop LVS DR" ifconfig eth0:0 down ipvsadm -C ;; ) echo "Usage:$0 {start ¦ stop}" exit 1esac

修正脚本权限:chmod +x /etc/init.d/lvsdr

启动Director server:service lvsdr start

停滞Director server:service lvsdr stop

3.9.2 Real Server配置

在/etc/init.d下创建lvsdr,内容如下:

#!/bin/shVIP=192.168.101.100 #虚拟ip,根据需求修正. /etc/rc.d/init.d/functionscase $1 in start) echo "lo:0 port starting" # 为了相应lvs调度器转发过来的包,需在本地lo接口上绑定vip ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up # 限定arp要求 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 ;; stop) echo "lo:0 port closing" ifconfig lo:0 down 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 "Usage: $0 {start ¦ stop}" exit 1esac

修正脚本权限:chmod +x /etc/init.d/lvsdr

启动real server:service lvsdr start

停滞real server:service lvsdr stop

4 nginx实现七层负载

参考nginx教案。

5 lvs四层+nginx七层负载均衡5.1 需求

lvs采取DR模式基本上没有性能瓶颈,用户要求输入至lvs经由负载转发到后台做事上,通过后台做事输出相应给用户。
nginx的负载性能远没有lvs好,lvs四层+nginx七层负载的好处是最前端是lvs吸收要求进行负载转发,由多个nginx共同完成七层负载,这样nginx的负载性能就可以线性扩展。

5.2 准备环境

vip:192.168.101.100

lvs-director:192.168.101.8

nginx1:192.168.101.3 安装nginx

nginx2:192.168.101.4 安装nginx

tomcat1:192.168.101.5 安装tomcat

tomcat2:192.168.101.6 安装tomcat

5.3 配置5.3.1 Director Server配置

vip:192.168.101.100

lvs-director:192.168.101.8

参考lvs四层负载DR模式进行配置

5.3.2 Real Server配置

nginx1:192.168.101.3 安装nginx

nginx2:192.168.101.4 安装nginx

参考lvs四层负载DR模式进行配置,须要修正nginx的配置文件使每个nginx对两个tomcat进行负载,如下:

http { include mime.types; default_type application/octet-stream; sendfile on; upstream tomcat_server_pool{ server 192.168.101.5:8080 weight=10; server 192.168.101.6:8080 weight=10; } server { listen 80; server_name localhost; location / { proxy_pass http://tomcat_server_pool; index index.jsp index.html index.htm; } } }5.4 测试

要求http://192.168.101.100,lvs负载到不同的nginx上,如果停滞任意一台nginx或停滞任意一台tomcat不影响访问。

6 lvs高可用(理解)6.1 什么是高可用

lvs作为负载均衡器,所有要求都先到达lvs,可见lvs处于非常主要的位置,如果lvs做事器宕机后端web做事将无法供应做事,影响严重。

为了屏蔽负载均衡做事器的宕机,须要建立一个备份机。
主理事器和备份机上都运行高可用(High Availability)监控程序,通过传送诸如“I am alive”这样的信息来监控对方的运行状况。
当备份机不能在一定的韶光内收到这样的信息时,它就接管主理事器的做事IP并连续供应负载均衡做事;当备份管理器又从主管理器收到“I am alive”这样的信息时,它就开释做事IP地址,这样的主理事器就开始再次供应负载均衡做事。

6.2 keepalived+lvs实现主备6.2.1 什么是keepalived

keepalived是集群管理中担保集群高可用的一个做事软件,用来防止单点故障。

Keepalived的浸染是检测web做事器的状态,如果有一台web做事器去世机,或事情涌现故障,Keepalived将检测到,并将有故障的web做事器从系统中剔除,当web做事器事情正常后Keepalived自动将web做事器加入到做事器群中,这些事情全部自动完成,不须要人工干涉,须要人工做的只是修复故障的web做事器。

6.2.2 keepalived事情事理

keepalived因此VRRP协议为实现根本的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台供应相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外供应做事的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时就须要根据VRRP的优先级来选举一个backup当master。
这样的话就可以担保路由器的高可用了。

keepalived紧张有三个模块,分别是core、check和VRRP。
core模块为keepalived的核心,卖力主进程的启动、掩护以及全局配置文件的加载和解析。
check卖力康健检讨,包括常见的各种检讨办法。
VRRP模块是来实现VRRP协议的。

详细参考:Keepalived威信指南中文.pdf

6.2.3 keepalived+lvs实现主备过程

6.2.3.1 初始状态

6.2.3.2 主机宕机

6.2.3.3 主机规复

6.2.4 准备环境

vip:192.168.101.100

lvs-director:192.168.101.8 主lvs

lvs-director:192.168.101.9 备lvs

nginx1:192.168.101.3 安装nginx

nginx2:192.168.101.4 安装nginx

tomcat1:192.168.101.5 安装tomcat

tomcat2:192.168.101.6 安装tomcat

6.2.5 安装keepalived

分别在主备lvs上安装keepalived,参考“安装手册”进行安装:

6.2.6 配置keepalived6.2.6.1 主lvs

修正主lvs下/etc/keepalived/keepalived.conf文件

! Configuration File for keepalivedglobal_defs { notification_email { #xxxx@itcast.com # 发生故障时发送的邮箱 } #notification_email_from xxxx@itcast.com # 利用哪个邮箱发送 #smtp_server xxx.com # 发件做事器 smtp_connect_timeout 30 router_id LVS_DEVEL}vrrp_instance VI_1 { state MASTER # 标示为主lvs interface eth0 # HA检测端口 virtual_router_id 51 # 主备的virtual_router_id 必须相同 priority 100 # 优先级,备lvs要比主lvs稍小 advert_int 1 # VRRP Multicast 广播周期秒数 authentication { # 定义认证 auth_type PASS # 认证办法为口令认证 auth_pass 1111 # 定义口令 } virtual_ipaddress { # 定义vip 192.168.101.100 # 多个vip可换行添加 }}virtual_server 192.168.101.100 80 { delay_loop 6 # 每隔6秒查看realserver状态 lb_algo wlc # 调度算法为加权最小连接数 lb_kind DR # lvs事情模式为DR(直接路由)模式 nat_mask 255.255.255.0 persistence_timeout 50 # 同一IP 的连接50秒内被分配到同一台realserver(测试时建议改为0) protocol TCP # 用TCP监测realserver的状态 real_server 192.168.101.3 80 { # 定义realserver weight 3 # 定义权重 TCP_CHECK { # 把稳TCP_CHECK和{之间的空格,如果没有的话只会添加第一个realserver connect_timeout 3 # 三秒无相应超时 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.101.4 80 { weight 3 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } }}6.2.6.2 备lvs

修正备lvs下/etc/keepalived/keepalived.conf文件

配置备lvs时须要把稳:须要修正state为BACKUP , priority比MASTER低,virtual_router_id和master的值同等

! Configuration File for keepalivedglobal_defs { notification_email { #xxxx@itcast.com # 发生故障时发送的邮箱 } #notification_email_from xxxx@itcast.com # 利用哪个邮箱发送 #smtp_server xxx.com # 发件做事器 smtp_connect_timeout 30 router_id LVS_DEVEL}vrrp_instance VI_1 { state BACKUP # 标示为备lvs interface eth0 # HA检测端口 virtual_router_id 51 # 主备的virtual_router_id 必须相同 priority 99 # 优先级,备lvs要比主lvs稍小 advert_int 1 # VRRP Multicast 广播周期秒数 authentication { # 定义认证 auth_type PASS # 认证办法为口令认证 auth_pass 1111 # 定义口令 } virtual_ipaddress { # 定义vip 192.168.101.100 # 多个vip可换行添加 }}virtual_server 192.168.101.100 80 { delay_loop 6 # 每隔6秒查看realserver状态 lb_algo wlc # 调度算法为加权最小连接数 lb_kind DR # lvs事情模式为DR(直接路由)模式 nat_mask 255.255.255.0 persistence_timeout 50 # 同一IP 的连接50秒内被分配到同一台realserver(测试时建议改为0) protocol TCP # 用TCP监测realserver的状态 real_server 192.168.101.3 80 { # 定义realserver weight 3 # 定义权重 TCP_CHECK { # 把稳TCP_CHECK和{之间的空格,如果没有的话只会添加第一个realserver connect_timeout 3 # 三秒无相应超时 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.101.4 80 { weight 3 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } }}6.2.7 测试6.2.7.1 启动

director Server启动:

把稳:利用keepalived就不用手动配置启动lvs,在主、备lvs上启动keepalived即可。

主备lvs(192.168.101.8、192.168.101.9)都启动keepalived。

service keepalived startreal server启动:

192.168.101.3、192.168.101.4启动nginx和lvs的realserver配置

cd /usr/local/nginx/sbin./nginx -c /usr/local/nginx/conf/nginx-lvs.conf

启动lvs的realserver配置:

service lvsdr start

把稳:real server的lvs配置须要利用lvsdr脚本。

tomcat 启动

6.2.7.2 初始状态

查看主lvs的eth0设置:

vip绑定在主lvs的eth0上。

查询lvs状态:

查看备lvs的eth0设置:

vip没有绑定在备lvs的eth0上。

访问http://192.168.101.100,可以正常负载。

6.2.7.3 主机宕机

将主lvs的keepalived停滞或将主lvs关机(相称于仿照宕机),查看主lvs的eth0:

eth0没有绑定vip

查看备lvs的eth0:

vip已经漂移到备lvs。

访问http://192.168.101.100,可以正常负载。

6.2.7.4 主机规复

将主lvs的keepalived启动。

查看主lvs的eth0:

查看备lvs的eth0:

vip漂移到主lvs。

查看备lvs的eth0:

eth0没有绑定vip

访问http://192.168.101.100,可以正常负载。

6.3 keepalived+lvs实现双主

上边主备方案是当前只有一台lvs事情,这造成资源摧残浪费蹂躏,可以采取双主构造,让两台lvs当前都进行事情,采取dns轮询办法,当用户访问域名通过dns轮询每台lvs,双主构造须要两个vip,这两个vip要绑定域名。

同样,在每台lvs上安装keepalived软件,当keepalived检测到个中一个lvs宕机则将宕机的vip漂移到活动lvs上,当lvs规复则vip又重新漂移回来。

6.3.1.1 初始状态

每台lvs绑定一个vip,共两个vip,DNS设置域名对应这两个vip,通过DNS轮询每次解析到不同的vip上即解析到不同的lvs上。

6.3.1.2 个中一个主机宕机

个中一个主机宕机,每台lvs上安装的keepalived程序会检测到对方宕机,将宕机一方的vip漂移至活动的lvs做事器上,这样DNS轮询全部到一台lvs连续对外供应做事。

6.3.1.3 主机规复

当主机规复又回到初始状态,每个vip绑定在不同的lvs上。

6.4 lvs扩展的思考

前端利用1到2台lvs作为负载基本可以知足中小型网站的并发哀求,当lvs的负载成为瓶颈此时就须要对lvs进行优化、扩展。

方案1:LVS-ospf集群

OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。

LVS(DR)通过ospfd,做lvs集群,实现一个VIP,多台LVS同时事情供应做事,这种方案须要依赖三层交流机设备实现。

用户要求(VIP:42.xx.xx.100)到达三层交流机之后,通过对原地址、端口和目的地址、端口的hash,将链接分配到集群中的某一台LVS上,LVS通过内网(10.101.10.x)向后端转发要求,后端再将数据返回给用户。

LVS-ospf集群模式的最大上风就在于:

1.LVS调度机自由伸缩,横向线性扩展(最大8台,受限于三层设备许可的等价路由数目maximum load-balancing);

2.LVS机器同时事情,不存在备机,提高利用率;

3.做到了真正的高可用,某台LVS机器宕机后,不会影响做事

方案2:DNS轮询

上面讲的是一组双主构造,可以采取多组双主构造达到横向扩展lvs的目的,此方案须要每台lvs都绑定一个vip(公网ip),DNS设置域名轮询多个vip,如下图:

方案3:利用硬件负载均衡设置

如果资金许可可以购买硬件设置来完成负载均衡,性能不错的有F5、Array等都可以知足超高并发的哀求。

标签:

相关文章

微信第三方登录便捷与安全的完美融合

社交平台已成为人们日常生活中不可或缺的一部分。微信作为我国最受欢迎的社交软件之一,拥有庞大的用户群体。为了方便用户在不同平台间切换...

网站建设 2025-02-18 阅读0 评论0

广东高速代码表解码高速公路管理智慧

高速公路作为国家交通动脉,连接着城市与城市,承载着巨大的物流和人流。广东作为我国经济大省,高速公路网络密布,交通流量巨大。为了更好...

网站建设 2025-02-18 阅读0 评论0

工程量代码建筑行业的数字化密码

数字化已成为各行各业转型升级的重要方向。在建筑行业,工程量代码作为一种数字化工具,正逐渐改变着传统的工程管理方式。本文将从工程量代...

网站建设 2025-02-18 阅读0 评论0