什么是LVS以及搭建LVS负载均衡群集(上)

简介: 什么是LVS以及搭建LVS负载均衡群集(上)

一、什么是LVS、群集的概述


(1)群集技术概述


在互联网中,站点对硬件性能、响应速度、服务器稳定性、数据可靠性的要求是很高的

因为单台服务器难以承担所有访问的需求,所以就有了多种解决方案:


(1)使用大型机——价格昂贵

(2)专用负载分流设备——资源浪费

(3)构建集群服务器——通过整合多台相对价格低廉的普通服务器,以同一个地址对外提供服务


——而LVS就是企业中常用的一种群集(cluster)服务 (即Linux Virtual Server虚拟服务器)


扩展:


Linux Virtual Server是Linux内核的一部分,是针对Linux内核的负载均衡解决方案

Linux Virtual Server是在1998年5月由我国章文嵩博士创建,官方网站为:http://www.linuxvirtualserver.org/ 有兴趣可以去看一看


(2)群集的含义


别名: Cluster、集群、群集

含义: 即由多台节点服务器 (至少两台节点服务器) 构成,但是对外只表现为一个整体,即只提供一个访问接口 (这个访问接口可以是域名或ip)


(3)群集的类型


负载均衡群集(Load Balancer)

主要是提高应用系统的响应能力,从而获得高并发、高负载然后提高整体性能

例: DNS轮询、应用层交换、反向代理等

高可用群集(High Available)

主要是提高应用系统的可靠性,使用两台或多台节点服务器进行切换等

例: 故障切换、双击热备、多机热备


工作方式主要是:


1.双工:所有节点同时在线

2.主从:主节点在线,从节点在主节点发生故障时自动切换为主节点


高性能运算群集(High Performance Computer,这个用的比较少)

主要是提高应用系统的CPU运算速度,扩展硬件资源和分析能力


例: 云计算、网格计算,依赖于分布式计算和并行计算

————在特殊环境中可以合并使用这几种群集模式,我们这里只说负载均衡群集


(4)负载均衡群集的结构


20210204160640157.png20210204162029480.png


第一层:负载调度器 (Load Balancer或Director,至少需要一个)

即访问这个群集系统的唯一入口,对外为VIP地址 (虚拟ip/群集ip地址) ,通常配置为主、从方式的双击热备,确保群集的高可用性


第二层:服务器池 (Server Pool,这里使用的是大量的真实服务器)

首先每个节点都有独立的rip (即真实ip) ,这里的节点服务器只处理调度器分发的客户机请求,当某个节点服务器暂时失效时,负责调度器的容错机制会将其隔离,在错误排除后再重新纳入服务器池


第三层:共享存储 (Share Storage)

这里是为服务器池提供稳定的、一致的文件存储服务,确保群集的数据统一性,可以使用NAS设备或者搭建NFS共享服务的专用服务器


(5)负载均衡群集的工作模式


工作模式有: 基于ip、端口、内容等,基于ip的工作模式效率是最高的

因为在工作中一般使用最多的是基于ip的工作模式,所以这里只说基于ip的模式


地址转换模式(NAT模式)

20210204162029480.png


原理: 调度器为节点服务器的网关,是客户机的访问入口和各节点服务器的回应出口。即调度器同时提供访问入口和回应出口

结构: 服务器和调度器使用私有ip,在同一物理网络,安全性优于IP隧道模式和直接路由模式


IP隧道模式(TUN模式)

20210204162408584.png

原理: 调度器为客户机的访问入口,节点服务器通过专用ip隧道与调度器互相通信,然后节点服务器直接回应客户机。即客户机访问调度器,调度器通过专用ip隧道和节点服务器进行通信,再通过节点服务器直接回应客户机


结构: 是开放式的网络结构,节点服务器都具有独立的公网ip,分散在不同的地方,可以直接回应客户机


直接路由模式(DR模式)

20210204162743858.png

原理: 调度器只为客户机提供访问入口,然后传给节点服务器,再通过节点服务器直接回应客户机。即客户机访问调度器,调度器通过本地网络和节点服务器进行通信,然后节点服务器直接回应客户机


