目录

  • 一、LVS是什么?
  • 二、实验环境
  • 1.封装虚拟机
  • 2.虚拟机快照
  • 三、进行lvs集群的搭建



一、LVS是什么?

1、LVS是Linux Virtual Server的简写,即Linux虚拟服务器,是一个虚拟的服务器集群系统,可伸缩网络服务的几种结构。lvs 负载均衡根据目标地址和目标端口实现用户请求转发,本身不产生流量,只做用户请求转发,目前是负载均衡性能最好的集群系统。
2、实现虚拟网络服务的主要技术中,IP负载均衡技术是在负载调度器的实现技术中效率最高的。在已有的IP负载均衡技术中,主要有通过网络地址转换将一组服务器构成一个高性能的、高可用的虚拟服务器,即VS/NAT技术;通过IP隧道实现虚拟服务器的方法VS/TUN ;通过直接路由实现虚拟服务器的方法VS/DR。它们可以极大地提高系统的伸缩性,这三种技术是LVS集群中实现的三种IP负载均衡技术。
3、LVS工作原理:客户端访问公司的外部负载均衡服务器,则用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器。终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,所以无论用户访问的是哪台真实服务器,得到的服务内容都是相同的。

二、实验环境

1.封装虚拟机

首先用镜像的方式创建一个新的虚拟机

lvs端口负载 lvs搭建负载均衡_负载均衡


lvs端口负载 lvs搭建负载均衡_负载均衡_02


lvs端口负载 lvs搭建负载均衡_负载均衡_03


lvs端口负载 lvs搭建负载均衡_lvs端口负载_04


lvs端口负载 lvs搭建负载均衡_服务器_05


真机挂载镜像

lvs端口负载 lvs搭建负载均衡_lvs端口负载_06


进入系统后关闭虚拟机的防火墙和selinux

lvs端口负载 lvs搭建负载均衡_IP_07


lvs端口负载 lvs搭建负载均衡_服务器_08


禁用NetworkManage的网络管理方式

lvs端口负载 lvs搭建负载均衡_IP_09


下图为真机的IP

lvs端口负载 lvs搭建负载均衡_IP_10


配置虚拟机的网络,修改hostname为server1

lvs端口负载 lvs搭建负载均衡_IP_11


设定成功

lvs端口负载 lvs搭建负载均衡_IP_12


编辑/etc/hosts域名解析文件

lvs端口负载 lvs搭建负载均衡_负载均衡_13


以上设定完毕之后,真机、虚拟机即可Ping通

lvs端口负载 lvs搭建负载均衡_lvs端口负载_14

2.虚拟机快照

配置server1的软件仓库

lvs端口负载 lvs搭建负载均衡_服务器_15


安装所需工具

lvs端口负载 lvs搭建负载均衡_lvs端口负载_16


关机!!(清理和压缩磁盘文件操作必须在关机之后做!)

lvs端口负载 lvs搭建负载均衡_IP_17


此时server1的磁盘文件为21G,

lvs端口负载 lvs搭建负载均衡_IP_18


清理磁盘:virt-sysprep -d rhel7.7-small

lvs端口负载 lvs搭建负载均衡_lvs端口负载_19


压缩操作,将原镜像文件压缩成名为small.qcow2的文件

lvs端口负载 lvs搭建负载均衡_IP_20


此时母盘仅546M

lvs端口负载 lvs搭建负载均衡_服务器_21


用清理和压缩之后得到的磁盘文件(母盘)创建虚拟机快照文件(server1 、2、3)

lvs端口负载 lvs搭建负载均衡_IP_22


lvs端口负载 lvs搭建负载均衡_lvs端口负载_23


使用导入的方式添加快照文件,得到三台虚拟机。同样的,修改各虚拟机的主机名、网卡配置文件

lvs端口负载 lvs搭建负载均衡_负载均衡_24

三、进行lvs集群的搭建

真机使用ssh命令,连接三台虚拟机,server1作为DR(调度器),server2、3作为RS(真实服务器)。

工作过程:C(Client) ----> DR —> RS ----> C(Client)。

原理:LVS通过控制IP来实现负载均衡。ipvsadm是其具体的实现模块。

ipvsadm的主要作用:安装在调度器上面,在调度器上虚拟一个对外访问的IP(VIP)。用户访问VIP,到达调度器,调度器根据一定的规则选择一个真实服务器,处理完成后然后返回给客户端数据。

lvs端口负载 lvs搭建负载均衡_IP_25


