• LVS负载均衡模型及算法概述


    集群类型

    •   LB: Load Balancing,负载均衡
    •   HA:High Availability, 高可用
    •   HP:High Performance, 高性能

     

    负载均衡

    负载均衡设备

    Hardware:

           F5,BIG IP

           Citrix,Netscaler

           A10 最便宜

    Software:

           四层 性能高,支持的特性少

                  LVS 中国

           七层:反向代理,性能略次于四层,支持高级特性

                  nginx 俄罗斯

                         http、smtp、pop3、imap

                  haproxy

                         主要应用场景http、其他tcp(mysql,smtp)

    LVS

           Linux Virtual Server

           组成部分:

                  ipvsadm:管理集群服务的命令行工具,工作在用户空间

                  ipvs:工作在内核,监控在input

           LVS工作在INPUT链,所以iptables和LVS不能同时使用

           模型前端叫调度器director,后端叫real_server

           CIP:client IP

           VIP:vrtual IP

           DIP:director IP

           RIP:real server IP

    类型

           LVS-NAT 地址转换

           LVS-DR 直接路由(使用最多)

           LVS-TUN 隧道

    LVS-NAT遵循法则:

    工作模式:

    •        集群节点跟director必须在同一个IP网络中;
    •        RIP通常是私有地址,仅用于各集群节点间的通信;
    •        director位于client和real server之间,并负责处理进出的所有通信;
    •        realserver必须将网关指向DIP;
    •        支持端口映射;
    •        realserver可以使用任意OS;
    •        较大规模场景中,director易成为系统瓶颈;

    LVS-DR遵循法则:

    工作模式:

    •        集群节点跟director必须在同一个物理网络中;
    •        RIP可以使用公网地址;
    •        director仅负责处理入站请求,响应报文由realserver直接发往客户端;
    •        realserver不能将网关指向DIP;
    •        不支持端口映射;
    •        支持大多数的OS(要求VIP可以隐藏)

    LVS-TUN遵循法则:

    工作模式:

    •        通过一个IP报文封装另外一个报文
    •        集群节点可以跨越互联网;
    •        RIP必须是可路由地址;
    •        director仅负责处理入站请求,响应报文由realserver直接发往客户端;
    •        realserver不能将网关指向DIP;
    •        只有支持隧道功能的OS才能用于realserver;
    •        不支持端口映射;

    LVS10种调度方法:

           固定调度:静态算法,不考虑连接数

                  rr:轮调,轮询

                  wrr:Weight,加权

                  sh:source hash,源地址hash绑定,比如session绑定

                  dh:destination hash,目的地址绑定,把同一类请求发往同一个服务器,比如后端有多台缓存服务器,把同一类请求发往已缓存服务器。

           动态调度:动态算法,考虑连接数

                  lc:least connection 最少连接

                         active*256+inactive,谁小挑谁

                  wlc:加权最少连接,LVS默认算法

                         (active*256+inactive)/weight,谁小挑谁

                  sed:最短期望延迟,对wlc的改进

                         (active+1)*256/weight

                  nq:never queue,对sed的改进

                  LBLC:基于本地的最少连接,主要实现目标和dh一样,实际上并不考虑连接数,最常使用于缓冲服务器当中。

                  LBLCR:基于本地的带复制功能的连接

    查看内核是否支持IPVS:

    cat /boot/config-2.6.32-358.el6.x86_64 | grep -i "vs"
    CONFIG_IP_VS=m
    CONFIG_IP_VS_IPV6=y
    # CONFIG_IP_VS_DEBUG is not set
    CONFIG_IP_VS_TAB_BITS=12
    # IPVS transport protocol load balancing support
    CONFIG_IP_VS_PROTO_TCP=y
    CONFIG_IP_VS_PROTO_UDP=y
    CONFIG_IP_VS_PROTO_AH_ESP=y
    CONFIG_IP_VS_PROTO_ESP=y
    CONFIG_IP_VS_PROTO_AH=y
    CONFIG_IP_VS_PROTO_SCTP=y
    # IPVS scheduler
    CONFIG_IP_VS_RR=m
    CONFIG_IP_VS_WRR=m
    CONFIG_IP_VS_LC=m
    CONFIG_IP_VS_WLC=m
    CONFIG_IP_VS_LBLC=m
    CONFIG_IP_VS_LBLCR=m
    CONFIG_IP_VS_DH=m
    CONFIG_IP_VS_SH=m
    CONFIG_IP_VS_SED=m
    CONFIG_IP_VS_NQ=m
    # IPVS application helper
    CONFIG_IP_VS_FTP=m
    CONFIG_OPENVSWITCH=m
    CONFIG_MTD_BLKDEVS=m
    CONFIG_SCSI_MVSAS=m
    安装yum install ipvsadm
    
    ipvsadm用法:
    	管理集群服务
    		添加:-A -t|u|f service-address [-s scheduler]
    			-t: TCP协议的集群 
    			-u: UDP协议的集群
    				service-address:     IP:PORT
    			-f: FWM(firewallMark): 防火墙标记 
    				service-address: Mark Number
    		修改:-E
    		删除:-D -t|u|f service-address
    
    		# ipvsadm -A -t 172.16.100.1:80 -s rr
    
    	管理集群服务中的RS
    		添加:-a -t|u|f service-address -r server-address [-g|i|m] [-w weight]
    			-t|u|f service-address:事先定义好的某集群服务
    			-r server-address: 某RS的地址,在NAT模型中,可使用IP:PORT实现端口映射;
    			[-g|i|m]: LVS类型	
    				-g: DR getway
    				-i: TUN Internet
    				-m: NAT 地址伪装Masquerading
    			[-w weight]: 定义服务器权重
    		修改:-e
    		删除:-d -t|u|f service-address -r server-address
    
    		# ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.8 -m 
    		# ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.9 -m
    	查看
    		-L|l
    			-n: 数字格式显示主机地址和端口
    			--stats:统计数据
    			--rate: 速率
    			--timeout: 显示tcp、tcpfin和udp的会话超时时长
    			-c: 显示当前的ipvs连接状况
    			--daemon:显示进程
    			--sort:排序,默认升序
    
    	删除所有集群服务
    		-C:清空ipvs规则
    	保存规则
    		-S 
    		# ipvsadm -S > /path/to/somefile
    	载入此前的规则:
    		-R
    		# ipvsadm -R < /path/form/somefile
    
  • 相关阅读:
    第二章
    第一章
    unity--实现新手引导功能
    golang MissingContentLength error
    遇到一个golang time.Tick的坑
    grpc client连接池及负载均衡实现
    Pytorch学习-线性回归
    Pytorch学习-自动求导
    Pytorch学习-线性代数实现
    天池Python训练营笔记—Python基础进阶:从函数到高级魔法方法
  • 原文地址:https://www.cnblogs.com/jjzd/p/6785503.html
Copyright © 2020-2023  润新知