lvs集群

集群

概念

linux的内核层面实现负责均衡的软件

主要作用:将多个后端服务器组成一个高可用,高性能的服务器集群,通过负载均衡的算法将客户端的请求分发到后端的服务器上。来实现高可用和负载均衡。

阿里的SLB(server loab balance),是用lvs+keepalive实现的

系统的扩展方式:

垂直扩展:向上扩展,增强,性能更强的计算机。瓶颈,计算机本身设备的限制,硬件本身的性能瓶颈

水平扩展:向外扩展,增加设备。并行的运行多个服务,依靠网络解决内部通信的问题,cluster 集群

集群:为了解决某个特定的问题将多台计算机组合起来形成的单个系统

集群的三种类型:

LB:load balance 负载均衡集群,多个主机组成,每个主机只承担一部分的访问请求

HA:high availablity 高可用,在涉及系统时,采取一定的措施,确保系统当中某一组件或者部分出现故障,整个系统依然能够正常的运行。为了维护系统的可用性,可靠性,容错性

HPC:high-performance computing 高性能集群,对响应时间,处理能力要求更高

系统可靠性指标:

MTBF:Mean time Between Failure 平均无故障时间

MTTR:Mean Time Resotration repair 平均故障恢复时间

A=MTBF/(MTBF+MTTR)

0-1

A指标要在0-1之间,A指标就是系统可用性的度量,越接近0表示系统越不可用,接近1表示系统越可用

A指标要无限接近于1

都是以小时为单位

停机时间:

计划内时间:计划内的时间可用忽略不计,但是现在也算在内

计划外时间:故障时间,从故障发生到故障解决的总时间,尤其是运维,计划外时间是我们必须关注的一个指标

lvs集群

lvs适用场景:

小集群不需要适用lvs,用nginx即可;大集群适用lvs。

lvs集群中的术语:

vs :vittual server,lvs服务的逻辑名称,也就是我们外部访问vs集群时使用的ip地址和端口

ds :director server,lvs集群中的主服务器,也就是调度器(nginx的代理服务器),是集群的核心

调度器就是用来接收客户端的请求转发到后端的服务器

RS :real server,lvs集群中的真实服务器,后端服务器,用来接收DS调度器转发来的请求,并且响应结果

CIP :client ip,客户端的ip地址,发起请求的客户端地址

VIP :virtual ip,lvs集群使用的ip地址,对外提供集群访问的虚拟ip地址

DIP :director ip,调度器在集群当中的地址,用于和RS通信

RIP :real ip,后端服务器在集群当中的ip地址

lvs的工作方式:

NAT模式:由调度器响应给客户端

DR模式:直接路由模式,真实服务器直接响应给客户端

TUN隧道模式

NAT模式

在nat模式下,lvs会将来自客户端的请求报文中的目标ip地址和端口修改为lvs内部的ip地址和端口,然后把请求转发到后端服务器

响应结果返回客户端的过程中,响应报文经过lvs的处理,把目标ip和端口修改成客户端的ip地址和端口

优点:

对于客户端来说,请求的目标地址始终不变,客户端的配置不需要做特殊修改,只是调度器在对ip和端口进行转换,后端的服务器也不需要更改任何配置

缺点:

性能损失,请求和响应都需要调度器做地址转换,影响性能,

nat模式只能有一个调度器,调度器故障,整个集群就不能正常工作

地址转换:

内网------外网:转换的源ip地址 snat

外网------内网:转换目的地址 dnat

lvs的工具

ipvsadm工具,用来配置和管理lvs集群的工具

-A 添加虚拟服务器

-D 删除虚拟服务器

-s 指定负载均衡的调度算法

     算法:

        默认轮询:rr

        加权轮询:wrr

        最小连接:lc

        加权最小连接:wlc

-a 添加真实服务器

-d 删除真实服务器

-t 指定vip的地址和端口

-r 指定rip的地址和端口

-m 使用nat模式

-g 使用DR模式

-i 使用隧道模式

-w 设置权重

-p 设置连接保持时间,如:-p 60 表示连接保持60秒

-l 列表查看

-n 数字化展示

-C 清空原有的策略

实验:

数据流向:

nginx 1 RS1 192.168.233.20

nginx2 RS2  192.168.233.30

test1 调度器  ens33 192.168.233.10  ens36 12.0.0.1

test2 客户端  12.0.0.10

步骤:

1、调度器配置(test1 192.168.233.10)

添加一个网卡

配置网卡ens33

配置网卡ens36(具体网卡ifconfig查看)

cd /etc/sysconfig/network-scripts/

cp ifcfg-ens33 ifcfg-ens36

vim ifcfg-ens36

systemctl restart network 重启网卡

ifconfig查看是否生效

2、RS配置(nginx1和nginx2)

配置nginx1 192.168.233.20 修改网关

配置nginx2 192.168.233.30 修改网关

systemctl restart network 重启网卡

vim /usr/local/nginx/html/index.html

修改访问页面的内容

查看访问是否连接

3、地址转换(test1 192.168.233.10)

iptables -t nat -vnL 查看nat表是否有策略

如果有,iptables -D删除

iptables -t nat -A POSTROUTING -s 192.168.233.0/24 -o ens36 -j SNAT --to 12.0.0.1 

从192.168.233.0/24出的设备地址转换成12.0.0

ipvsadm -C 清空原有的策略

