LVS之NAT

集群#

概念#

一组各自相互独立且又相互依赖的,通过高速网络互联的计算机组成的一个计算机组, 以单一的系统模式加以管理, 为用户提供服务, 对用户来说, 用户只会认为对方是一个服务. 这个里面, 一组计算机的一台计算机就是集群的一个节点

特点#

  • 高可用
  • 高负载
  • 高扩展
  • 高管理性

场景#

  1. 服务器A响应10000个请求 此时浏览器返回状态码都是200
  2. 服务器A响应20000个请求 此时浏览器返回状态有 200 301 302 404 500等
  3. 上述例子说明服务器响应达到瓶颈 响应客户端请求很慢
Copy
# 解决办法 加配置: 加 CPU, 加内存, 加带宽, 加 SSD 这种解决方法称为“向上扩展” , 能够解决一时, 却不能持久一世[单台服务器上做动作] 加服务器: 一台==>两台, 两台==>四台 四台==>8 台 使用多台服务器同时为用户提供服务 ,而这一种解决方法则称为“横向扩展”或“向外扩展

集群种类#

  • 负载均衡(Load Balance)集群 简称:LB
  • 高可用 (High Availability)集群 简称:HA
  • 高性能计算(High Perfermance Computing)集群,简称 HPC 集群
  • 常规情况下都是HA+LB模式通过集群实现负载分担

LVS#

LVS 是 Linux Virtual Server 的简写,意即 Linux 虚拟服务器,是一个虚拟的服务器集群系统。本项目在 1998 年 5 月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一,是根据 iptables 的实现来开发的,所以使用时候会和 iptables 相当类似

LVS官网

LVS中文站点

组成部分#

分发器#

整个集群对外的最前端机, 负责接收用户请求, 并且根据自己的调度算法, 将请求转发到后端真实服务器上的动作,而客户认为服务是来自一个 IP 地址(我们可称之为 VIP 虚拟 IP 地址)上的。

服务器池#

真正为用户提供服务的服务器, 每一台服务器就是一台 RS[Real Server],可执行的服务有 MySQL,WEB,MAIL, FTP 和 DNS 等。

共享存储#

为后端服务器节点保持相同内容, 提供数据的一致性,也就是说,它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务

NAT模式#

优点#

  1. NAT方式支持任何的操作系统
  2. NAT模式配置简单 由于使用NAT技术分发器可以和服务器不在一个网段

缺点#

  1. 所有的数据都经过分发器 分发器数据压力比较大
  2. 每次NAT都是需要重新写包网络有一定的延迟

原理#

  1. 首先客户端通过网络访问分发器对外提供的公网地址
  2. 当客户端请求的数据到点分发器的时候 分发器通过创建的规则以及调度算法将数据包分配到不同的后端服务器节点
  3. 后端服务器节点进行数据响应在通过分发器将数据返回给客户端

图解#

  • 首先客户端通过公网访问分发器对外提供的公网地址(VIP)
  • 数据到达分发器分发器通过NAT修改目标将数据转发到真实服务器(RIP)
  • 真实服务器(RIP)此时在将数据发给分发器(DIP)
  • 分发器(VIP)在通过公网将数据转发给客户端(CIP)

实验配置#

实验环境#

Hostname IP LVS
LVS 192.168.1.180(VIP)
10.1.1.1/24(DIP)
Yes
Node1 10.1.1.2/24(Rip) No
Node2 10.1.1.4/24(Rip) No

Director配置#

Copy
# 开启路由转发功能 [root@LVS ~]# vim /etc/sysctl.conf 改: net.ipv4.ip_forward = 0 为: net.ipv4.ip_forward = 1 [root@LVS ~]# sysctl -p # 让配置生效 [root@LVS ~]# systemctl stop firewalld.service && setenforce 0 && iptables -F [root@LVS ~]# yum install ipvsadm # 安装LVS [root@LVS ~]# ipvsadm -A -t 192.168.1.180:80 -s rr -A:添加虚拟服务器 -t:指定访问的服务 此时是:http服务 -s:指定调度的方式 rr:轮询调度 [root@LVS ~]# ipvsadm -a -t 192.168.1.180:80 -r 10.1.1.2 -m [root@LVS ~]# ipvsadm -a -t 192.168.1.180:80 -r 10.1.1.4 -m -a:添加真实服务器 -r:真实服务器IP地址 -m:NAT模式 [root@LVS ~]# ipvsadm --save > /etc/sysconfig/ipvsadmm # 进行保存 防止断电规则丢失 [root@LVS ~]# ipvsadm -L -n # 展示策略 -L:列出规则 -n:地址和端口输出

Node节点配置#

Copy
[root@Node1 ~]# yum install -y httpd [root@Node1 ~]# systemctl restart httpd [root@Node1 ~]# echo "Node1节点" > /var/www/html/index.html [root@Node2 ~]# yum install -y httpd [root@Node2 ~]# systemctl restart httpd [root@Node2 ~]# echo "Node2节点" > /var/www/html/index.html

测试界面#

Copy
# 字符浏览器进行查看 [root@LVS ~]# elinks 192.168.1.180 --dump

常用查询命令#

-L -n -c#

Copy
# 查看客户端和真实服务器连接情况 [root@LVS ~]# ipvsadm -L -n -c

-L -n --stats#

Copy
# 查看分发器分发情况 [root@LVS ~]# ipvsadm -L -n --stats

-L -n --rate#

Copy
# 查看分发速率 [root@LVS ~]# ipvsadm -L -n --rate

-Z#

Copy
# 清空所有分发数据 [root@LVS ~]# ipvsadm -Z [root@LVS ~]# ipvsadm -L -n --stats

-C#

Copy
# 清空所有规则 [root@LVS ~]# ipvsadm -C [root@LVS ~]# ipvsadm -L -n

posted @   SR丶  阅读(82)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示
CONTENTS