• LVS和keepalived负载均衡、lvs主备机测试


    lvs+keepAlived——负载均衡

    一、 简介

    1. 负载均衡的类型

    l 负载均衡可以采用硬件设备,也可以采用软件负载

    l 商用硬件负载设备成本通常较高,所以一般情况下会采用软件负载

    l 软件负载解决的两个核心问题是:选谁、转发,其中最著名的是lvs

    2. lvs是什么?

    英文全称是Linux Virtual Server,即Linux虚拟服务器

    由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org

    l Linux2.4内核以后,LVS已经是Linux标准内核的一部分

    l 可以将请求分发给后端真实服务器处理

    有许多比较著名网站和组织都在使用LVS架设的集群系统,例如:Linux的门户网站(www.linux.com)、向RealPlayer提供音频视频服务而闻名的Real公司(www.real.com)、全球最大的开源网站(sourceforge.net)等

    l 提供了多种调度算法

    ² 轮询调度(Round-Robin Scheduling)

    ² 加权轮询调度(Weighted Round-Robin Scheduling)

    ² 最小连接调度(Least-Connection Scheduling)

    ² 加权最小连接调度(Weighted Least-Connection Scheduling)

    ² 基于局部性的最少链接(Locality-Based Least Connections Scheduling)

    ² 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)

    ² 目标地址散列调度(Destination Hashing Scheduling)

    ² 源地址散列调度(Source Hashing Scheduling)

    ² 最短预期延时调度(Shortest Expected Delay Scheduling)

    ² 不排队调度(Never Queue Scheduling)对应: rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq

    l 有三种转发规则

    ² NAT:简单理解,就是数据进出都通过LVS,性能不是很好。

    ² TUNL:简单理解:隧道

    ² DR:最高效的负载均衡规则

    3. lvs的体系结构

    最前端的负载均衡层,用Load Balancer表示

    中间的服务器集群层,用Server Array表示

    最底端的数据共享存储层,用Shared Storage表示

    l 在用户看来,所有的内部应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务

    4. keepAlived是什么

    因为所有的请求都要经过负载均衡,所以负载均衡必然是非常重要,不能挂掉,说白了就是要keep the lvs alived。

    提供的功能就是可以配置2台LVS,一台主机,一台备机。并且检测任何一个节点是否还活着。

    5. lvs的优点?

    l 抗负载能力强,因为lvs工作方式的逻辑是非常之简单,而且工作在网络4层仅做请求分发之用,没有流量,所以在效率上基本不需要太过考虑。

     

    有完整的双机热备方案,当节点出现故障时,lvs会自动判别,所以系统整体是非常稳定的。

    基本上能支持所有应用,因为lvs工作在4层,所以它可以对几乎所有应用做负载均衡,包括http、数据库、聊天室等等。

    6. lvsnginx对比

    l 负载度 lvs优于nginx

    l 稳定度 lvs优于nginx

    l 服务器性能要求 lvs优于nginx

    l 网络层数的效率 lvs优于nginx

    ² 网络七层:应用层、会话层、表示层、传输层、网络层、链路层、物理层

    l 功能多少 nginx优于lvs

    7. lvs+keepAlived应用场景?

    l 大型网站负载均衡

    二、 lvs+keepAlived安装

    1. 软件环境

    l CentOS7(4台)

    l 2http服务器

    l 2台负载均衡:lvs+keepAlived

     

    2. http服务器安装配置(2

    首先,后2台装http服务器

     

    设置开机自启动

     

    开启服务

     

    查看服务

     

    此时,可以访问测试

     

    2台机器,在如下位置,创建 index.html,随意写内容,区分2台机器即可

     

     

    此时访问,是可以区分2台机器的

     

    l 2台机器创建配置文件,都粘贴以下内容

     

    l 192.168.198.150是虚拟IP,注意与其他机器在一个网段就可以,IP不冲突,用于访问

    #!/bin/bash  

    #description : start realserver  

    SNS_VIP=192.168.6.150 

    /etc/rc.d/init.d/functions  

    case "$1" in  

    start)  

    echo " start LVS of REALServer"  

    /sbin/ifconfig lo:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 up  

    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  

    ;;  

    stop)  

    /sbin/ifconfig lo:0 down  

    echo "close LVS Directorserver"  

    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 "Usage: $0 {start|stop}"  

    exit 1  

    esac

    2台机器,分别给文件赋权限

     

    2台机器start

     

    ifconfig查看,此时是多出了一块网卡

     

    3. lvs+keepAlived安装配置(主lvs

    系统版本2.4以上,linux内置了LVS

     

    若有冲突报错,删除一下

     

     

    keepAlived

     

    可以查看到它的配置文件位置

     

    创建并覆盖文件

     

    输入 vi /etc/keepalived/keepalived.conf 编辑配置文件,加入以下内容

    global_defs {                       

    #   notification_email {             

    #   }

    #   smtp_connect_timeout 30

            router_id LVS_DEVEL             

    }

    vrrp_instance VI_1 {            

            state MASTER             

            interface ens33            

            virtual_router_id 51        

            priority 100                  

            advert_int 1           

            authentication {        

                    auth_type PASS

                    auth_pass 1111

            }

            virtual_ipaddress {         

                    192.168.6.150

            }

    }

    virtual_server 192.168.6.150 80 {

            delay_loop 6           

            lb_algo wrr            

            lb_kind DR                          

            nat_mask 255.255.255.0   

            persistence_timeout 0    

            protocol TCP                          

            real_server 192.168.6.130 80 {     

                    weight 1                     

                    TCP_CHECK {                     

                            connect_timeout 10   

                            nb_get_retry 3

                            delay_before_retry 3

                            connect_port 80

                    }

            }

            real_server 192.168.6.131 80 {

                    weight 2

                    TCP_CHECK {

                            connect_timeout 10

                            nb_get_retry 3

                            delay_before_retry 3

                            connect_port 80

                    }

            }

    }

    启动服务

     

    可以查看日志信息

     

    查看启动状态

     

    4. lvs+keepAlived负载均衡测试

    转发,通过VIP进行访问,真实处理请求的不一定是哪个http

     

    l 故障移除

    关掉某台http,模拟挂了

     

    此时,挂掉的机器,自动移除

    l 故障恢复自动添加

    再开启,模拟故障恢复

     

    此时,可以再次正常访问

     

    5. lvs备机搭建(备lvs

    系统版本2.4以上,linux内置了LVS

     

    若有冲突报错,删除一下

     

     

    keepAlived

     

    可以查看到它的配置文件位置

     

    创建并覆盖文件

     

    输入 vi /etc/keepalived/keepalived.conf 编辑配置文件,加入以下内容

    global_defs {                       

    #   notification_email {             

    #   }

    #   smtp_connect_timeout 30

            router_id LVS_DEVEL             

    }

    vrrp_instance VI_1 {            

            state BACKUP             

            interface ens33            

            virtual_router_id 51        

            priority 99                  

            advert_int 1           

            authentication {        

                    auth_type PASS

                    auth_pass 1111

            }

            virtual_ipaddress {         

                    192.168.6.150

            }

    }

    virtual_server 192.168.6.150 80 {

            delay_loop 6           

            lb_algo wrr            

            lb_kind DR                          

            nat_mask 255.255.255.0   

            persistence_timeout 0    

            protocol TCP                          

            real_server 192.168.6.130 80 {     

                    weight 1                     

                    TCP_CHECK {                     

                            connect_timeout 10   

                            nb_get_retry 3

                            delay_before_retry 3

                            connect_port 80

                    }

            }

            real_server 192.168.6.131 80 {

                    weight 2

                    TCP_CHECK {

                            connect_timeout 10

                            nb_get_retry 3

                            delay_before_retry 3

                            connect_port 80

                    }

            }

    }

    启动服务

     

    查看状态

     

    查看日志

     

    6. lvs测试

    l 备机自动切换

    模拟主LVS挂掉

     

    访问浏览器VIP,还是照常工作

     

    l 主机启动,主机自动上位

     

  • 相关阅读:
    BZOJ3868 : The only survival
    BZOJ3740 : pku2842 N-dimension Matching N维匹配
    BZOJ2990 : [Ontak2010]Keyboard
    BZOJ3548 : [ONTAK2010]Party
    BZOJ3189 : [Coci2011]Slika
    BZOJ2679 : [Usaco2012 Open]Balanced Cow Subsets
    BZOJ2981 : [Poi2002]括号
    BZOJ4116 : [Wf2015]Tours
    BZOJ4107 : [Wf2015]Asteroids
    BZOJ4118 : [Wf2015]Window Manager
  • 原文地址:https://www.cnblogs.com/zhang-da/p/13041192.html
Copyright © 2020-2023  润新知