码迷,mamicode.com
首页 > 其他好文 > 详细

ipvs和ipvsadm

时间:2018-02-23 13:36:22      阅读:1003      评论:0      收藏:0      [点我收藏+]

标签:hold   连接超时   put   应该   火墙   prot   byte   用户   ble   

ipvs和ipvsadm

ipvs:内核中的协议栈上实现

    ipvs是LVS软件核心,是运行在LB上的,这是个基于ip层的负载均衡。
    ipvs的总体结构主要有ip包处理,负载均衡算法,系统配置和管理三个模块以及虚拟服务器与真实服务器链表组成。
    ipvs管理集群服务管理服务上的RS。
    一个ipvs主机可以同时定义多个cluster server,但可能会影响调度性格。
    一个ipvs服务至少应该有一个RS。
    grep -i -C 10 "ipvs" /boot/config-VERSION-RELEASE.x86_64
    支持的协议:TCP,UDP,AH,ESP,AH_ESP,SCTP
    ipvs 规则: /proc/net/ip_vs
    ipvs 连接:/proc/net/ip_vs_conn

ipvsadm:用户空间的集群服务管理工具

    1)程序包:ipvsadm
        rpm -ql ipvsadm 
        /etc/sysconfig/ipvsadm-config
        /usr/lib/systemd/system/ipvsadm.service
        /usr/sbin/ipvsadm
        /usr/sbin/ipvsadm-restore
        /usr/sbin/ipvsadm-save
        /usr/share/doc/ipvsadm-1.27
        /usr/share/doc/ipvsadm-1.27/README
        
        Unit File: ipvsadm.service
        主程序:/usr/sbin/ipvsadm
        规则保存工具:/usr/sbin/ipvsadm-save
        规则重载工具:/usr/sbin/ipvsadm-restore
        配置文件:/etc/sysconfig/ipvsadm-config
    2)命令:ipvsadm
        ipvsadm - Linux Virtual Server administration
          ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags]
          ipvsadm -D -t|u|f service-address
          ipvsadm -C
          ipvsadm -R
          ipvsadm -S [-n]
          ipvsadm -a|e -t|u|f service-address -r server-address [options]
          ipvsadm -d -t|u|f service-address -r server-address
          ipvsadm -L|l [options]
          ipvsadm -Z [-t|u|f service-address]
          ipvsadm --set tcp tcpfin udp
          ipvsadm --start-daemon state [--mcast-interface interface] [--syncid sid]
          ipvsadm --stop-daemon state
            -A   ,--add-service         添加一个集群服务
            -E   ,--edit-service        修改已添加的集群服务
            -D   ,--delete-service      删除虚拟服务
            -C   ,--clear               清空整个表
            -R   ,--restore             从标准输入重载
            -S   ,--save                保存值到标准输出。
            -a   ,--add-server          向指定的Client Server中添加Real Server.
            -e   ,--edit-server         修改RS
            -d   ,--delete-server       删除真实服务
            -L|-l,--list                列出表
            -Z   ,--zero                清空计数器
            --set tcp tcpfin udp        设置连接超时值
            --start-daemon              开启连接同步后台进程
            --stop-daemon               停止连接同步后台进程
            -t service-address,--tcp-service        服务地址是 host[:port],tcp协议
            -u service-address,--udp-service        服务地址是host[:port],udp协议
            -f fwmark,--fwmark-service              防火墙标记
            -6          ,--ipv6                 fwmark 项使用 IPv6
            -s scheduler,--scheduler            rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,调度方法其中之一,默认为wlc。
            --pe engine         备用持久性引擎可能是 sip,默认情况下不设置
            -p [timeout]      ,--persistent         持续连接
            -M netmask        ,--netmask            持久粒度掩码
            -r server-address ,--real-server        服务地址主机和端口,只有支持端口映射的LVS类型才允许此处使用和集群服务中不同的端口
            -g                ,--gatewaying         gatewaying (direct routing) (default),dr模式
            -i                ,--ipip               ipip encapsulation (tunneling),tun模式
            -m                ,--masquerading       masquerading (NAT),nat模式
            -w weight         ,--weight             实际服务器容量,指定权重
            -x uthreshold     ,--u-threshold        连接的高等门限
            -y lthreshold     ,--l-threshold        连接的低等门限
            --mcast-interface interface             连接同步的多播接口
            --syncid sid                            syncid 同步连接(default=255)
            -c,--connection                         显示ipvs连接
            --timeout                               超时时间输出(tcp tcpfin udp)
            --daemon                                后台进程信息输出
            --stats                                 统计数据
            --rate                                  速率
            --exact                                 精确值
            --thresholds                            线程信息输出
            --persistent-conn                       当前连接信息输出
            --nosort                                禁用对服务器/服务的排序输出
            --sort                                  不做任何事情,因为后台兼容性
            -o       ,--ops                         单包调度
            -n       ,--numeric                     数字格式显示ip和port,注意-n只能写在-L之后。
            -b flags ,--sched-flags                 调度标志(comma-separated)
            
        3)核心功能:
            集群服务管理:增、删、改
            集群服务的RS管理:增、删、改
            查看
        
        4)管理集群服务:增、改、删
            增、改:
                ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
            删除:
                ipvsadm -D -t|u|f service-address
                service-address: 
                    -t|u|f: 
                        -t: TCP 协议的端口,VIP:TCP_PORT
                        -u: TCP 协议的端口,VIP:UDP_PORT
                        -f :firewall MARK ,标记,一个数字
                [-s scheduler] :指定集群的调度算法,默认为wl
        
        5)管理集群上的RS :增、改、删
            增、改:
                ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
            删:
                ipvsadm -d -t|u|f service-address -r server-address
                server-address:
                    rip[:port] 如省略port ,不作端口映射
            选项:
                lvs类型:
                    -g: gateway, dr 类型,默认
                    -i: ipip, tun 类型
                    -m: masquerade, nat 类型
                    -w weight:指定权重
        6)清空定义的所有内容:ipvsadm –C
        
        7)清空计数器:ipvsadm -Z [-t|u|f service-address]
        
        8)查看:
            ipvsadm -L|l [options]
                --numeric, -n :以数字形式输出地址和端口号
                --exact :扩展信息,精确值
                --connection ,-c :当前IPVS 连接输出
                --stats :统计信息
                --rate  :输出速率信息
        9)保存:
            建议保存至/etc/sysconfig/ipvsadm
            ipvsadm-save > /PATH/TO/IPVSADM_FILE
            ipvsadm -S > /PATH/TO/IPVSADM_FILE
            systemctl stop ipvsadm.service
        10)重载:
            ipvsadm-restore < /PATH/FROM/IPVSADM_FILE
            ipvsadm -R < /PATH/FROM/IPVSADM_FILE
            systemctl restart ipvsadm.service

