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读取配置文件管理
主机名 | 主机IP | 备注 |
server1 | 172.25.1.1 |
1.这里使用的是redhat7.6系统 2.防火墙和selinux都关闭 3.server2、3的作为RS机子http访问结果为主机名 4.server1 作为DR机 下载ipvsam 5.server1 添加虚拟ip地址(VIP) 172.25.1.100 |
server2 | 172.25.1.2 | |
server3 | 172.25.1.3 | |
server4 | 172.25.1.4 |
(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文件并赋予其可执行权限
LVS+Keepalive 实现负载均衡高可用集群相关推荐
- LVS+Keepalived-DR模式负载均衡高可用集群
LVS+Keepalived DR模式负载均衡+高可用集群架构图 工作原理: Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能. VRRP,虚拟路由冗余协议,是针对路由器的 ...
- Lvs+keepAlived实现负载均衡高可用集群(DR实现)
第1章 LVS 简介 1.1 LVS介绍 LVS是Linux Virtual Server的简写,意为Linux虚拟服务器,是虚拟的服务器集群系统,可在UNIX/LINUX平台下实现负载均衡集群功能. ...
- linux系统下对网站实施负载均衡+高可用集群需要考虑的几点
随着linux系统的成熟和广泛普及,linux运维技术越来越受到企业的关注和追捧.在一些中小企业,尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和高可用的Linux集群方案. 那么如何实 ...
- lvs负载均衡—高可用集群(keepalived)
基本概念: 什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统 ...
- LVS原理详解及部署之五:LVS+keepalived实现负载均衡高可用
本文我们主要讲解的是LVS通过keepalived来实现负载均衡和高可用,而不是我们第三篇文章介绍的通过手动的方式来进行配置.通过脚本的方式来显示RS节点的健康检查和LVS的故障切换.此文会通过一个实 ...
- LVS+Keepalived实现负载均衡高可用
使用脚本实现LVS负载均衡 环境: 3台主机 DS:192.168.100.1 RS1:192.168.100.11 RS2:192.168.100.12 VIP:192.168.100.100 安装 ...
- 集群介绍 、keepalived介绍 、 用keepalived配置高可用集群
集群介绍 根据功能划分为两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 实现高可用的开源软件有:heartbeat.ke ...
- 集群介绍+用keepalived配置高可用集群(总结)
1.集群介绍 根据功能划分为两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 高可用集群,英文原文为High Availa ...
- linux集群-keepalived介绍-用keepalived配置高可用集群
2019独角兽企业重金招聘Python工程师标准>>> linux集群介绍: 以功能划分:高可用和负载均衡 高可用集群:通常为两台服务器,一台工作,另外一台作为冗余.实现高可用的开源 ...
最新文章
- lr:lr中错误解决方法19种
- 解决struts.xml文件提示问题
- html保存助手,HTML助手与HTML助手内
- git工作区和缓存区概念理解
- 使用django创建一个单表查询的图书管理系统
- python中的sorted是什么意思_python中sort与sorted区别
- vs2017修改服务器地址大全,vs2017更改默认pip安装服务器地址
- java 文本框输入监听事件_JAVA GUI 事件监听事件 详解 和 案例.
- Android 系统开发系列三
- fcntl函数与整数常量O_ACCMODE
- debian英文环境中中文输入
- keil5打开keil4工程无法下载程序
- Towards a Theory of Accountability and Audit
- 计算机科学是ei期刊吗,EI计算机期刊有哪些
- html文件如何做成链接,如何将文件做成超链接HTM网页?
- 前端面试题:如何画一条0.5px的线
- Win7重装系统遇到错误怎么办?
- matlab斐波那契数列画图,斐波拉契数列 斐波那契数列 matlab程序
- vue3 编译报 ESLint: ‘defineProps‘ is not defined no-undef 错误问题
- B站品牌UP主内容营销,企业和UP主如何双赢?
热门文章
- python数字判断规则_判断Python输入是否为数字、字符(包括正则表达式)-阿里云开发者社区...
- mongodb 查询效率_2020年9个好用的MongoDB 图形化界面工具
- android fragment 抽屉,android – 更改Fragment中的导航抽屉项目
- adb.exe可能被其他程序关闭_木工中央除尘设备系统正式运行的操作程序
- intellij2019.1 破jie不了的解决办法
- 算法导论学习笔记 6.5 优先队列
- oracle数据库的基本错误,Oracle新手最常碰到错误及解决方案
- linux 创建匿名ftp,Linux使用pure-ftpd建立匿名ftp的方法
- for vue 一行2列_JAVA基础练习试题(2)蓝桥杯 附源代码
- 分治法:快速排序,3种划分方式,随机化快排,快排快,还是归并排序快?