一、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 实现负载均衡高可用集群相关推荐

  1. LVS+Keepalived-DR模式负载均衡高可用集群

    LVS+Keepalived DR模式负载均衡+高可用集群架构图 工作原理: Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能. VRRP,虚拟路由冗余协议,是针对路由器的 ...

  2. Lvs+keepAlived实现负载均衡高可用集群(DR实现)

    第1章 LVS 简介 1.1 LVS介绍 LVS是Linux Virtual Server的简写,意为Linux虚拟服务器,是虚拟的服务器集群系统,可在UNIX/LINUX平台下实现负载均衡集群功能. ...

  3. linux系统下对网站实施负载均衡+高可用集群需要考虑的几点

    随着linux系统的成熟和广泛普及,linux运维技术越来越受到企业的关注和追捧.在一些中小企业,尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和高可用的Linux集群方案. 那么如何实 ...

  4. lvs负载均衡—高可用集群(keepalived)

    基本概念: 什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统 ...

  5. LVS原理详解及部署之五:LVS+keepalived实现负载均衡高可用

    本文我们主要讲解的是LVS通过keepalived来实现负载均衡和高可用,而不是我们第三篇文章介绍的通过手动的方式来进行配置.通过脚本的方式来显示RS节点的健康检查和LVS的故障切换.此文会通过一个实 ...

  6. LVS+Keepalived实现负载均衡高可用

    使用脚本实现LVS负载均衡 环境: 3台主机 DS:192.168.100.1 RS1:192.168.100.11 RS2:192.168.100.12 VIP:192.168.100.100 安装 ...

  7. 集群介绍 、keepalived介绍 、 用keepalived配置高可用集群

    集群介绍 根据功能划分为两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 实现高可用的开源软件有:heartbeat.ke ...

  8. 集群介绍+用keepalived配置高可用集群(总结)

    1.集群介绍 根据功能划分为两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 高可用集群,英文原文为High Availa ...

  9. linux集群-keepalived介绍-用keepalived配置高可用集群

    2019独角兽企业重金招聘Python工程师标准>>> linux集群介绍: 以功能划分:高可用和负载均衡 高可用集群:通常为两台服务器,一台工作,另外一台作为冗余.实现高可用的开源 ...

最新文章

  1. lr:lr中错误解决方法19种
  2. 解决struts.xml文件提示问题
  3. html保存助手,HTML助手与HTML助手内
  4. git工作区和缓存区概念理解
  5. 使用django创建一个单表查询的图书管理系统
  6. python中的sorted是什么意思_python中sort与sorted区别
  7. vs2017修改服务器地址大全,vs2017更改默认pip安装服务器地址
  8. java 文本框输入监听事件_JAVA GUI 事件监听事件 详解 和 案例.
  9. Android 系统开发系列三
  10. fcntl函数与整数常量O_ACCMODE
  11. debian英文环境中中文输入
  12. keil5打开keil4工程无法下载程序
  13. Towards a Theory of Accountability and Audit
  14. 计算机科学是ei期刊吗,EI计算机期刊有哪些
  15. html文件如何做成链接,如何将文件做成超链接HTM网页?
  16. 前端面试题:如何画一条0.5px的线
  17. Win7重装系统遇到错误怎么办?
  18. matlab斐波那契数列画图,斐波拉契数列 斐波那契数列 matlab程序
  19. vue3 编译报 ESLint: ‘defineProps‘ is not defined no-undef 错误问题
  20. B站品牌UP主内容营销,企业和UP主如何双赢?

热门文章

  1. python数字判断规则_判断Python输入是否为数字、字符(包括正则表达式)-阿里云开发者社区...
  2. mongodb 查询效率_2020年9个好用的MongoDB 图形化界面工具
  3. android fragment 抽屉,android – 更改Fragment中的导航抽屉项目
  4. adb.exe可能被其他程序关闭_木工中央除尘设备系统正式运行的操作程序
  5. intellij2019.1 破jie不了的解决办法
  6. 算法导论学习笔记 6.5 优先队列
  7. oracle数据库的基本错误,Oracle新手最常碰到错误及解决方案
  8. linux 创建匿名ftp,Linux使用pure-ftpd建立匿名ftp的方法
  9. for vue 一行2列_JAVA基础练习试题(2)蓝桥杯 附源代码
  10. 分治法:快速排序,3种划分方式,随机化快排,快排快,还是归并排序快?