首页 > 其他分享 >LVS负载均衡群集,NAT模式和DR模式

LVS负载均衡群集,NAT模式和DR模式

时间:2023-09-17 18:56:10浏览次数:29  
标签:LVS ifcfg ipvsadm 192.168 调度 etc 模式 NAT 服务器

一、集群

1.1集群的含义

群集   集群    cluster
特点:由多台主机构成,都干同样的一件事,对外展现为一个整体

1.2群集的类型:

1)负载均衡群集 LB
提高系统响应效率,处理更多的访问请求,减少延迟,实现高并发、高负载的能力
典型代表:软件类:LVS  Nginx  HAProxy 等     硬件类:F5  绿盟
2)高可用群集 HA
提高系统可靠性,减少中断时间,确保服务的连续性(通常使用 N 个 9 来代表高可用的指标)
典型代表:Keepalived    heartbeat
3)高性能运输群集 HPC
通过云计算或分布式计算获取高性能的CPU、内存等资源,来提高整体运算能力

1.3LVS 的三种工作模式:

1)NAT 地址转换
调度器会作为所以节点服务器的默认网关,也是客户端的访问入口和节点服务器返回响应消息的出口,也就是说调度器会承载双向数据流量的负载压力,可能会成为整个群集的性能瓶颈。由于节点服务器都处于内网环境,使用私网IP地址,所以具有一定安全性。
2)TUN IP隧道 IP Tunnel
调度器仅作为客户端的访问入口,节点服务器的响应消息是直接返回给客户端的,不需要经过调度器。但是由于节点服务器需要部署在不同位置的公网环境中,需要具有独立的公网IP,调度器与节点服务器是通过专用的IP隧道实现相互通信的,因此IP隧道模式的成本较高、安全性较低,且IP隧道需要额外的封装和解封装,性能会受到一定的影响。
3)DR 直接路由  Direct Routing
调度器仅作为客户端的访问入口,节点服务器的响应消息是直接返回给客户端的,不需要经过调度器。(与NAT模式的区别)
节点服务器与调度器是部署在同一个物理网络内,因此不需要建立专用的IP隧道。(与TUN模式的区别)
DR模式是企业首选的LVS模式。

1.4LVS 调度算法

rr 轮询    wrr 加权轮询   sh 源地址哈希   dh 目的地址哈希   lc 最小连接   wlc 加权最小连接   lblc 基于地址的最小连接

1.5LVS-NAT模式配置步骤:

1)配置 NFS 共享存储
2)节点服务器安装 Web 服务,注意:默认网关要指向 调度器的IP地址,测试的时候关闭连接保持
3)调度服务器要开启 IP路由转发 功能和设置 SNAT 等 iptables 规则,安装 ipvsadm 工具,配置虚拟服务器和真实节点服务器相关配置
4)客户端测试的时候网关要指向 调度器的IP地址

 1.6ipvsadm 工具选项说明:

-A:添加虚拟服务器
-D:删除整个虚拟服务器
-s:指定负载调度算法(轮询:rr、加权轮询:wrr、最少连接:lc、加权最少连接:wlc)
-a:表示添加真实服务器(节点服务器)
-d:删除某一个节点
-t:指定 VIP地址及 TCP端口
-r:指定 RIP地址及 TCP端口
-m:表示使用 NAT群集模式
-g:表示使用 DR模式
-i:表示使用 TUN模式
-w:设置权重(权重为 0 时表示暂停节点)
-p 60:表示保持长连接60秒(默认关闭连接保持)
-l:列表查看 LVS 虚拟服务器(默认为查看所有)
-n:以数字形式显示地址、端口等信息,常与“-l”选项组合使用。ipvsadm -ln

二、LVS-NAT模式

负载调度器:内网关 ens33:192.168.249.100,外网关 ens36:12.0.0.1
Web节点服务器1:192.168.249.101
Web节点服务器2:192.168.249.102
NFS服务器:192.168.249.103
客户端:12.0.0.12

2.1配置NFS共享(192.168.249.103)

#关闭防火墙

systemctl disable --now firewalld.service
setenforce 0

#安装nfs服务

yum install nfs-utils rpcbind -y

