集群和LVS-NAT模式

企业群集应用概述

群集的含义

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

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

解决方法

  • 使用价格昂贵的小型机、大型机

  • 使用普通服务器构建服务群集

    通过整合多台服务器,使用LVS来达到服务器的高可用和负载均衡,并以同一个 IP地址对外提供相同的服务。在企业中常用的一种群集技术------LVS (Linux Virtual Server,Linux虚拟服务器)

企业群集分类

根据群集所针对的目标差异,可分为三种类型

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

负载均衡群集(Load Balance Cluster)

  • 提高应用系统的响应能力、尽可能处理更多的访问请求减少延迟为目标,获得高并发、高负载(LB)的整体性能
  • LB的负载分配依赖于主节点的分流算法

访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。例如,"反向代理"等

高可用群集(High Availability Cluster)

  • 提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果
  • HA的工作方式包括双工和主从两种模式

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

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

负载均衡群集工作模式分析

负载均衡群集是目前企业用得最多的群集类型

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

  • 地址转换
  • IP隧道
  • 直接路由

NAT模式

地址转换

  • Network Address Translation,简称NAT模式
  • 类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口
  • 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式

关于LVS虚拟服务器

LVS的负载调度算法

轮询(Round Robin)

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

加权轮询(Weighted Round Robin)

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

最少连接(Least Connections)

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

加权最少连接(Weighted Least Connections)

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

类型 适用场景 网络要求 性能特点

nat 小型规模、网络带宽要求不高的内网环境 无特殊带宽要求 中等性能,依赖NAT转换

tun 跨区域大规模集群,公网负载均衡(如CN2线路) 依赖公网带宽 高灵活性,适合地理分布式场景

DR 高性能、低延迟的大规模集群 LVS与后端服务器需同二层网络 最高性能,数据直接返回客户端

LVS-NAT 模式

作用是为后端分流

实验:

基础环境

lvs服务器

配置两个网卡(内外网)
bash 复制代码
#####ens33网卡配置
[root@lvs network-scripts]# cat ifcfg-ens33
 TYPE="Ethernet"
 PROXY_METHOD="none"
 BROWSER_ONLY="no"
 BOOTPROTO="static"
 DEFROUTE="yes"
 IPV4_FAILURE_FATAL="no"
 IPV6INIT="yes"
 IPV6_AUTOCONF="yes"
 IPV6_DEFROUTE="yes"
 IPV6_FAILURE_FATAL="no"
 IPV6_ADDR_GEN_MODE="stable-privacy"
 NAME="ens33"
 UUID="7cf78704-dc20-4436-be20-e58d689be182"
DEVICE="ens33"
 ONBOOT="yes"
 IPADDR=192.168.110.128
 NETMASK=255.255.255.0
 GATEWAY=192.168.110.2
 
 
 
  ###ens36网卡配置(网卡名需看虚拟机上的名字)
[root@lvs network-scripts]# cat ifcfg-ens36
 TYPE="Ethernet"
 PROXY_METHOD="none"
 BROWSER_ONLY="no"
 BOOTPROTO="static"
 DEFROUTE="yes"
 IPV4_FAILURE_FATAL="no"
 IPV6INIT="yes"
 IPV6_AUTOCONF="yes"
 IPV6_DEFROUTE="yes"
 IPV6_FAILURE_FATAL="no"
 IPV6_ADDR_GEN_MODE="stable-privacy"
 NAME="ens36"
 DEVICE="ens36"
 ONBOOT="yes"
 IPADDR=192.168.253.128
 NETMASK=255.255.255.0
 
lvs服务环境配置
bash 复制代码
systemctl start firewalld

#清除防火墙规则
iptables -t nat -F
iptables -F

#配置SNAT转发规则
vim /etc/sysctl.conf
#开启路由转发的功能(内核的)
net.ipv4.ip forward = 1

#刷新生效
或 echo'1'>/proc/sys/net/ipv4/ip_forward

sysct1 -p

#自定义路由转发规则,将所有192.168.253.0/24网段的流量全部映射为192.168.110.128的地址
iptables -t nat -A POSTROUTING -s 192,168,253.0/24 -0 ens33 -j SNAT --to-source 192.168.110.128
lvs服务准备
bash 复制代码
#安装ipvsadm 管理工具
yum -y install ipvsadm

#启动服务前须保存负载分配策略


ipvsadm-save >/etc/sysconfig/ipvsadm
#或者 
ipvsadm --save>/etc/sysconfig/ipvsadm