结构: 是半开放式的网络结构,节点服务器集中在一起,和调度器在同一物理网络,通过本地连接


——————————————————总结——————————————————


NAT模式只需要一个公网ip,最易于使用,而且安全性高,许多硬件负载均衡器会采用。DR模式和TUN模式的负载能力更强大,使用的范围更广,但是节点的安全性稍微低一点。


(6)LVS的负载调度算法一般分为:


  • 轮询(Round Robin): 按照顺序轮流分配,不管实际连接数和系统负载
  • 加权轮询(Weighted Round Robin): 自动查询各节点的负载情况,动态调整其权重
  • 最少连接(Least Connections): 优先分配给连接数最少的节点
  • 加权最少连接(Weighted Least Connections): 服务器节点性能差异大时,自动调整权重,权重高的承担更大比例的活动连接负载


二、搭建LVS负载均衡群集(NAT模式)


本次实验的操作系统均为Centos7


(1)实验环境



名称 ip地址 扮演角色 网卡
LVS 192.168.100.1 200.0.0.1 LVS负载调度器 ens33(VM1网卡) ens37(VM2网卡)
Web1 192.168.100.2 web服务器 ens33(VM1网卡)
Web2 192.168.100.3 web服务器 ens33(VM1网卡)
NFS 192.168.100.4 nfs共享存储 ens33(VM1网卡)
win7 200.0.0.2 客户机 VM2网卡



内网的Web1、Web2的网关要指向调度器


(2)实验步骤


首先先把各个服务器的ip配置好,并且ping通,关闭防火墙、Selinux等(略)


LVS调度器配置

******(1)进行基础配置
[root@lvs ~]# ip a  (查看另一块网卡的名称)
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:44:ad:db brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.1/24 brd 192.168.100.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::7762:f351:dbfc:cb0e/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:44:ad:e5 brd ff:ff:ff:ff:ff:ff
[root@lvs ~]# cd /etc/sysconfig/network-scripts/
[root@lvs network-scripts]# cp ifcfg-ens33 ifcfg-ens37 (复制原来的网卡ens33到新的网卡)
[root@lvs network-scripts]# vim ifcfg-ens37 (编辑新的网卡)
修改为:
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=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=200.0.0.1
PREFIX=24
IPV6_PRIVACY=no
保存退出
[root@lvs network-scripts]# systemctl restart network (重启网卡)
[root@lvs network-scripts]# ip a   (查看是否成功配置)
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:44:ad:db brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.1/24 brd 192.168.100.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::7762:f351:dbfc:cb0e/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:44:ad:e5 brd ff:ff:ff:ff:ff:ff
    inet 200.0.0.1/24 brd 200.0.0.255 scope global noprefixroute ens37
       valid_lft forever preferred_lft forever
    inet6 fe80::18f:b43e:375e:defb/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@lvs network-scripts]# cd