#新建目录,并创建站点文件
cd /opt/
mkdir nfs
cd nfs
mkdir gongxiang1 gongxiang2               #创建文件夹
chmod 777 gongxiang1 gongxiang2        #赋予其他用户权限
echo "this is gongxiang1" >gongxiang1/index.html      #写共享文件
echo "this is gongxiang2" >gongxiang2/index.html      #写共享文件
#设置共享策略
vim /etc/exports
/opt/nfs/gongxiang1 192.168.249.0/24(rw,sync,no_root_squash)
/opt/nfs/gongxiang2 192.168.249.0/24(rw,sync,no_root_squash)
#开启服务
systemctl start rpcbind                      #一般先开启rpcbind
systemctl start nfs                            #后开启nfs
#查看当前共享目录
showmount -e

2.2配置节点服务器(192.168.249.101  192.168.249.102)

WEB1:

#关闭防火墙
systemctl disable --now firewalld.service
setenforce 0
#安装httpd服务
yum install httpd -y
#查看nfs服务
showmount -e 192.168.249.103
#挂载站点
mount 192.168.249.103:/opt/nfs/gongxiang1 /var/www/html/
#开启httpd服务
systemctl start httpd
#指定网关
vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=192.168.249.100
DNS1=8.8.8.8
#重启网络服务
systemctl restart network

 

WEB2:

#关闭防火墙
systemctl disable --now firewalld.service
setenforce 0
#安装httpd服务
yum install httpd -y
#查看nfs服务
showmount -e 192.168.249.103
#挂载站点
mount 192.168.249.103:/opt/nfs/gongxiang2 /var/www/html/
#开启httpd服务
systemctl start httpd
#指定网关
vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=192.168.249.100
DNS1=8.8.8.8
#重启网络服务
systemctl restart network

2.3配置负载调度器

#关闭防火墙
systemctl disable --now firewalld.service
setenforce 0
#安装ipvsadm
yum install -y ipvsadm*
#添加网卡,配置网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens33
vim ifcfg-ens36
#打开路由转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p  #查看配置的路由转发
#防火墙做策略,先查看策略
iptables -nL -t nat
#清空策略
iptables -F
#添加策略
iptables -t nat -A POSTROUTING -s 192.168.249.0/24 -o ens36 -j SNAT --to 12.0.0.1 
#查看策略
iptables -nL -t nat
#加载LVS内核模块
modprobe ip_vs
cat /proc/net/ip_vs
#开启ipvsadm服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
#清空策略
ipvsadm -C
#制定策略
#指定IP地址 外网的入口  -s rr  轮询
ipvsadm -A -t 12.0.0.1:80 -s rr
#先指定虚拟服务器再添加真实服务器地址,-r:真实服务器地址 -m指定nat模式
ipvsadm -a -t 12.0.0.1:80 -r 192.168.249.101:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 192.168.249.102:80 -m
#开启服务
ipvsadm
查看策略
ipvsadm -ln

3.0测试

用客户端访问调度器,自动轮询显示web1和web2的内容。

三、LVS-DR模式

DR模式,负载调度器接收到了客户端的请求,将客户端的请求发送给WEB服务器,WEB服务器处理好之后,不通过调度器,而是直接把处理结果发回给客户端。

DR模式,在之后NAT模式的基础上,还利用原来的NFS配置,NFS服务器不变,

3.1配置负载调度服务器

yum install ipvsadm.x86_64 -y    #安装服务

#配置虚拟IP地址(VIP:192.168.217.50)

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
#重启网络服务、启动网卡

ifdown ifcfg-ens33:0 ifup ifcfg-ens33:0

#调整/proc响应参数

vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
#刷新配置

sysctl -p

#加载模块

modprobe ip_vs
cat /proc/net/ip_vs
#配置负载分配策略,并启动服务

ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
#清空ipvsadm,并做策略

##添加真实服务器-a  指定VIP地址及TCP端口-t   指定RIP地址及TCP端口 -r 指定DR模式-g
ipvsadm -C
ipvsadm -A -t 192.168.217.50:80 -s rr
ipvsadm -a -t 192.168.217.50:80 -r 192.168.217.110:80 -g
ipvsadm -a -t 192.168.217.50:80 -r 192.168.217.120:80 -g
#保存设置

ipvsadm
ipvsadm -ln

3.2配置WEB服务器

还是利用原来的挂载服务,添加回环网卡,修改回环网卡名,IP地址,子网掩码

cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0


DEVICE=lo:0
IPADDR=192.168.249.50
NETMASK=255.255.255.255
ONBOOT=yes

#设置路由

route add -host 192.168.249.50 dev lo:0
route -n                                                          #查看
#开机执行命令