server1安装ipvsadm(用于管理LVS的策略规则)

lvs端口负载 lvs搭建负载均衡_IP_26


书写策略:在server1上虚拟一个对外访问的IP:172.25.36.100(vip),即虚拟服务的ip地址。

lvs端口负载 lvs搭建负载均衡_IP_27


ipvsadm -A 添加规则;-t tcp协议;-s 调度;rr 轮叫(调度方式);-a向tcp虚拟服务添加 -r real server;-g 直连即DR模式

lvs端口负载 lvs搭建负载均衡_负载均衡_28


ipvsadm -ln:查看当前连接情况(-ln不用解析),Forward 转发方式,当前是路由转发;Weight 权重;

ActiveConn 当前活跃的连接数;InActConn 当前不活跃的连接数;

lvs端口负载 lvs搭建负载均衡_IP_29


server2和server3安装httpd服务,并开启

lvs端口负载 lvs搭建负载均衡_服务器_30


lvs端口负载 lvs搭建负载均衡_服务器_31


此时真机使用curl 172.25.36.2可以显示server的发布页面;但curl 172.25.36.100没有反应,这是因为LVS-DR集群类型要求,当用户向vip发起请求时,调度器和真实服务器上必须都要有vip,因此需要给server2和server3添加虚拟IP。

lvs端口负载 lvs搭建负载均衡_lvs端口负载_32


分别给server2和server3添加虚拟IP

lvs端口负载 lvs搭建负载均衡_IP_33


lvs端口负载 lvs搭建负载均衡_lvs端口负载_34


此时真机使用curl 172.25.0.100,出现轮叫的显示RS的Apache发布页面的内容

lvs端口负载 lvs搭建负载均衡_lvs端口负载_35


ARP协议是将IP地址映射为MAC地址的协议,其在协议上使用ARP请求及ARP应答报文来实现,真机查看vip所对应的MAC,此时正是server1的MAC

lvs端口负载 lvs搭建负载均衡_lvs端口负载_36


lvs端口负载 lvs搭建负载均衡_lvs端口负载_37


当真机执行arp -d 删除指定的虚拟IP时,此时不能过滤得到172.25.36.100的MAC地址。

lvs端口负载 lvs搭建负载均衡_服务器_38


但Ping之后,又可以得到。此时vip所对应的MAC,此时是server2的MAC

lvs端口负载 lvs搭建负载均衡_负载均衡_39


lvs端口负载 lvs搭建负载均衡_IP_40


curl 172.25.36.100,只出现了server2的发布页面,说明此时客户端向vip发起请求时,并没有经过调度器,而是直接到达了真实服务器server2。

lvs端口负载 lvs搭建负载均衡_lvs端口负载_41


因此应该给server2和server3安装arptables(用于管理内核中的ARP包过滤规则表),设定APR配置规则,因为DR模式要求服务器节点应该禁用设备的APR响应

lvs端口负载 lvs搭建负载均衡_lvs端口负载_42


arptable_filter 只有一个表 filter ,不指定 -t 表名 时默认就是 filter 表。

filter 表有两个链,一个是INPUT,表示外面发进来的 ARP 包;另外一个是 OUTPUT,表示本机发出的 ARP 包。

-A:向规则链中追加规则;

-d:指定要匹配ARP包的目的IP地址;

-j:指定满足规则的添加时的目标;

-s:指定要匹配ARP包的源ip地址;

以下命令表示:当数据包的目的地址是172.25.36.100时就丢弃该数据包,当从本机发出的数据包IP是172.25.36.100时,伪装成是IP是172.25.36.2。设定完毕,保存arptables规则,此时重启arptables服务后,即可看到所添加的规则。

lvs端口负载 lvs搭建负载均衡_lvs端口负载_43


将server2的arptables规则复制给server3,server3进行相应的修改

lvs端口负载 lvs搭建负载均衡_服务器_44


设定完毕,server3也可看到所添加的规则

lvs端口负载 lvs搭建负载均衡_负载均衡_45


此时当真机执行arp -d 删除指定的虚拟IP,ping 之后,过滤得到172.25.36.100的MAC地址又是server1的MAC地址

lvs端口负载 lvs搭建负载均衡_服务器_46


使用curl 172.25.36.100,又出现轮叫

lvs端口负载 lvs搭建负载均衡_IP_47


若server1也安装了httpd服务

lvs端口负载 lvs搭建负载均衡_服务器_48


但curl 172.25.36.100不会访问server1的80

lvs端口负载 lvs搭建负载均衡_IP_49