700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > LVS+Keepalive 实现负载均衡高可用集群

LVS+Keepalive 实现负载均衡高可用集群

时间:2020-10-12 07:04:13

相关推荐

LVS+Keepalive 实现负载均衡高可用集群

一、LVS 介绍

目前LVS已经被集成到Linux内核模块中。LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器,该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都是一样的,整个集群对用户而言都是透明的。最后根据LVS工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,LVS工作模式分为NAT模式、TUN模式、以及DR模式。

二、LVS集群搭建

(1)环境搭建:client --> DR -->RS --client

LVS无需安装

安装的是管理工具,第一种叫ipvsadm,第二种叫keepalive

ipvsadm是通过命令行管理,而keepalive读取配置文件管理

(2)安装ipvsam管理工具

yum install ipvsadm -y

(3)在server1 eth0网卡绑定VIP地址(高可用)

ip addr add 172.25.1.100/24 dev eth0

(4) 添加虚拟服务以及将其关联到真实服务器上去

ipvsadm -A -t 172.25.1.100:80 -s rr # 添加虚拟服务ipvsadm -a -t 172.25.1.100:80 -r 172.25.1.2:80 -g #将虚拟服务关联到真实服务上ipvsadm -a -t 172.25.1.100:80 -r 172.25.1.3:80 -g#LVS默认无80端口,需另外添加新的虚拟IP记录

(5)查看配置结果

(6)web服务器配置

给两台服务器上的网卡绑定VIP地址

[root@server2 ~]# ip addr add 172.25.1.100/32 dev eth0[root@server3 ~]# ip addr add 172.25.1.100/32 dev eth0

抑制ARP响应(noarp)

作用使得

yum install arptables.x86_64 -y[root@server2 html]# arptables -A INPUT -d 172.25.1.100 -j DROP[root@server2 html]# arptables -A OUTPUT -s 172.25.1.100 -j mangle --mangle-ip-s 172.25.1.2[root@server3 html]# arptables -A INPUT -d 172.25.1.100 -j DROP[root@server3 html]# arptables -A OUTPUT -s 172.25.1.100 -j mangle --mangle-ip-s 172.25.1.3

查看策略

实验效果:实现负载均衡

arp解析查看

arp详解

01.ARP协议,全称"Address Resolut ion Protocol",中文名是地址解析协议,使用ARP协议可实现通过IP地址获得对应主机的物理地址(MAC地址)

ARP协议要求通信的主机双方必须在同一个物理网段(即局域网环境)!

02.为了提高IP转换MAC的效率,系统会将解析结果保存下来,这个结果叫做ARP缓存

三、LVS集群的工作模式

DR直接路由模式

client --> DR -->RS --client

DR模式是通过改写请求报文的目标MAC地址,将请求发送给真实服务器的,而真实服务器响应后的处理结果直接返回给客户端用户。

DR技术可极大地提高集群系统的伸缩性,但要求调度器与真实服务器RS都有一块物理网卡连在同一物理网段上,即必须在同一局域网(VLAN)环境。

NAT模式

client --> vs --> rs --> vs --> client

通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器,真实服务器的响应报文处理之后,返回时必须通过调度器,经过调度器时报文的源地址被重写,再返回给客户,完成整个副在调度过程。

TUN 工作模式(隧道工作模式)

客户请求包封装在一个IP tunnel里面,然后发送给RS节点服务器,节点服务器接收到之后解开IP tunnel后,进行响应处理。并且直接把包通过自己的外网地址发送给客户不用经过LB服务器

不足:

1、RS配置复杂(IPIP模块)

2、RS上绑定VIP,风险比较大

FULLNAT(系统不自带)

LVS的DR和NAT模式要求RS和LVS在同一VLAN 中,导致部署成本过高,TUNNEL模式虽然可以跨vlan,但RealServer 上需要部署ipip隧道模块等,网络拓扑上需要连通外网,教为复杂,不易运维,

为解决上述问题,开发出FULLNAT,该模式和NAT模式的区别是:数据包进入时,除了做DNAT,还做SNAT(用户ip-->内网ip),从而实现lvs-真实服务器之间可以跨vlan通讯,真实服务器需要连接内网。类似于地铁站多个闸机。

四、Keepalive+LVS实现

Keepalived 一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能。

(1)在server1和server4上安装Keepalive

[root@server1 ~]# yum install keepalived -y[root@server4 ~]# yum install ipvsadm keepalived -y

(2)编写keepalived.conf配置文件

server1

! Configuration File for keepalivedglobal_defs {notification_email {root@localhost}notification_email_from keepalive@localhostsmtp_server 127.0.0.1 smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.1.100}}virtual_server 172.25.1.100 80 {delay_loop 6lb_algo rrlb_kind DR#persistence_timeout 50protocol TCPreal_server 172.25.1.2 80 {weight 1TCP_CHECK{connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 172.25.1.3 80 {weight 1TCP_CHECK{connect_timeout 3nb_get_retry 3delay_before_retry 3}}}

server4

(3)开启keepalived服务

systemctl start keepalived.service

查看vip

查看LVS状态

keepalive健康检查功能

delay_loop 隔多长时间做一次健康检测,单位为秒

connect_timeout 连接超时时间,单位为秒

nb_get_retry 检测失败后的重试次数,如果达到重试次数仍然失败,将后端从服务器池中移除。

delay_before_retry 失败重试的间隔时间,单位为秒

测试:

注意:因为虚拟的ip重启之后就会失效,故须加入开机启动项rc.local文件并赋予其可执行权限

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。