• LVS+Keepalived负载均衡配置


    简介

    lvs一般是和keepalived一起组合使用的,虽然也可以单独使用lvs,但配置比较繁琐,且可用性也没有前者高。

    lvs和keepalived组合使用后,配置lvs的VIP和负载均衡就都在keepalived中进行配置,只是在keepalived中调用lvs

    架构图

     

    配置

    LVS+Keepalived MASTER

    配置:【keepalived.conf】

    global_defs {  
       notification_email {  
             edisonchou@hotmail.com  
       }  
       notification_email_from sns-lvs@gmail.com  
       smtp_server 192.168.80.1  
       smtp_connection_timeout 30
       router_id LVS_DEVEL  
    }  
    vrrp_instance VI_1 {  
        state MASTER   #指定Keepalived的角色,MASTER为主,BACKUP为备          
        interface eth1  #指定Keepalived的角色,MASTER为主,BACKUP为备
        virtual_router_id 51  #虚拟路由编号,主备要一致
        priority 100  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR    
        advert_int 1  #检查间隔,默认为1s
        authentication {  
            auth_type PASS  
            auth_pass 1111  
        }  
        virtual_ipaddress {  
            192.168.80.200  #定义虚拟IP(VIP)为192.168.2.33,可多设,每行一个
        }  
    }  
    # 定义对外提供服务的LVS的VIP以及port
    virtual_server 192.168.80.200 80 {  
        delay_loop 6 # 设置健康检查时间,单位是秒                    
        lb_algo wrr # 设置负载调度的算法为wlc                   
        lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式   
        nat_mask 255.255.255.0     #NAT模式会用到           
        persistence_timeout 0   #会话保持时间,单位是秒(可以适当延长时间以保持session)         
        protocol TCP      #转发协议类型,有tcp和udp两种            
      sorry_server 127.0.0.1 80      #如果所有realserver都出现问题,vip指向本机80端口
    
        real_server 192.168.80.102 80 {  # 指定real server1的IP地址
            weight 3   # 配置节点权值,数字越大权重越高              
            TCP_CHECK {  #通过tcpcheck判断RealServer的健康状态,检测健康状态的方法还有HTTP_GET:通过检测url状态进行健康判断
              connect_timeout 10     #超时时间,单位是秒    
              nb_get_retry 3    #重连次数
              delay_before_retry 3   #重连间隔时间
              connect_port 80  #检测端口
            }  
        }  
        real_server 192.168.80.103 80 {  # 指定real server2的IP地址
            weight 3  # 配置节点权值,数字越大权重越高  
            TCP_CHECK {  
              connect_timeout 10  
              nb_get_retry 3  
              delay_before_retry 3  
              connect_port 80  
            }  
         }  
    }


    LVS+Keepalived BACKUP

    配置:【keepalived.conf】

    global_defs {  
       notification_email {  
             edisonchou@hotmail.com  
       }  
       notification_email_from sns-lvs@gmail.com  
       smtp_server 192.168.80.1  
       smtp_connection_timeout 30
       router_id LVS_DEVEL  
    }  
    vrrp_instance VI_1 {  
        state BACKUP   #指定Keepalived的角色,MASTER为主,BACKUP为备          
        interface eth1  #指定Keepalived的角色,MASTER为主,BACKUP为备
        virtual_router_id 51  #虚拟路由编号,主备要一致
        priority 99  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR    
        advert_int 1  #检查间隔,默认为1s
        authentication {  
            auth_type PASS  
            auth_pass 1111  
        }  
        virtual_ipaddress {  
            192.168.80.200  #定义虚拟IP(VIP)为192.168.2.33,可多设,每行一个
        }  
    }  
    # 定义对外提供服务的LVS的VIP以及port
    virtual_server 192.168.80.200 80 {  
        delay_loop 6 # 设置健康检查时间,单位是秒                    
        lb_algo wrr # 设置负载调度的算法为wlc                   
        lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式   
        nat_mask 255.255.255.0     #NAT模式会用到           
        persistence_timeout 0   #会话保持时间,单位是秒(可以适当延长时间以保持session)         
        protocol TCP      #转发协议类型,有tcp和udp两种            
      sorry_server 127.0.0.1 80      #如果所有realserver都出现问题,vip指向本机80端口
    
        real_server 192.168.80.102 80 {  # 指定real server1的IP地址
            weight 3   # 配置节点权值,数字越大权重越高              
            TCP_CHECK {  #通过tcpcheck判断RealServer的健康状态,检测健康状态的方法还有HTTP_GET:通过检测url状态进行健康判断
              connect_timeout 10     #超时时间,单位是秒    
              nb_get_retry 3    #重连次数
              delay_before_retry 3   #重连间隔时间
              connect_port 80  #检测端口
            }  
        }  
        real_server 192.168.80.103 80 {  # 指定real server2的IP地址
            weight 3  # 配置节点权值,数字越大权重越高  
            TCP_CHECK {  
              connect_timeout 10  
              nb_get_retry 3  
              delay_before_retry 3  
              connect_port 80  
            }  
         }  
    }

    Real Server

    配置脚本:realserver.sh

    SNS_VIP=192.168.80.200
    /etc/rc.d/init.d/functions
    case "$1" in
    start)
           ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
           /sbin/route add -host $SNS_VIP dev lo:0
           echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
           echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
           echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
           echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
           sysctl -p >/dev/null 2>&1
           echo "RealServer Start OK"
           ;;
    stop)
           ifconfig lo:0 down
           route del $SNS_VIP >/dev/null 2>&1
           echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
           echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
           echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
           echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
           echo "RealServer Stoped"
           ;;
    *)
           echo "Usage: $0 {start|stop}"
           exit 1
    esac
    exit 0

    参考资料:

    http://www.cnblogs.com/edisonchou/p/4281978.html

     http://www.tuicool.com/articles/Vz2qYj

  • 相关阅读:
    vue调用嵌套iframe的方法
    Kafaka 集群搭建(Windows环境)
    EF Core 延迟加载
    OLTP 和 OLAP
    数据库调优(二)Inner Join Merge Join Hash Match
    数据库性能调优(一)
    Identity Server4 数据迁移、持久化
    mysql.data.entityframeworkcore 已弃用
    Failed to start LSB: Bring up/down networking
    线程死锁与同步
  • 原文地址:https://www.cnblogs.com/MacoLee/p/5858995.html
Copyright © 2020-2023  润新知