如果一台服务器承受过多压力,那么服务器可能会崩溃,所以,我们应该让一台服务器承受的压力在合理范围内,但如果服务器必须承受较大的压力,那么一台服务器可能我发满足我们的要求,所以我们可以使用多台服务器分摊这些压力,当一定数量的服务器作为一个整体对外提供服务,并且分摊压力时, 我们可以称这些服务器为“负载均衡集群

LVS介绍

LVS:Linux Virtual Server,负载调度器,集成内核 章文嵩 阿里

VS: Virtual Server,负责调度

RS: Real Server,负责真正提供服务

L4:四层路由器或交换机

工作原理:VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS

iptables/netfilter:

iptables:用户空间的管理工具
netfilter:内核空间上的框架
流入:PREROUTING --> INPUT
流出:OUTPUT --> POSTROUTING
转发:PREROUTING --> FORWARD --> POSTROUTING
DNAT:目标地址转换; PREROUTING

LVS概念

lvs集群类型中的术语

VS : 调度器

RS:后端服务器(要访问的服务器)

CIP: 客户端IP

DIR: vs 内网的IP

VIP:VS外网的IP(公网IP)

RIP:后端服务器IP

访问流程:CIP <--> VIP == DIP <--> RIP

lvs集群的类型

lvs-nat:修改请求报文的目标IP,多目标IP的DNAT

lvs-dr:操纵封装新的MAC地址

lvs-tun:在原请求IP报文之外新加一个IP首部

lvs-fullnat:修改请求报文的源和目标IP

NAT模式

本质是多个目标IP的DNAT, 通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发

(1)RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP
(2)请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
(3)支持端口映射,可修改请求报文的目标PORT
(4)VS必须是Linux系统,RS可以是任意OS系统

如上图所示,客户端的请求发往LVS服务器,此时客户端请求报文的源IP为CIP,目标IP是LVS的VIP,当LVS收到客户端的请求报文时,会将请求报文里的目标IP修改为后端的某个RIP,RIP1或者RIP2。这时请求报文的源IP是CIP,目标IP变成了RIP,那么报文自然会被LVS转发到对应的RealServer 中,当RealServer收到对应的请求报文时,会发现目标IP就是自己的RIP,于是就会接收报文处理并响应,响应时报文的源 IP 为RIP,目标IP为 CIP,但是CIP和RealServer 不在一个网络内,因为CIP是一个公网IP,所以我们要将所有RealServer的网关指向DIP,当RealServer产生响应报文时,会将响应报文发往网关DIP,而DIP是LVS的内网IP,当LVS收到对应的响应报文时,响应报文的源IP为RIP,目标IP为CIP,此时LVS会将形影报文的源IP修改为VIP,再将响应报文发往客户端,客户端则会收到响应报文;其实上述整个过程是一个DNAT的过程,所以此种LVS模型被称之为LVS-NAT模型。

LVS-DR模式

LVS-DR: 直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变

(1) Director和各RS都配置有VIP

(2) 确保前端路由器将目标IP为VIP的请求报文发往Director

在前端网关做静态绑定VIP和Director的MAC地址

在RS上使用arptables工具
arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP

在RS上修改内核参数以限制arp通告及应答级别
/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce

(3)RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director

(4)RS和Director要在同一个物理网络

(5)请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client

(6)不支持端口映射(端口不能修败)

(7)RS可使用大多数OS系统

当客户端向服务器发起请求报文,报文里源是 客户端的CIP ,随机端口 和 客户端的CMAC,目标是VIP的80端口和路由器的MAC地址MAC1; 接着路由器就把报文转发到内部去,转发时,源 客户端的CIP不变,端口不变,MAC地址变成MAC2;目标还是VIP 80端口,但是MAC地址变成了LVS的mac地址  MAClvs;到达LVS服务器后,LVS服务器需要将请求调度到 RS服务器上去,此时源的CIP和端口不变,而mac地址变成LVS服务器的MAClvs ,目标还是 VIP的 80端口,而mac地址变成了 RS1服务器的 MACrs1,到这里我们可能觉得奇怪,lLVS服务器怎么知道RS服务器的mac地址的? 其实他是通过ARP广播找到的,既然是广播,那么连接他们的就一定是交换机了。此时我们遇到一个重大的问题,到达RS1的报文里,mac地址确实是自己的,但是 VIP 并不是自己的IP地址啊,所以需要在RS服务器上都配上vip的地址,为了使VIP地址不冲突,我们可以关闭 IP地址的广播和应答功能,这样就算是IP地址相同,也不会产生冲突了!好了 现在开始回应了,回应时 源变成了VIP  80端口 mac地址是 MACrs1    而目标变成了 客户端的CIP  随机端口  mac地址变成了 路由器的mac地址 MAC2.我们发现 回来的时候已经不经过LVS服务器了;接着就要从路由器转给客户端了,此时 源还是 VIP  80端口  mac地址是路由器的MAC1 ,而目标是 客户端的CIP  随机端口  和客户端的mac地址 CMAC 。这个就是DR模式的具体步骤。