vim /etc/rc.d/rc.local
route add -host 192.168.249.50 dev lo:0
chmod +x /etc/rc.d/rc.local            #赋予执行权限

调整 proc 响应参数

添加系统只响应目的IP为本地IP的ARP请求

系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1  
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

sysctl -p    #查看

第二台WEB服务器同样的配置

4测试

用12.0.0.12的客户端来访问调度器,显示WEB服务器内容,轮询显示。

标签:LVS,ifcfg,ipvsadm,192.168,调度,etc,模式,NAT,服务器
From: https://www.cnblogs.com/lwqpl/p/17709078.html

相关文章

  • 深入探讨Spring Security的OAuth2客户端模式
    介绍OAuth2是一种常见的身份验证和授权协议,它允许用户授权第三方应用程序访问他们的资源。SpringSecurity是一个强大的安全框架,它提供了OAuth2客户端模式的支持。在本文中,我们将深入探讨SpringSecurity的OAuth2客户端模式。OAuth2客户端模式OAuth2客户端模式是一种简单的身份......
  • 趣解设计模式之《新娘到底叫啥名啊?》
    〇、小故事前一段时间,在网上流传了这么一段视频,视频是一对新人的婚礼现场,主持人让新郎当着众多亲戚朋友的面,大声对新娘表达自己的爱意,小伙子自信满满大声的对众人说:“我爱你,周秀楠!”。但是台下的新娘却一脸茫然,从表情中根本没有看出一丝丝因为新郎的表白而开心的喜悦。主持人......
  • 简单工厂模式练习:简单工厂模式在农场系统中实现
    前言对于产品种类相对较少的情况,考虑使用简单工厂模式。使用简单工厂模式的客户端需要传入工厂类的参数,不需要关系如何创建对象的逻辑,可以很方便地创建所需产品。下面我们来使用简单工厂模式创建一个农场管理系统一、简单工厂模式简单工厂模式中创建实例的方法通常为静态方法,因此简......
  • LVS+Keepalived群集
    LVS+Keepalived群集Keepalived是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP(VIP),主服务器会发送VRRP通告信息给备份服务器,当备份服务器......
  • 软件设计模式系列之七——原型模式
    1模式的定义原型模式(PrototypePattern)是一种创建型设计模式,其主要目的是通过复制现有对象来创建新对象,而不是使用构造函数。原型模式将对象的创建委托给原型对象,通过克隆(复制)来生成新对象,这种方式可以避免对象的重复初始化,提高性能,并使对象的创建更加灵活和动态。原型模式的关......
  • 模板方法模式
    在接口中定义算法步骤,子类实现算法步骤。拉起容器时既可以通过docker,也可以通过containerd。packagemainimport"fmt"typecontainerHandlestruct{ ccontainerHandler}typecontainerHandlerinterface{ create()error start()error}func(hcontainerHandl......
  • 迭代器模式
    迭代器能在不暴露复杂数据结构内部细节的情况下遍历其中所有的元素。packagemainimport"fmt"typeIteratorinterface{ hasNext()bool getNext()*User}typeCollectioninterface{ createIterator()Iterator}typeUserstruct{ namestring ageint}t......
  • 设计模式7大原则
    开闭原则对扩展开放,对修改关闭。依赖倒置原则面向接口编程。单一职责原则一个类、接口、方法只负责一项职责。接口隔离原则接口中方法尽量少。迪米特法则尽量降低类与类之间的耦合。里氏替换原则引用父类的地方能使用其子类。合成复用原则尽量使用合成/聚合的方式,不是使用继......
  • 【设计模式】模板方法模式Template Method:实现同一模板框架下的扩展
    (目录)模板方法模式的原理和代码实现都比较简单,也被广泛应用,但是因为使用继承机制,副作用往往盖过了主要作用,所以在使用时尤其要小心谨慎。原理模板方法模式原始定义是:在操作中定义算法的框架,将一些步骤推迟到子类中。模板方法让子类在不改变算法结构的情况下重新定义算法的某......
  • 【设计模式】访问者模式Visitor:实现对象级别的矩阵结构
    (目录)访问者模式:一个原理看似很简单,但是理解起来有一定难度,使用场景相对较少的行为型模式:它能将算法与其所作⽤的对象隔离开来假如有这样⼀位⾮常希望赢得新客户的资深保险代理⼈。他可以拜访街区中的每栋楼,尝试向每个路⼈推销保险。所以,根据⼤楼内组织类型的不同,他可......