集群三种模式 及 lvs-nat配置

本文详细介绍了Linux Virtual Server (LVS) 的概念、构成和集群类型,重点讲解了NAT、TUN和DR三种工作模式。其中,DR模式通过直接路由实现负载均衡,无需修改IP地址。在实例中展示了如何配置LVS DR模式的HTTP负载均衡,包括环境设置、服务器配置和LVS调度器的设定,最终通过验证确认了负载均衡的正确性。
摘要由CSDN通过智能技术生成

目录

何为LVS?

LVS的构成

何为群集?

群集的类型

NAT模式

TUN模式

LVS  DR 模式

lvs的DR模式配置http负载均衡

环境:

部署:

部署

LVS配置定义集群


何为LVS?

​ LVS——Linux Virtual Server,即Linux虚拟服务器(虚拟主机、共享主机),虚拟主机在这里就不再赘述了,相信大家都明白。

​ 而LVS是一个虚拟的服务器集群系统,其实现的是一个高性能、高可用的服务器。目前LVS已经被集成到Linux内核模块中。

LVS的构成

①从物理层面上讲,LVS的主要组成:

负载调度器(load balancer/ Director),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。
服务器池(server pool/ Realserver),是一组真正执行客户请求的服务器,执行的服务一般有WEB、MAIL、FTP和DNS等。
共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务
如下图所示:
 

补充:一般为了实现高可用会使用两台以上的调度服务器,作为备份,提高安全性。(后面的实验部署DR模式+keepalive会使用两台负载调度服务器)

②从软件层面上讲,LVS 由2部分程序组成,包括 ipvs 和 ipvsadm。

1.ipvs(ip virtual server):工作在内核空间的一段代码,叫ipvs,是真正生效实现调度的代码。

2.ipvsadm:另外一段是工作在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server),然后由内核代码实现真正的调度算法及功能。


何为群集?

​ 群集,或者说集群,英文是cluster,由多台主机构成,但是对外只表现为一个整体(同一服务),客户端是无法察觉到究竟有多少台服务器,并且对自己访问的是哪一台真实服务器一无所知。

​ 根据针对目标差异,可将群集分为负载均衡群集、高可用群集(HA)、高性能运算群集三类。

群集的类型


负载均衡群集
​ 负载均衡+群集,可以提高应用系统的响应能力、处理更多访问请求、减少延迟,从而获得高并发、高负载的整体性能。

​ 当然,负载均衡的处理并不是简单的平均分配,而是依赖于实际情况下的调度分流算法。而算法就涉及开发人员的思想和生产环境的实际情况了。

高可用群集
​ 提高应用系统的可靠性、减少主断时间,确保服务的连续性,达到高可用的容错效果。

​ HA(high availability)的工作方式包括双工和主从两种模式。这就涉及到“去中心化”和“中心化”思想,而上一篇文章所介绍的MHA就是典型的master高可用群集的架构模式,只不过我们使用的是MySQL数据库,从而搭成该高可用的架构。

高性能运算群集
​ 高性能运算群集——High Performance Computer Cluster,提高应用系统的CPU运算速度、扩展硬件资源和分析能力,获得相当于大型、超级计算机的高性能运算能力。

​ 高性能运算群集的高性能依赖于“分布式运算”、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型计算机具备的计算能力。

负载均衡群集是目前企业用的最多的群集类型,群集的负载调度技术有三种工作模式:地址转换——NAT、IP隧道——ip Tunnel、直接路由——Directing Route。

NAT模式

NAT(Network Address Translation)网络地址转换,内网主机可以通过路由NAT实现访问外网主机

LVS-NAT 模型类似于 DNAT,工作机制与 DNAT 一样,当客户端请求的是集群服务时,LVS 修改请求报文的目标地址为 RIP,转发至后端的 RealServer,并修改后端响应报文的源地址为 VIP,响应至客户端。

LVS-NAT的特点:
RS和DIP应该使用私网地址,且RS的网关要指向DIP

请求和响应报文都要经由director转发,所以配置时需要将director的转发功能开启,极高负载的场景中,director可能会成为系统性能瓶颈

支持端口映射

RS可以使用任意OS

RS的RIP和Director的DIP必须在同一IP网络
 

TUN模式

LVS-TUN的特点:

  • RIP,DIP,VIP必须是公网地址
  • RS的网关不能指向DIP
  • 请求报文必须经由director调度,但响应报文必须不能经由director
  • 不支持端口映射
  • RS的OS必须支持隧道功能

lvs-fullnat:keepalived

  • director通过同时修改请求报文的目标地址和源地址进行转发

lvs-fullnat的特点:

  • VIP是公网地址,RIP和DIP是私网地址,RIP与DIP无须在同一网络中
  • RS接收到的请求报文的源地址为DIP,因此要响应给DIP
  • 请求报文和响应报文都必须经由Director
  • 支持端口映射机制
  • RS可以使用任意OS
     