FireWall Mark:FWM

    1)MARK target 可用于给特定的报文打标记,在netfilter上给报文打标记,mangle表
        --set-mark value
        其中:value 为十六进制数字
    
    2)借助于防火墙标记来分类报文,而后基于标记定义集群服务。
        可将多个不同的应用使用同一个集群服务进行调度。
        也就是将http和https统一调度,可以实现无论你访问http和https都给你调度到后面的真实的服务器,不用每一个服务都单独的创建一个集群服务。
        打标记实现方法:
            在Director 主机打标记:
                iptables -t mangle -A PREROUTING -d $vip -p $proto –m multiport --dports $port1,$port2,… -j MARK --set-mark NUMBER
            在Director 主机基于标记定义集群服务:
                ipvsadm -A -f NUMBER [options]++++
        定义集群服务:
            ipvsadm -A -f MARK -s rr -p
            ipvsadm  -a  -f   MARK  -r  ip  -g  -w 1
        查看
            ipvsadm -Ln 
            ipvsadm -Ln --rate
                Forward:转发方法
                Weight:权重
                ActiveConn:活动连接数
                InActiveConn:非活动连接数
                CPS:connections per seconds
                InnPPS:Input packets per seconds
                OutPPS:output packets per seconds
                InBPS:input bytes per seconds
                OutBPS:Output bytes per seconds
    3)作用:
        同一服务不同端口使用一个设置搞定
         
    4)具体实现
        在VS上进行如下设置
            iptables -t mangle -A PREROUTING -d 192.168.74.88 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 12  
                ##无论访问VIP的80还是443端口统一打标签为12
            iptables -t mangle -vnL 
            ipvsadm -A -f 12 -s wrr   -
                ##创建一个集群服务,只要标签是12的调度算法都是wrr
            ipvsadm -a -f 12 -r 192.168.74.129 -g -w 3  
                ##将RS添加到集群服务里
            ipvsadm -a -f 12 -r 192.168.74.133 -g
            ipvsadm -Ln
        在客户端进行测试
            curl 192.168.74.88
            curl -k https://192.168.74.88/  
                ##k表示忽略证书访问

ipvs和ipvsadm

标签:hold   连接超时   put   应该   火墙   prot   byte   用户   ble   

原文地址:https://www.cnblogs.com/shenxm/p/8461257.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!