LVS负载均衡群集—NAT模式实例

目录

群集引用概述

群集的含义

  • Cluster,集群、群集
  • 由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机。

问题

  • 互联网应用中,随着站点对硬件性能、影响速度、服务稳定性、数据可靠性等要求越来越高,单台服务器已经无法满足负载均衡及高可用的要求

解决方法

  • 使用价格昂贵的小型机、大型机
  • 使用多台相对廉价的普通服务器构建集群

通过整合多台服务器,使用lvs来达到服务器的高可用和负载均衡,并以同一个IP地址对外提供相对的服务。

企业群集分类

群集的三种类型

  • 负载均衡群集
  • 高可用群集
  • 高性能运算群集

负载均衡群集(Load Balance Cluster)

  • 提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能
  • LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。例如,“DNS轮询”“反向代理”等

高可用群集(High Availability Cluster)

  • 提高应用系统的可靠性、尽可能的减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果
  • HA的工作方式包括双工和主从两种模式,双工及所有节点同时在线;主从则只有主节点在线,当出现故障时从节点能自动切换为主节点。例如故障切换、双机热备等。

高性能运算群集(High Performance Computer Cluster)

  • 以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力
  • 高性能依赖于“分布式运算”、“合并计算”,通过装用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算机能力。例如,“云计算” “网格计算”等

负载均衡集群架构

第一层负载调度器(Load Balancer或Director)

访问整个集群系统的唯一入口,对外使用所有服务器共有的VIP地址,也成为群集IP地址。通常会配置主,备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用。

第二层服务器池(Srver Pool)