LVS  DR 模式

  1. client请求资源,请求报文经过路由到达交换机,然后交换机查看目标IP为VIP,则修改源和目标MAC后再封装报文发送给director,IPVS则将报文源MAC修改为DIP的MAC地址,目标MAC修改为RIP的MAC地址,然后经POSTROUTING链发送出去,通过交换机转送给RS。DR模式会lo接口上配置一个虚拟地址VIP,当RS收到报文拆封发现目标MAC地址是自己,目标IP地址也是自己的lo地址VIP,就会处理请求。
  2. RS响应请求,由于请求报文的目标IP是VIP,所以响应报文就通过lo接口传送到eth0网卡发出。

特点

  • 保证前端路由将目标地址为VIP的报文全部发送给DS,而不是RS
  • RS的RIP可以使用私有地址,但也可以使用公网地址
  • RS和director必须在同一物理网络中
  • 请求报文有director调度,但响应报文不一定经由director
  • 不支持端口映射
  • RS的网关不能指向DIP

调度算法:

  • rr,轮询算法(round robin),调度器会将所有的请求平均分配给每个服务器。
  • wrr,加权轮询(weight round robin),给每个RS分配权重比例。
  • lc,最小连接(least connections),把新请求分配到当前连接数最小的服务器上,,集群系统的真实服务器具有相近的系统性能,采用最小连接调度算法可以比较好地均衡负载
  • wlc,加权最小连接(weight least connections),在lc算法上为每台服务器分配上权重比
     

lvs的DR模式配置http负载均衡

环境:

director:

                dip: 192.168.75.143

                vip: 192.168.75.145

RS1:        192.168.75.144

RS2:        192.168.75.142

部署:

在RS1上配置httpd,使网页可以访问

//关防火墙和selinux
[root@RS1 ~]# systemctl stop firewalld
[root@RS1 ~]# systemctl disable firewalld
[root@RS1 ~]# cat /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 


//编辑httpd
[root@RS1 ~]# yum install httpd

[root@RS1 ~]# vim /var/www/html/index.html
[root@RS1 ~]# cat /var/www/html/index.html 
this is RS1 
ip: 192.168.75.144

//安装net-tools工具
[root@RS1 ~]# yum install -y net-tools

在RS2上配置httpd,使网页可以访问

//关闭防火墙和selinux
[root@RS2 ~]# systemctl stop firewalld
[root@RS2 ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@RS2 ~]# setenforce 0
[root@RS2 ~]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted


//下载配置httpd
[root@RS2 ~]# yum install -y httpd

[root@RS2 ~]# cat /var/www/html/index.html
This is RS2
ip: 192.168.75.142

//安装net-tools工具
[root@RS2 ~]# yum install -y net-tools

LVS上安装ipvsadm工具

yum install -y ipvsadm

网卡配置

//将为网关设为lvs的dip
[root@RS1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.75.143  0.0.0.0         UG    100    0        0 ens33
192.168.75.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
[root@RS1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE="Ethernet"
BOOTPROTO="static"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.75.144
NETMASK=255.255.255.0
GATEWAY=192.168.75.143
DNS1=223.5.5.5

//RS2同理
[root@RS2 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.75.143  0.0.0.0         UG    100    0        0 ens33
192.168.75.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
[root@RS2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE="Ethernet"
BOOTPROTO="static"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.75.142
NETMASK=255.255.255.0
GATEWAY=192.168.75.143
DNS1=223.5.5.5

部署

开启lvs主机的转发功能

[root@lvs ~]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward=1

//使其生效
[root@lvs ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@lvs ~]#

LVS配置定义集群

//LVS配置定义集群
[root@lvs ~]# ipvsadm -A -t 192.168.75.145:80 -s rr
//                    添加 tcp   vip          指定调度算法  轮询

//将后端的RS加入集群:
[root@lvs ~]# ipvsadm -a -t 192.168.75.145 -r 192.168.75.142 -m
[root@lvs ~]# ipvsadm -a -t 192.168.75.145 -r 192.168.75.144 -m

//查看
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress :Port Scheduler Flags
    ->RemoteAddress:Port    Forward weight ActiveConn InActConn
TCP  172.16.75.145:80  rr
    ->192.168.75.144:80    Masq    1    0    0
->    192.168.75.142:80    Masq    1    0    0

//验证
[root@localhost ~]# for i in $(seq 10);do curl 192.168.75.145:80;done
This is RS1 ip: 192.168.75.144
This is RS2 ip: 192.168.75.142
This is RS1 ip: 192.168.75.144
This is RS2 ip: 192.168.75.142
This is RS1 ip: 192.168.75.144
This is RS2 ip: 192.168.75.142
This is RS1 ip: 192.168.75.144

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值