******(2)加载LVS模块,查看内核是否支持LVS
[root@lvs ~]# modprobe ip_vs  (加载模块)
[root@lvs ~]# cat /proc/net/ip_vs  (确认内核支持LVS)
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
******(3)因为调度器充当网关的角色,所以要开启路由功能
[root@lvs ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 
[root@lvs ~]# sysctl -p
net.ipv4.ip_forward = 1
******(4)使用yum安装ipvsadm
[root@lvs ~]# mount /dev/cdrom /media/cdrom/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@lvs ~]# yum -y install ipvsadm
。。。。。。
完毕!
[root@lvs ~]# ipvsadm -v (查看版本)
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
******(5)使用ipvsadm
————————————————————————————————华丽分割线——————————————————————————————————
ipvsadm的相关命令
格式: ipvsadm  选项  
-A 后面跟-t的虚拟ip地址以及端口号加-s选择负载调度算法 (添加虚拟服务器)
如:ipvsadm -A -t 200.0.0.1:80 -s rr
-t 后面跟vip地址以及tcp端口号   (vip就是虚拟ip,必须是本机的真实ip地址)
-s 选择负载调度算法(轮询为rr、加权轮询为wrr、最少链接为lc、加权最少连接为wlc)
-a 后面跟-t的虚拟ip以及端口号加-r的真实ip以及端口号加选择什么模式如-m选择net模式最后加-w设置权重 (添加节点服务器)
如:ipvsadm -a -t 200.0.0.1:80 -r 192.168.100.2:80 -m -w 1
-r 后面跟rip地址以及tcp端口     (rip就是真实ip)
-m 使用nat群集模式
-g 使用DR模式
-i 使用TUN模式
-w 设置权重(0时暂停节点)
-d 后面跟-r的真实ip以及端口加-t的虚拟ip地址以及端口(删除单个节点)
如:ipvsadm -d -r 192.168.100.2:80 -t 200.0.0.1:80
-D 后面跟-t的虚拟ip以及端口 (删除整个虚拟服务器)
如:ipvsadm -D -t 200.0.0.1:80
-C 清空策略
———————————————————————————————————————————————————————————————————————————
[root@lvs ~]# ipvsadm -A -t 200.0.0.1:80 -s rr  (创建虚拟服务器)
[root@lvs ~]# ipvsadm -a -t 200.0.0.1:80 -r 192.168.100.2:80 -m -w 1 (创建节点服务器)
[root@lvs ~]# ipvsadm -a -t 200.0.0.1:80 -r 192.168.100.3:80 -m -w 1 (创建节点服务器)
[root@lvs ~]# ipvsadm-save > /etc/sysconfig/ipvsadm (保存配置)
[root@lvs ~]# cat /etc/sysconfig/ipvsadm  (查看配置)
-A -t lvs:http -s rr
-a -t lvs:http -r 192.168.100.2:http -m -w 1
-a -t lvs:http -r 192.168.100.3:http -m -w 1
[root@lvs ~]# ipvsadm -ln  (查看各节点状态)
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  200.0.0.1:80 rr
  -> 192.168.100.2:80             Masq    1      0          0         
  -> 192.168.100.3:80             Masq    1      0          0         
[root@lvs ~]# systemctl enable ipvsadm (设置开机自启)
Created symlink from /etc/systemd/system/multi-user.target.wants/ipvsadm.service to /usr/lib/systemd/system/ipvsadm.service.
[root@lvs ~]# systemctl start ipvsadm (开启服务)


相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
7月前
|
负载均衡 应用服务中间件 Linux
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
|
7月前
|
存储 负载均衡 网络协议
企业实战(13)LVS负载均衡DR(直接路由)模式实战详解(二)
企业实战(13)LVS负载均衡DR(直接路由)模式实战详解(二)
120 0
|
6月前
|
负载均衡 应用服务中间件 Linux
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
217 0
|
18天前
|
负载均衡 算法 网络协议
LVS、Nginx和HAProxy负载均衡器对比总结
LVS、Nginx和HAProxy负载均衡器对比总结
|
8月前
|
存储 负载均衡 应用服务中间件
LVS负载均衡群集——NAT模式实操
LVS负载均衡群集——NAT模式实操
225 0
|
4月前
|
缓存 负载均衡 应用服务中间件
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
在本章内容中,我们将深入探讨 Tomcat 服务器的运行架构、LVS 负载均衡的运行机制以及 Cache 缓存机制,并提供相应的解决方案和指导。通过理解这些关键概念和机制,您将能够优化您的系统架构,提高性能和可扩展性。
210 4
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
|
6月前
|
负载均衡 算法 网络协议
Keepalived+LVS搭建高可用负载均衡
Keepalived+LVS搭建高可用负载均衡
190 1
|
7月前
|
负载均衡 应用服务中间件 nginx
71分布式电商项目 - nginx高可用以及lvs+nginx负载均衡(资料)
71分布式电商项目 - nginx高可用以及lvs+nginx负载均衡(资料)
43 0
|
8月前
|
存储 负载均衡 网络协议
LVS负载均衡群集—DR直接路由
LVS负载均衡群集—DR直接路由
66 0
|
1月前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
40 0