LVS-DR模型调度实现

实验架构

准备工作

一、添加各主机的路由,使其能够互相通讯

clite

添加相邻路由器的IP地址

[root@localhost ~]# route add default gw 192.168.11.11

LVS服务器

[root@localhost ~]# route add default gw 192.168.12.10

RS1服务器

[root@localhost ~]# route add default gw 192.168.12.10

RS2服务器

[root@localhost ~]# route add default gw 192.168.12.10

路由器

2个网卡,分别配置2个地址段的IP  ,然后开启路由转发功能

[root@localhost ~]# ip a
ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000inet 192.168.11.11/24 brd 192.168.11.255 scope global ens33ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000inet 192.168.12.10/24 brd 192.168.12.255 scope global ens37

将/etc/sysctl.conf文件中的net.ipv4.ip_forward 值改为 1,后执行sysctl -p

[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1

2、部署HTTPserver

在RS1 和 RS2服务器上部署http

[root@localhost network-scripts]# yum install httpd
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# echo "RS1 laobai"> /var/www/html/index.html

[root@localhost network-scripts]# yum install httpd
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# echo "RS2 laobai"> /var/www/html/index.html

我们来测试一下 从客户端能否访问http服务器

[root@localhost ~]# curl 192.168.12.12
RS1 laobai

成功

3、对RS服务器 设置 arp抑制规则,不让IP主动发广播也不应答别人,从而达到一个IP在多台主机上使用

RS1

[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

RS2

[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

4、LVS  RS1 RS2 添加VIP

[root@localhost ~]# ip addr add 192.168.12.100 dev lo

5、配置LVS 集群规则

[root@localhost ~]# yum install ipvsadm -y

添加lvs集群 ,设置调度模式为 rr 轮循模式

[root@localhost ~]# ipvsadm -A -t 192.168.12.100:80 -s rr

将后端两台RS 服务器加入 集群,设置工作模式为集群

[root@localhost ~]# ipvsadm -a -t 192.168.12.100:80 -r 192.168.12.12 -g
[root@localhost ~]# ipvsadm -a -t 192.168.12.100:80 -r 192.168.12.13 -g

工作模式

-g: gateway, dr模式,默认

-i: ipip, tun模式

-m: masquerade, nat模式

     -w weight:权重

查看 ipvsadm 规则信息

6、Client 测试

成功

LVS 高可用 的实现

当后台有某一个服务器宕机时,LVS将不在将客户端的访问数据包发向宕机的主机了。

ldirectord

ldirectord:监控和控制LVS守护进程,可管理LVS规则 

包名:ldirectord-3.9.6-0rc1.1.1.x86_64.rpm

/etc/ha.d/ldirectord.cf 主配置文件

/usr/share/doc/ldirectord-3.9.6/ldirectord.cf 配置模版

/usr/lib/systemd/system/ldirectord.service 服务

/usr/sbin/ldirectord 主程序

/var/log/ldirectord.log 日志

/var/run/ldirectord.ldirectord.pid pid文件

安装包:实现LVS的高可用(在上述实验的基础上添加此服务可实现高可用性)

yum install ldirectord-3.9.6-0rc1.1.1.x86_64.rpm   (安装包)

cp /usr/share/doc/ldirectord-3.9.6/ldirectord.cf /etc/ha.d/(将配置文件复制一份出来)

vim /etc/ha.d/ldirectord.cf  (修改配置文件)(需要将以前在ipvsadm里的规则都清空:ipvsadm -C)

修改过后的配置文件如下

systemctl start ldirectord.service  (启动此服务)

查看ipvsadm -Ln  发现已经自动生成定义的规则了。

在LVS服务器主机上安装http服务然后将主页面定义为sorry server

当所有后台主机都宕机是客户端在访问就会显示出sorry server的提示字样

echo “sorry server” > /var/www/html/index.html

此时如果将后台的两台http服务器都停止服务:systemctl stop httpd

就会显是LVS服务器本机提供的http服务提供sorry server

转载于:https://www.cnblogs.com/huxiaojun/p/9256082.html

Linux九阴真经之大伏魔拳残卷3(LVS)相关推荐

  1. Linux九阴真经之大伏魔拳残卷4 nginx(模型,安装配置,模块)

    I/O模型 1  .同步/异步:关注的是消息通信机制 (既被调用用者是否返回消息) 同步:synchronous,调用者等待被调用者返回消息,才能继续执行 (被调用者完成任务也不通知调用者,调用者需 ...

  2. Linux九阴真经之大伏魔拳残卷6 keepalived

    keepalived 介绍 Keepalived软件期初是专为LVS负载均衡软件设计的,用来管理并监控LVS几区系统汇总各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能.因此Keepali ...

  3. Linux九阴真经之大伏魔拳残卷1(FTP,NFS)

    vsftpd 服务 ​ 文件传输协议:File Transfer Protocol是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式.它属于网络传输协议的应用层. 服务器端:vsftpd ...

  4. Linux九阴真经之大伏魔拳残卷5 nginx

    编译安装 nginx  [root@localhost ~]# yum install pcre-devel openssl-devel zlib-devel -y #安装前提控件 [root@loc ...

  5. Linux九阴真经之大伏魔拳(zabbix 监控)

    zabbix 监控 zabixx zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全 ...

  6. Linux九阴真经之催心掌残卷3

    用户.组和权限 Linux组的类别 用户必须属于一个且只有一个主组 组名同用户名,且仅包含一个用户,私有组 用户的附加组(supplementary group) 一个用户可以属于零个或多个辅助组 c ...

  7. 如何快速清空 Linux 中的大文件

    本文总结了几种快速清空Linux中的大文件方法,快来看看对你有帮助吗? 1. 通过重定向到null清空文件内容 使用 shell 重定向null(不存在的对象)到文件的最简单方法来清空文件内容 # & ...

  8. lpq命令--Linux命令应用大词典729个命令解读

    内容来源于人民邮电出版社<Linux命令应用大词典> 讲述729个命令,1935个例子 学习Linux系统的参考书.案头书,遇到不懂的命令或命令选项一查即可 争取每天都发布内容 本文出自 ...

  9. dhcpd命令--Linux命令应用大词典729个命令解读

    内容来源于人民邮电出版社<Linux命令应用大词典> 讲述729个命令,1935个例子 学习Linux系统的参考书.案头书,遇到不懂的命令或命令选项一查即可 争取每天都发布内容 本文出自 ...

最新文章

  1. 自动增益控制AGC的simulink仿真
  2. windows wim
  3. SAP 电商云 Spartacus UI CI e2e-cypress.sh 脚本文件分析
  4. linux 忽略大小写的查找
  5. Ineedle驱动方式dpdk测试性能
  6. #动态规划 LeetCode 120 三角形最小路径和
  7. lua32位和64位字符串和Uint之间的转换
  8. 游戏策划小白笔记——Common Sense(二)
  9. SSIM和PSNR计算
  10. 数据分析 - 用户中台(学习笔记)
  11. 开心庄园html的代码,开心.html
  12. python算法之lowb排序三人组(冒泡排序,插入排序,选择排序)
  13. 443端口拦截原理浅析
  14. Linux 文件后面带星号
  15. Linux下普通用户使用强制位获取root权限
  16. win7系统问题:——桌面壁纸变黑解决方案
  17. 计算机如何快速返回桌面,打游戏怎么快速返回桌面
  18. Express搭建服务器
  19. 服务器 响应400,加载资源失败:服务器响应的状态为400:spring mvc
  20. 论坛IP签名档PHP源码,简单几步,教你制作自己的显IP签名档

热门文章

  1. mysql 8.064位安装_windows64位下MySQL8.0.15安装教程图文详解
  2. 2022 水花走向哪里?中概 / 恒生 / 投顾 / 中证 500 / 传媒?
  3. CRM的客户数据模型:Siebel Party Data Model (VI)
  4. 变压器直流电阻测试仪RS485串口数据采集接入数据库及MESERP系统方案
  5. 辛酸篇----一套房产八个名字!婚姻岂能如此设防
  6. 【日语五十音图快速记忆法】(看了这个,真的很好记)
  7. IT大学生成长周报 | 第 7 期
  8. 闲谈|如何查阅行业报告和行业数据?
  9. 收钱吧-轻POS接口
  10. unity is checking your license authorization - stay tuned