ipvsadm -A -t 12.0.0.1:80 -s rr  指定好vip的地址和端口

先添加vip,虚拟服务器的ip和端口,然后再添加真实服务器

ipvsadm -a -t 12.0.0.1:80 -r 192.168.233.20:80 -m

-a 添加真实服务器

-t 指定vip地址

-r 指定真实服务器的地址和端口

-m 指定模式为nat模式

ipvsadm -ln 查看

开启路由转发功能:

vim /etc/sysctl.conf

4、客户端(test2  12.0.0.10 )

修改客户端的ip地址和网关

systemctl restart network 重启网卡

实验结果:

DR模式:

直接路由模式

特点:

调度器在整个lvs集群中是最重要的,在nat模式下,既负责接收请求,同时根据负载均衡的算法转发流量,响应发生给客户端。

DR模式下的调度器依然负责接收请求,同时也根据负责均衡算法转发流量到RS,响应直接由RS响应给客户端

直接路由(Direct Routing)是一种二层转发模式,二层转发的是数据帧。根据源mac地址和目的mac地址进行转发。

不会修改数据包源ip和目的ip,根据数据包mac地址进行转发。

DR模式下,lvs也是维护一个虚拟的ip地址,所有的请求都是发送到这个vip,既然是走二层转发,当客户端的请求到达调度之后,根据负载均衡的算法选择一个RS,修改vip服务器的目的mac变成RS的mac地址,RS处理完请求之后,根据报文当中客户端的源mac地址直接把响应发送到客户端即可,不需要走调度器了

数据流向:

可能出现的问题:

1、调度器配置了vip,RS上也配置了vip地址

vip地址冲突,调度器和RS都在同一网段,ARP通信的紊乱。因为是整个局域网广播,所有的设备都收到了

怎么把lo这个回环的响应把他屏蔽掉,只要本机的物理ip地址响应。

修改内核参数:

arp_ignore=1:系统的物理ip地址才会响应ARP请求,lo不会响应ARP请求

2、返回报文时,vip地址还在,怎么样能让客户端来接收到响应

修改内核参数:

arp_announce=2:系统不使用ip数据包的源地址来响应ARP请求,直接发送物理接口的ip地址

实验:

nginx1 RS(真实ip) 192.168.233.20

nginx2 RS  192.168.233.30

vip 192.168.233.100

调度器 192.168.233.10

客户端  192.168.233.40

步骤:

1、调度器配置(test1 192.168.233.10)

添加虚拟网卡ens33:0

修改调度器的响应参数

vim /etc/sysctl.conf

sysctl -p  添加策略

2、RS配置(nginx1和nginx2)[两边都要修改]

修改静态页面的展示内容

vim /usr/local/nginx/html/index.html

systemctl restart nginx    启动nginx

添加回环地址

cd /etc/sysconfig/network-scripts/

cp ifcfg-lo ifcfg-lo:0

vim ifcfg-lo:0

nginx1:

nginx2:

ifup lo:0,开启虚拟网卡lo:0

ifconfig 查看网卡

添加lo:0接口做为vip

route add -host 192.168.233.100 dev lo:0

设置ip地址为192.168.233.100的地址添加到回环接口,做为lvs的vip,通过路由的模式转发到RS,能让vip识别到真实的服务器

修改RS真实服务器的内核响应

vim /etc/sysctl.conf

实验结果:

lvs的三种工作模式区别:

相关推荐

  1. <span style='color:red;'>LVS</span><span style='color:red;'>集</span><span style='color:red;'>群</span>

    LVS

    2024-07-15 07:02:02      45 阅读
  2. LVS+Keepalived

    2024-07-15 07:02:02       51 阅读
  3. <span style='color:red;'>LVS</span><span style='color:red;'>集</span><span style='color:red;'>群</span>

    LVS

    2024-07-15 07:02:02      29 阅读
  4. <span style='color:red;'>LVS</span><span style='color:red;'>集</span><span style='color:red;'>群</span>

    LVS

    2024-07-15 07:02:02      36 阅读
  5. <span style='color:red;'>lvs</span><span style='color:red;'>集</span><span style='color:red;'>群</span>

    lvs

    2024-07-15 07:02:02      40 阅读
  6. <span style='color:red;'>lvs</span><span style='color:red;'>集</span><span style='color:red;'>群</span>

    lvs

    2024-07-15 07:02:02      39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 07:02:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 07:02:02       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 07:02:02       58 阅读
  4. Python语言-面向对象

    2024-07-15 07:02:02       69 阅读

热门阅读

  1. Bootstrap 栅格系统的工作原理?

    2024-07-15 07:02:02       23 阅读
  2. Nacos

    Nacos

    2024-07-15 07:02:02      24 阅读
  3. 中介者模式(大话设计模式)C/C++版本

    2024-07-15 07:02:02       27 阅读
  4. 软设之中介者模式

    2024-07-15 07:02:02       22 阅读
  5. Go语言指针及不支持语法汇总

    2024-07-15 07:02:02       22 阅读
  6. linux命令更新-iostat 和 iotop

    2024-07-15 07:02:02       22 阅读
  7. IOSUI自动化之mobiledevice

    2024-07-15 07:02:02       22 阅读
  8. Flask `before_request` 方法解析

    2024-07-15 07:02:02       26 阅读
  9. Hive常用内置函数合集

    2024-07-15 07:02:02       20 阅读