集群所提供的应用服务、由服务池承担,其中每个节点具有独立的RIP地址(真实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负责调度器的容错机制会将其隔离,等待错误排除以后在重新纳入服务器池。

第三层共享储存(Share Storage)

为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。共享储存可以使用NAS设备,或者提供NFS共享服务的专用服务器。

负载均衡的结构

集群负载调度技术的三种工作模式

NAT模式

地址转换

  • Network Address Translation,简称NAT模式
  • 类似于防火墙的私有网络结构,负责调度器作为所有服务器节点的网关,及作为客户机的访问入口也是个节点回应客户机的访问出口,也就是说这个负载调度器会承受双倍的负载压力也是NAT模式最大的缺陷
  • 服务器节点使用私有IP地址转换,与负载调度器位于同一个物理网络,安全性要优于其他两种模式

TUN模式

IP隧道

  • IP Tunnel ,简称TUP模式
  • 采用开放式的网络结构,负载调度器仅作为客户机的访问入口个节点通过internet连接直接回应客户机,而不经过负载调度器
  • 服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信

DR模式

直接路由

  • Direct Routing,简称DR模式
  • 采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于一个物理网络
  • 负载调度器与各节点服务器通过本地网络连接,不需要建立专业的IP隧道

LVS虚拟服务器

Linux Virtual Server

  • 针对linux内核开发的负载均衡解决方案
  • 1998年5月,由我国章文嵩博士创建
  • 官方网站:http://www.linuxvirtualserver.org/
  • LVS 实际上相当于基于IP地址的虚拟化应用,为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法

LVS现在已经成为linux内核的一部分,默认编译为ip_vs模块,必要时能够自动调用。在centos7系统中,以下操作可以手动加载ip_vs模块,并查看当前系统中的ip_vs模块版本信息。

modprobe ip_vs           #加载 ip_vs模块
cat /proc/net/ip_vs #查看 ip_vs版本信息

lvs的负载调度算法

轮询(Round Robin)

  • 将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载

加权轮询(Weighted Round Robin)

  • 根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多
  • 保证性能强的服务器承担更多的访问流量

最少连接(Least Connections)

  • 根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点

加权最少连接(Weighted Least Connections)

  • 在服务器节点的性能差异较大时,可以为真实服务器自动调整权重
  • 性能较高的节点将承担更大比例的活动连接负载

ipvsadm工具

选项 解释
-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 以数字形式显示地址、端口等信息,常与"-"选项组合使用。ipvsadm -ln

NAT模式 LVS负载均衡部署

环境配置

负载调度器:配置双网卡 内网:192.168.239.10(ens33)  外网卡:12.0.0.1(ens38)
二台WEB服务器集群池:192.168.239.20、192.168.239.30
一台NFS共享服务器:192.168.239.40
客户机windows :12.0.0.200

部署NFS共享服务器(192.168.239.40)

#关闭防火墙关闭开机自启
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
#创建两个共享目录文件便于区分并添加权限
cd /opt
mkdir nfs
cd nfs/
mkdir geng wang
chmod 777 geng/ wang/
echo "this is geng test">geng/index.html
echo "this is wang test">wang/index.html
#设置共享策略
vim /etc/exports
/opt/nfs/geng 192.168.239.0/24(rw,sync,no_root_squash)
/opt/nfs/wang 192.168.239.0/24(rw,sync,no_root_squash)
#开启服务
systemctl start rpcbind
systemctl start nfs
systemctl enable nfs
#查看共享目录
showmount -e

测试WEB服务器集群池搜索共享目录

部署两台节点web服务器(192.168.239.20、192.168.239.30 )

第一台部署(192.168.239.20)
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#安装apache web服务
yum install -y httpd
#将共享目录挂载到apache服务站点目录
mount 192.168.239.40:/opt/nfs/geng /var/www/html/
#重启服务
systemctl restart httpd
systemctl enable httpd
#修改网卡配置文件将网关地址指向负载调度器并重启网卡服务
vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=192.168.239.10
systemctl restart network

第二台部署(192.168.239.20)

与第一台一致挂载文件不同

mount 192.168.239.40:/opt/nfs/wang /var/www/html/

负载调度器配置

#添加一块网卡
systemctl stop firewalld
systemctl disable firewalld
setenforce 0 ifconfig #可以查看到以添加的网卡记住名字
cd /etc/sysconfig/network-scripts #切换到网卡配置文件目录
cp ifcfg-ens33 ifcfg-ens37 #复制已有的网卡配置文件进行修改
vim ifcfg-ens37 #删除uuid行修改以下几行NAME=ens37
DEVICE=ens37
IPADDR=12.0.0.1
#GATEWAY=192.168.239.2
#DNS1=8.8.8.8
systemctl restart network #重启网卡服务 vim /etc/sysctl.conf #编辑配置文件开启路由转发功能
net.ipv4.ip_forward = 1
sysctl -p #加载一下 #清空原有防火墙规则添加新的规则
iptables -F
iptables -F -t nat
iptables -t nat -A POSTROUTING -s 192.168.239.0/24 -o ens37 -j SNAT --to 12.0.0.1
iptables -nL -t nat #查看指定表规则 yum install -y ipvsadm #安装ipvsadm
#开启ipvsadm服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl restart ipvsadm.service
systemctl enable ipvsadm.service
#加载模块
modprobe ip_vs
cat /proc/net/ip_vs
ipvsadm -C #清空策略
#指定此策略
ipvsadm -A -t 12.0.0.1:80 -s rr #添加虚拟服务器指定vip地址指定调度策略为轮询
ipvsadm -a -t 12.0.0.1:80 -r 192.168.239.20:80 -m #添加节点服务器及IP地址指定模式lvs
ipvsadm -a -t 12.0.0.1:80 -r 192.168.239.30:80 -m
ipvsadm #加载
ipvsadm -ln #查看状态

客户机配置

修改ip

测试

过会再次刷新

20.LVS负载均衡群集—NAT模式实例的更多相关文章

  1. LVS负载均衡之NAT模式部署

    1.LVS的NAT模式介绍 参考自官网:http://www.linuxvirtualserver.org/zh/lvs3.html 由于IPv4中IP地址空间的日益紧张和安全方面的原因,很多网络使用 ...

  2. LVS负载均衡群集(NAT)

    ----构建NAT模式的LVS群集----------client---------------LVS----------------WEB1-----------WEB2------------NF ...

  3. LVS负载均衡群集部署——NAT模式

    LVS负载均衡群集部署--NAT模式 1.群集应用概述 2.NAT模式LVS负载均衡群集部署 1.群集应用概述: 存在的问题: 互联网应用中,随着站点对硬件性能.响应速度.服务稳定性.数据可靠性等要求 ...

  4. NAT模式 LVS负载均衡群集部署

    NAT模式 LVS负载均衡群集部署的操作步骤 实验环境准备: 负载调度器:内网关 ens33:172.16.10.1,外网关 ens37:12.0.0.1 Web节点服务器1:172.16.10.10 ...

  5. LVS负载均衡群集部署——DR模式

    LVS负载均衡群集部署--DR模式 1.LVS-DR概述 2.部署实验 1.LVS-DR概述: LVS-DR(Linux Virtual Server Director Server)工作模式,是生产 ...

  6. 21.LVS负载均衡群集-DR群集

    LVS负载均衡群集-DR群集 目录 LVS负载均衡群集-DR群集 数据包流向分析 DR模式的特点 LVS-DR中的ARP问题 IP地址冲突 解决办法 路由根据ARP表项,会将新来的请求报文转发给Rea ...

  7. LVS负载均衡之DR模式原理介绍

    LVS基本原理 流程解释: 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间 PREROUTING 链首先会接收到用户请求,判断目标 IP 确定是本机 IP ...

  8. LVS负载均衡群集

    概述 群集的类型:无论是哪种服务器,都至少包括两台节点服务器,而对外表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机.根据群集所针对的目标差异,可以分为以下三个类型: 1.负 ...

  9. LVS集群之NAT模式实例(3)

    LVS集群NAT模式实例 1. 实验拓扑图 DS 必须有两块网卡,需要在上面做NAT. 2. 实验环境 3台CentOS6.4 64bit的服务器. 类型 IP DR eth0:10.20.73.20 ...

随机推荐

  1. SpringMVC快速使用——基于注解

    SpringMVC快速使用--基于注解 1.引入依赖 <!-- 定义Spring版本 --> <properties> <spring.verson>5.3.8&l ...

  2. 【.NET6+Modbus】Modbus TCP协议解析、仿真环境以及基于.NET实现基础通信

    前言:随着工业化的发展,目前越来越多的开发,从互联网走向传统行业.其中,工业领域也是其中之一,包括各大厂也都在陆陆续续加入工业4.0的进程当中. 工业领域,最核心的基础设施,应该是与下位硬件设备或程序 ...

  3. BUCK电路和BL8033使用记录

    我开始时用的是MPS的MP1584EN,这个芯片各方面都挺不错的.有次老大让我画个降压电路,看到用的是MP1584就说国外的芯片太贵,让我用上海贝岭的BL8033.BL8033确实很好用,虽然它没有1 ...

  4. Go汇编语法和MatrixOne使用介绍

    目录 MatrixOne数据库是什么? Go汇编介绍 为什么使用Go汇编? 为什么不用CGO? Go汇编语法特点 操作数顺序 寄存器宽度标识 函数调用约定 对写Go汇编代码有帮助的工具 avo tex ...

  5. Envoy熔断限流实践(一)基于Rainbond插件实现熔断

    Envoy 可以作为 Sevice Mesh 微服务框架中的代理实现方案,Rainbond 内置的微服务框架同样基于 Envoy 实现.本文所描述的熔断实践基于 Rainbond 特有的插件机制实现. ...

  6. 『忘了再学』Shell基础 — 12、用户自定义变量

    目录 1.变量定义 2.变量调用 3.变量的修改 4.查看变量 (1)-u选项说明: (2)-x选项说明: (3)set命令说明: 5.变量删除 1.变量定义 变量正确定义. 格式:变量名=" ...

  7. css的过渡transition和动画animation

    过渡 过渡(transition)是CSS3中具有颠覆性的特性之一,我们可以在不使用Flash动画或JavaScript的情况下,当元素从一种样式变换为另一种样式时元素添加效果.过渡动画:是从一个状态 ...

  8. 了解mybatis

    什么是mybatis? MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作.MyBati ...

  9. 20220303模拟赛题解and总结

    目录 总结 A.不幸的7 B.选举 C. 差的绝对值之和 D. 路径通过 总结 初一第一 一般,最后一题没打好 不难发现,教练出水了,可能是信心赛 A.不幸的7 暴力,没有逻辑可言 #include& ...

  10. 启动mysql报错ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)

    mysql之前还好好的,突然就启动不了了,我也很纳闷,原来是服务没有启动 netstat -ntlp 后,发现并没有启动 于是我试着启动mysql service mysqld start 查看了my ...