#开启1vs的管理工具
systemctl start ipvsadm.service

#配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)
ipvsadm-c #清空规则
#重新建立规则(申明外网网卡是192.168.110.128:80 负载均衡模式是RR轮循) 
ipvsadm -A -t 192.168.110.128:80 -s rr
#定义1vs服务器的后端地址池(类似于nginx的upstream 释石复制ip砦
ipvsadm -a -t 192.168.110.128:80 -r 192.168.253.129:80 -m
ipvsadm -a-t 192.168.110.128:80 -r 192.168.253.130:80 -m
ipvsadm   #启用策略

ipvsadm -ln   #查看节点状态,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm #保存策略

两个httpd服务器

  • 2台服务器的网卡全部改成VMnet1 仅主机模式
  • 查看自己虚拟机VMnet1 网卡的IP地址段是多少(虚拟网络编辑器------》VMent1------》查看子网ip)
  • 然后修改自己web服务器的网卡,如: web1 192.168.253.129 web2 192.168.253.130,网卡配置文件 修改如下(web1)
bash 复制代码
[root@lvs network-scripts]# cat ifcfg-ens33
 TYPE="Ethernet"
 PROXY_METHOD="none"
 BROWSER_ONLY="no"
 BOOTPROTO="static"
 DEFROUTE="yes"
 IPV4_FAILURE_FATAL="no"
 IPV6INIT="yes"
 IPV6_AUTOCONF="yes"
 IPV6_DEFROUTE="yes"
 IPV6_FAILURE_FATAL="no"
 IPV6_ADDR_GEN_MODE="stable-privacy"
 NAME="ens36"
 DEVICE="ens36"
 ONBOOT="yes"
 IPADDR=192.168.253.129
 NETMASK=255.255.255.0
 GATEWAY=192.168.253.128
 #同样搭建第二台httpd服务器,IPADDR=192.168.253.129
搭建本地YUM仓
bash 复制代码
#关闭防火墙:
systemctl disable firewalld --now 
#关闭核心防护
setenforce 0
#配置本地yum仓库下载httpd或者先下载再配置内网

#下载并开启httpd
 yum install -y httpd 
systemctl start httpd
 #同样搭建第二台httpd服务器
修改2台web 服务器的网页文件
bash 复制代码
cd /var/www/html

vi index.html
this httpd01 web pages  #this httpd02 web pages
#保存并退出

#检验
curl 192.168.253.129   #本机ip
#curl 192.168.253.130
验证前测试
bash 复制代码
##2台web服务器 ping windows宿主机的IP,查看是否能ping通
[root@httpd02 yum.repos.d]# ping 192.168.110.1
 PING 192.168.110.1 (192.168.110.1) 56(84) bytes of data.
 64 bytes from 192.168.110.1: icmp_seq=1 ttl=63 time=0.608 ms

验证

使用宿主机WINDOWS 访问LVS的ens33网卡IP ,查看页面:

PS:注意,要相隔至少20秒再重复访问LVS服务器

然后回到LVS服务端使用ipvsadm -ln 观测流量

bash 复制代码
[root@lvs network-scripts]# ipvsadm -ln
 IP Virtual Server version 1.2.1 (size=4096)
 Prot LocalAddress:Port Scheduler Flags         
-> RemoteAddress:Port              Forward Weight ActiveConn InActConn
TCP  192.168.110.128:80 rr
 -> 192.168.253.129:80             Masq       1      0       0
 -> 192.168.253.130:80             Masq       1      0       0
 
相关推荐
xingyue_S1 天前
LVS负载均衡群集(一) -- NAT模式
运维·负载均衡·lvs
zz-zjx2 天前
LVS三种模式及调度算法解析
网络·lvs
weixin_537765803 天前
【负载均衡】LVS原理与配置
服务器·负载均衡·lvs
初学者_xuan8 天前
零基础新手小白快速了解掌握服务集群与自动化运维(十六)集群部署模块——LVS-DR&TUN模式配置
运维·自动化·lvs
zz-zjx8 天前
云原生LVS+Keepalived高可用方案(二)
开发语言·php·lvs
zz-zjx8 天前
LVS/IPVS与Keepalived在云原生环境中的深度学习与实践(一)
运维·lvs
ZYMFZ12 天前
LVS 负载
lvs
哦你看看12 天前
LVS-NAT、DR、TUN模式配置
lvs
Justin_1913 天前
LVS负载均衡集群理论
java·负载均衡·lvs