LVS+Keepalived

it2024-10-26  39

LVS

介绍

四层调度器:传输层) LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。 最终目的是linux操作系统和lvs集群软件实现一个高可用的高性能低成本的服务器的应用集群

组成

前端: 负载均衡层 一台或多台负载调度器构成 中间: 服务器群组层 由一组时机运行应用服务的服务器组成 底端: 数据共享存储层 提供共享储存的空间的存储区域

术语

Director Server 调度服务器 :将负载分发到RealServer的服务器 Real Server 真实服务器 : 真正提供应用服务器的服务器 VIP 虚拟ip地址 : 公布给用户访问的虚拟ip地址 DIP 调度器连接后端节点服务器的ip地址 RIP 真实ip地址 : 集群点上使用的ip地址

工作模式

NAT模式 通过网络地址转换实现的虚拟服务器;大并发访问调度器性能成为瓶颈 TUN模式 隧道模式 通过隧道方式实现虚拟服务器 DR模式 直接使用路由技术实现虚拟服务器;节点服务器需要配置vip,注意mac地址广播 一、NAT模式(VS-NAT) 原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,并发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的原IP地址改为自己的IP,将目的地址改为客户端IP地址即可。期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器。 优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址。 缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢! 二、IP隧道模式(VS-TUN) 原理:首先要知道,互联网上的大多Internet服务的请求包很短小,而应答包通常很大。那么隧道模式就是,把客户端发来的数据包,封装一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器。注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTUNNEL协议。所以,在RS的内核中,必须编译支持IPTUNNEL这个选项 优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理很巨大的请求量,这种方式,一台负载均衡器能够为很多RS进行分发。而且跑在公网上就能进行不同地域的分发。 缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议,服务器可能只局限在部分Linux系统上。 三、直接路由模式(VS-DR) 原理:负载均衡器和RS都使用同一个IP对外服务。但只有DR对ARP请求进行响应,所有RS对本身这个IP的ARP请求保持静默。也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC(因为IP一致)并将请求分发给这台RS。这时RS收到这个数据包,处理完成之后,由于IP一致,可以直接将数据返给客户,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端。由于负载均衡器要对二层包头进行改换,所以负载均衡器和RS之间必须在一个广播域,也可以简单的理解为在同一台交换机上。 优点:和TUN(隧道模式)一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。 缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须与物理网卡在一个物理段上

调度算法

轮询、加权轮询、最少连接、加权最少连接、基于局部的最少连接、带复制的基于局部性的最少连接 目标地址散列调度、源地址散列调度、最短的期望的延迟、最少队列调度

NAT

1.环境准备:

proxy调度器做路由器、client客户端、web1、web2、做web服务端并配置网页,网关指定调度器proxy

2.部署LVS-NAT模式调度器:

echo 1 > /proc/sys/net/ipv4/ip_forward 临时开启路由转发配置 echo “net.ipv4.ip_forward = 1” >> /etc/sysctl.conf 永久开启路由转发配置 sysctl -p: 刷新路由转发配置,查看路由转发配置文件

3.安装ipvsadm 进行管理调度器

yum -y install ipvsadm ipvsadm -A -t 192.168.4.5:80 -s wrr ipvsadm -Ln

4.创建集群服务器

ipvsadm -A(创建添加虚拟服务集群) -t 外网ip:端口 -s 调度算法 -A(add)是创建添加虚拟服务器集群 -t(tcp)后面指定集群VIP的地址和端口,协议是tcp协议 -s后面指定负载调度算法,如rr(轮询)、wrr(加权轮询)、lc(最少连接)、wlc(加权最少连接)等等

5.添加真实服务器

ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.100 -w 1 -m ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.200 -w 1 -m -a(add)往虚拟服务器集群中添加后端真实服务器IP,指定往-t 192.168.4.5:80这个集群中添加 -d 删除真实服务器 -r(real)后面跟后端真实服务器的IP和端口,这里不写端口默认是80端口 -w(weight)指定服务器的权重,权重越大被访问的次数越多,英语词汇:weight(重量,分量) -m指定集群工作模式为NAT模式,如果是-g则代表使用DR模式,-i代表TUN模式

查看规则列表,配置: ipvsadm -Ln

