• lvs集群


    lvs集群

    集群:nginx四层和七层+动静分离

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

    集群的目的就是为了解决系统的性能瓶颈

    垂直扩展:向上扩展,增加单个机器的性能。升级硬件。硬件升级是有瓶颈的

    水平扩展:向外扩展,增加设备,并行的运行多个服务,主要是通过网络和算法(代码)来调度服务分配的问题

    集群的类型:

    负载均衡集群:LB(loab blance)多个主机组成,每个主机只承担一部分访问请求。靠负载均衡的算法实现

    高可用集群:HA(high availiablity)避免SPOF(single point of failuer)单点故障。系统当中有一部分组件出现故障,可以保障整个系统继续运行

    主从-------同步(某些特定服务需要这个概念)-------负载均衡

    HPC(high-performance computing):快速转发,快速响应

    集群的可靠性指标:

    MTBF(mean time between failure):系统在正常运行期间无故障的平均时间,一般用小时或者天数来表示。MTBF值越高,系统的可靠性越高,出现故障的概率也越小

    MTTR:系统从发生故障到恢复正常运行的平均时间,一般也用小时或者天数表示。MTTR值越小,说明系统恢复故障的能力越强

    A:系统的可靠性指标,A值越高越好

    A=MTBF/(MTBF+MTTR)

    停机时间:

    计划内停机:指的是预定时间内的维护或者检修时间。时间是自定义的

    计划外停机:运维人员关注的就是计划外。

    发版期

    设计集群时需要考虑的一些原则:

    1、可扩展性:集群要有随时可以添加或者删除设备的能力。动态的扩缩容

    2、可靠性:集群中如果有节点发生故障,可以快速检测并自动切换

    3、负载均衡:要合理的分配负载,避免单个节点过载,影响整体性能

    4、可维护性:能够方便的进行配置,部署,维护,监控,降低成本

    5、安全性:防止恶意的攻击,以及数据泄密,数据丢失

    6、易用性:相关的工作人员,可以方便的进入这个集群,能够快速的开发,部署 测试等等

    lvs:linux virtual server  是一个部署在linux系统通过内核层面实现负载均衡的软件

    开发者:章文嵩发起的开源项目

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

    阿里的SLB(server load balance)基于lvs+keepalived实现

    lvs集群当中的术语:

    vs(virtual server):lvs服务的逻辑名称,外部访问lvs集群时提供的一个虚拟ip地址和端口号

    DS(Director server):lvs集群当中的主服务器,也叫调度器,是整个lvs集群的核心,接收客户端的请求转发到后端RS

    RS(real server):lvs后端的真实服务器的ip,接收到了调度器DS的请求之后,返回响应结果

    CIP(client ip):客户端的ip地址

    VIP(virtual ip):对外提供访问的统一虚拟ip地址

    DIP(Director ip):调度器在lvs内部使用的ip地址。用于和真实服务器进行通信

    RIP:后端真实服务器的ip地址

    lvs访问的大致流程:

    1、客户端访问的都是访问vip

    2、DS接收到请求,根据调度算法选择好后端服务器(rs)

    请求发送到rs

    3、RS处理请求并将响应发送到DS

    4、DS把RS的响应包装成自己响应,发送到客户端

    客户端既不知道请求的真实服务器是谁,也不知道响应的服务器是谁

    lvs的负载均衡方式:

    NAT

    DR

    TUN

    其中NAT和DR是最常用的方式

    NAT模式:

    NAT模式最常用的lvs负载均衡方式之一:地址转换

    nat模式:

    1. 在调度器上配置双网卡,一个指内,一个指外
    2. 配置一个可以和公网进行通信的VIP
    3. 配置转发策略,如果访问vip,就会把请求的数据转发到后台的RS(请求的格式是报文)

    调度器会修改请求的目标地址和端口

    12.0.0.1:80-----------192.168.233.30:80

    1. RS处理完请求之后,响应客户端,,先到调度器,调度器进行地址转换,把内网地址转换成公网地址,响应给用户

    192.168.233.30:80---------调度器----------nat转换-----------12.0.0.1:80------------客户端

    数据请求进入调度器做的请求报文中ip地址的修改

    数据响应进入调度器,根据NAT配置进行地址转换

    注意:调度器的内网IP地址和真实服务器的IP地址要在同一网段

    nat:对于客户端来说请求地址始终不变,客户端不需要修改任何配置。转发由调度器通过算法来完成,后端服务器只管接收响应,也不需要修改任何配置。

    性能损失和单点故障

    DR:直接路由模式。请求由调度器完成,但是响应客户端由RS真实服务器直接响应,不需要通过调度器

    好处是:性能高,而且可以配置vip地址的高可用。不存在单点故障

    TUN:隧道协议,把请求转发到后端服务器,需要在后端服务器配置隧道协议

    设置lvs:

    ipvsadm工具:管理ipvs内核模块的命令行工具,可用于配置和管理lvs集群

    ipvsadm -A:添加虚拟服务器

    ipvsadm -D:删除整个虚拟服务器

    ipvsadm -s:指定负载调度的算法

    静态调度(固定调度)

    rr 轮询

    wrr 加权轮询

    dh 目的地址hash

    根据IP地址查找静态hash表,获取需要真实的RS的地址

    sh源地址hash

    动态调度:

    lc:最小连接数调度

    wlc:加权最小连接数调度

    权重高的,转发的就多,为了避免性能瓶颈,再跟上最小连接数分配,可以把请求连接数量较小的服务器继续转发

    lblc:基于地址的最小连接数调度

    将来自同一个目的地址的请求分配给RS,如果这台服务器尚未满负荷,就会把请求分配给连接数最小的RS,而且在下一次转发时会优先考虑这台RS

    ipvsadm -a:添加真实服务器

    ipvsadm -d:删除真实服务器

    ipvsadm -t:指定VIP地址的端口号

    ipvsadm -r:指定RIP的端口号

    ipvsadm -m:表示使用nat模式

    ipvsadm -g:表示使用DR模式

    ipvsadm -i:表示使用TUN模式

    ipvsadm -w:设置真实服务器的权重

    ipvsadm -p 60:设置连接保持的时间60秒

    ipvsadm -ln:以数字和列表的形式查看lvs的配置信息

    for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done

    nat模式的部署方式:

    负载调度器:配置双网卡:192.168.233.10(内网)12.0.0.1(ens36)

    两台后端web真实服务器:192.168.233.20  192.168.233.30

    一台NFS共享服务器:192.168.233.40

    客户端:40

    默写:

    1、lvs的负载工作的方式有几种?

    nat dr tun

    2、lvs-NAT的工作原理

    访问的是vip,进入集群,调度器来选择一台后端的真实服务器,然后转发到真实服务器

    响应过程:先到调度器。调度器做地址转换,再把响应发送到客户端

    3、lvs调度器最常见算法(均衡策略)

    rr wrr wlc dh sn iplc

  • 相关阅读:
    封装一个省市区公共组件
    多线程使用不当导致的 OOM
    SpringMvc+Shiro有时候shiro取不到用户名
    sheng的学习笔记-【中】【吴恩达课后测验】Course 3 - 结构化机器学习项目 - 第一周测验
    torch.hub.load()函数的使用——联网加载权重以及如何加载本地权重
    图的存储结构--邻接矩阵
    TCP/IP 测试题(三)
    Linux中sudo命令的添加和操作
    10.3 单源负权D’Esopo-Pape
    如何写出好的文档
  • 原文地址:https://blog.csdn.net/wyh20030130/article/details/134042056