20.LVS负载均衡群集—NAT模式实例
LVS负载均衡群集—NAT模式实例
目录
- 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模式实例的更多相关文章
- LVS负载均衡之NAT模式部署
1.LVS的NAT模式介绍 参考自官网:http://www.linuxvirtualserver.org/zh/lvs3.html 由于IPv4中IP地址空间的日益紧张和安全方面的原因,很多网络使用 ...
- LVS负载均衡群集(NAT)
----构建NAT模式的LVS群集----------client---------------LVS----------------WEB1-----------WEB2------------NF ...
- LVS负载均衡群集部署——NAT模式
LVS负载均衡群集部署--NAT模式 1.群集应用概述 2.NAT模式LVS负载均衡群集部署 1.群集应用概述: 存在的问题: 互联网应用中,随着站点对硬件性能.响应速度.服务稳定性.数据可靠性等要求 ...
- NAT模式 LVS负载均衡群集部署
NAT模式 LVS负载均衡群集部署的操作步骤 实验环境准备: 负载调度器:内网关 ens33:172.16.10.1,外网关 ens37:12.0.0.1 Web节点服务器1:172.16.10.10 ...
- LVS负载均衡群集部署——DR模式
LVS负载均衡群集部署--DR模式 1.LVS-DR概述 2.部署实验 1.LVS-DR概述: LVS-DR(Linux Virtual Server Director Server)工作模式,是生产 ...
- 21.LVS负载均衡群集-DR群集
LVS负载均衡群集-DR群集 目录 LVS负载均衡群集-DR群集 数据包流向分析 DR模式的特点 LVS-DR中的ARP问题 IP地址冲突 解决办法 路由根据ARP表项,会将新来的请求报文转发给Rea ...
- LVS负载均衡之DR模式原理介绍
LVS基本原理 流程解释: 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间 PREROUTING 链首先会接收到用户请求,判断目标 IP 确定是本机 IP ...
- LVS负载均衡群集
概述 群集的类型:无论是哪种服务器,都至少包括两台节点服务器,而对外表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机.根据群集所针对的目标差异,可以分为以下三个类型: 1.负 ...
- LVS集群之NAT模式实例(3)
LVS集群NAT模式实例 1. 实验拓扑图 DS 必须有两块网卡,需要在上面做NAT. 2. 实验环境 3台CentOS6.4 64bit的服务器. 类型 IP DR eth0:10.20.73.20 ...
随机推荐
- 嵌入式Servlet容器
配置嵌入式Servlet容器 ##Spring Boot里面内置了嵌入式的Servlet容器(tomcat) 点击pom.xml->右键->Diagrams->show Depend ...
- 帝国CMS灵动标签调用相关文章
标题包含关键字①.比较粗糙的匹配,可能不太精确:title like '%$navinfor[keyboard]%' ②.精确的匹配,比较消耗资源:title regexp '(^|,)$navinf ...
- JavaWeb学习day4-Maven&IDEA中的使用
1.创建本地仓库 ,因为使用apache官方的下载方式需要挂梯,下载速度慢且容易出错,可以配置阿里的下载路径,同时配置如下图的仓库路径 2.创建原型项目 3.等待jar包下载导入完成,出现下图即代表成 ...
- Hoo Smart Chain 万物生长计划火热报名中,可视化公链迸发勃勃生机
在DeFi越来越趋向同质化和静态化时,Hoo Smart Chain决定充当破局者,宣布决定All In元宇宙,并于2022年3月份开启面向全球去中心化开发者的奖励计划--「万物生长计划」 目前Ter ...
- Android第七周作业
1.三个界面,界面1点击按钮使用显式意图开启界面2.界面2点击按钮隐式意图开启界面3 package com.example.myapplication; import androidx.appcom ...
- 集合篇-ConcurrentHashMap
点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. jdk1.7和jdk1.8中ConcurrentHashMap的区别? ...
- jquery 动态 给select赋值
<div class="right_left"> <select id="supply"> <option>请选择供应商&l ...
- vue build 指定环境
前言 其实很简单的东西,搜索时很是费劲,特此记录下来.网上有很多资料,但都是五花八门,特此记录 使用 项目根目录中创建环境变量使用文件 .env #所有环境都会加载 .env.development ...
- python连接redis、redis字符串操作、hash操作、列表操作、其他通用操作、管道、django中使用redis
今日内容概要 python连接redis redis字符串操作 redis之hash操作 redis之列表操作 redis其他 通用操作,管道 django中使用redis 内容详细 1.python ...
- 1.9 初学者应选择哪个Linux发行版?
前面章节中,已经对几个常见的 Linux 发行版做了简单的介绍,那么对于初学者来说,选择哪个发行版的性价比更高呢? 通常情况下,初学者学习 Linux,是为了找一份和 Linux 相关的工作,那么问题 ...