保存配置: ipvsadm-save -n /etc/sysconfig/ipvsadm

DR

1、环境准备

proxy DIP:4.5 VIP:4.15 Client 4.10 Web1:ip 4.100 lo:隐藏ip:4.15 Web2:ip 4.200 lo:隐藏ip:4.15

2、集群搭建:使用-g定义DR集群

3、client访问4.15测试

Lo网卡为虚拟网卡:伪装的IP地址,这个IP地址因为是用来做地址欺骗用的,假的就是假的,不能暴露(必须配置在lo本地回环网卡上面)。 lo网卡上面默认配置的IP是127.0.0.1。

4、防止地址冲突的问题

这里因为web1也配置与调度器一样的VIP地址,默认肯定会出现地址冲突; sysctl.conf文件写入这下面四行的主要目的就是访问192.168.4.15的数据包,只有调度器会响应,其他主机都不做任何响应,这样防止地址冲突的问题。 net.ipv4.conf.all.arp_ignore = 1 对应的为/proc/sys/net/ipv4/conf/all/目录 net.ipv4.conf.lo.arp_ignore = 1 有arp广播问谁是192.168.4.15时,本机忽略该ARP广播,不做任何回应(防止进站冲突) net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_announce = 2本机不要向外宣告自己的lo回环地址是192.168.4.15(防止出站冲突) /所有值默认为0 sysctl -p 立即生效

5、配置vip、DIP

6、配置LVS规则

ipvsadm -A -t 192.168.4.15:80 -s rr ipvsadm -a -t 192.168.4.15:80 -r 192.168.2.100:80 -g ipvsadm -a -t 192.168.4.15:80 -r 192.168.2.200:80 -g ipvsadm -Ln

Keepalived

三大功能:

1.VRRP热备 :[配置vip] 2.配置lvs规则(ipvsadm)---开启lvs调度器作用 3.健康检查 --- 自动检查集群工作 keepalived运行时,会启动3个进程,分别为:core(核心进程),check和vrrp \- core:负责主进程的启动,维护和全局配置文件的加载; \- check:负责健康检查 \- vrrp:用来实现vrrp协议

1、安装软件

yum -y install keepalived

2、修改配置文件

vim /etc/keepalived/keepalived.conf global_defs { router_id web1 #12行,设置路由ID号(实验需要修改) vrrp_iptables #13行,清除防火墙的拦截规则(实验需要修改,手动添加该 vrrp_instance VI_1 { state MASTER #21行,主服务器为MASTER(备服务器需要修改为BACKUP) interface eth0 #22行,VIP配在哪个网卡(实验需要修改,不能照抄网卡名) virtual_router_id 51 #23行,主备服务器VRID号必须一致 priority 100 #24行,服务器优先级,优先级高优先获取VIP advert_int 1 authentication { auth_type pass auth_pass 1111 } virtual_ipaddress { #30~32行,谁是主服务器谁获得该VIP(实验需要修改) 192.168.4.80 virtual_server 192.168.4.15 80 { #设置ipvsadm的VIP规则(实验需要修改) delay_loop 6 #默认健康检查延迟6秒 lb_algo rr #设置LVS调度算法为RR lb_kind DR #设置LVS的模式为DR(实验需要修改) #persistence_timeout 50 #(实验需要删除) #注意persistence_timeout的作用是保持连接 #开启后,客户端在一定时间内(50秒)始终访问相同服务器 protocol TCP #TCP协议 real_server 192.168.4.100 80 { #设置后端web服务器真实IP(实验需要修改) weight 1 #设置权重为1 TCP_CHECK { #对后台real_server做健康检查(实验需要修改) connect_timeout 3 #健康检查的超时时间3秒 nb_get_retry 3 #健康检查的重试次数3次 delay_before_retry 3 #健康检查的间隔时间3秒 } } real_server 192.168.4.200 80 { #设置后端web服务器真实IP(实验需要修改) weight 2 #设置权重为2 TCP_CHECK { #对后台real_server做健康检查(实验需要修改) connect_timeout 3 #健康检查的超时时间3秒 nb_get_retry 3 #健康检查的重试次数3次 delay_before_retry 3 #健康检查的间隔时间3秒、
最新回复(0)