lvs+keepAlived负载均衡搭建

lvs+keepAlived→效率最高的负载均衡

一、简介

1.lvs是什么?

  • 英文全称是Linux Virtual Server,即Linux虚拟服务器。
  • 功能就是请求分发给后端真实服务器处理。
  • 提供了多种调度算法
  1. 轮询调度(Round-Robin Scheduling)
  2. 加权轮询调度(Weighted Round-Robin Scheduling)
  3. 最小连接调度(Least-Connection Scheduling)
  4. 加权最小连接调度(Weighted Least-Connection Scheduling)
  5. 基于局部性的最少链接(Locality-Based Least Connections Scheduling)
  6. 带复制的基于局部性最少链接(Locality-Based Least     Connections with Replication Scheduling)
  7. 目标地址散列调度(Destination Hashing Scheduling)
  8. 源地址散列调度(Source Hashing Scheduling)
  9. 最短预期延时调度(Shortest Expected Delay Scheduling)
  10. 不排队调度(Never Queue Scheduling)对应: rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq
  • 有三种转发规则
  1. NAT:简单理解,就是数据进出都通过LVS,性能不是很好。
  2. TUNL:简单理解:隧道
  3. DR:最高效的负载均衡规则

2.keepAlived是什么?

  • 因为所有的请求都要经过负载均衡,所以负载均衡必然是非常重要,不能挂掉,说白了就是要keep the lvs alived。
  • 提供的功能就是可以配置2台LVS,一台主机,一台备机。并且检测任何一个节点是否还活着。

3.lvs的优点?

  • 抗负载能力强,因为lvs工作方式的逻辑是非常之简单,而且工作在网络4层仅做请求分发之用,没有流量,所以在效率上基本不需要太过考虑。
  • 有完整的双机热备方案,当节点出现故障时,lvs会自动判别,所以系统整体是非常稳定的。
  • 基本上能支持所有应用,因为lvs工作在4层,所以它可以对几乎所有应用做负载均衡,包括http、数据库、聊天室等等。

4.lvsnginx对比?

  • 负载度             lvs优于nginx
  • 稳定度             lvs优于nginx
  • 服务器性能要求    lvs优于nginx
  • 网络层数的效率    lvs优于nginx
  • 网络七层:应用层、会话层、表示层、传输层、网络层、链路层、物理层
  • 功能多少           nginx优于lvs

5.lvs+keepAlived的应用场景?

大型网站负载均衡

二、lvs+keepAlived安装

1.软件环境

  • CentOS7(4台)
  • JDK1.8
  • 2台http服务器
  • 2台负载均衡:lvs+keepAlived

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

  • 输入 yum -y install httpd 安装http服务器
  • 输入 systemctl enable httpd.service 设为开机自启动
  • 输入 systemctl start httpd.service 启动http服务器
  • 输入 systemctl status httpd.service 查看http服务器状态
  • 进入 /var/www/html/ 目录,输入 vi index.html,随便写点内容,标识节点即可
  • 输入 vi /etc/init.d/realserver 配置真实服务器,加入以下内容
  • #!/bin/bash 

    #description : start realserver 

    SNS_VIP=192.168.11.200  #定义VIP变量,注意在同一网段

    /etc/rc.d/init.d/functions  #导脚本库

    case "$1" in     #case语句 $1传递给该shell脚本的第一个参数

    start) 

    echo " start LVS of REALServer" 

    /sbin/ifconfig lo:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 up  $SNS_VIP   #增加本地路由 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 

    ;; 

    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

  • 输入 chmod 777 /etc/init.d/realserver 赋予权限
  • 输入 service realserver start 启动服务
  • 输入 ifconfig 查看,多出一块网卡

3.lvs+keepAlived安装配置

  • 输入 uname -a 查看Linux版本,如果为2.6以后,内核中已有lvs
  • 输入 yum -y install keepalived 安装keepAlived
  • 输入 rpm -ql keepalived 查看rpm包安装到的目录
  • 输入 > /etc/keepalived/keepalived.conf 创建并覆盖配置文件
  • 输入 vi /etc/keepalived/keepalived.conf 编辑配置文件,加入以下内容

global_defs {        #全局配置部分

#   notification_email {   #下面几行均为全局通知配置,可以实现出现问题后报警,但功能有限,因此注释掉,并采用Nagios监视lvs运行情况

#   }

#   smtp_connect_timeout 30

        router_id LVS_DEVEL    #设置lvs的id,在一个网络内应该是唯一的

}

vrrp_instance VI_1 { #设置vrrp组,唯一且同一LVS服务器组要相同

        state MASTER    #备份LVS服务器设置为BACKUP,这里是MASTER

        interface eno16777736    #设置对外服务的接口

        virtual_router_id 51 #设置虚拟路由标识

        priority 100  #设置优先级,数值越大,优先级越高,backup设置为99,这样就能实现当master宕机后自动将backup变为master,而当原master恢复正常时,则现在的master再次变为backup。

        advert_int 1   #设置同步时间间隔

        authentication {    #设置验证类型和密码,master和buckup一定要设置一样

                auth_type PASS

                auth_pass 1111 #主备机设置为一样,互相通话

        }

        virtual_ipaddress {  #设置VIP,可以多个,每个占一行

                192.168.11.200

        }

}

virtual_server 192.168.11.200 80 { #tomcat等服务器也要为80端口

        delay_loop 6 #健康检查时间间隔,单位s

        lb_algo wrr    #负载均衡调度算法设置为加权轮询

        lb_kind DR      #负载均衡转发规则,这是效率最高的规则

        nat_mask 255.255.255.0  #网络掩码,DR模式要保障真实服务器和lvs在同一网段

        persistence_timeout 0  #会话保持时间,单位s,这里设置保持时间,不能解决session共享问题,session按最后一次请求算

        protocol TCP            #协议

        real_server 192.168.11.135 80 {  #真实服务器配置,80表示端口

                weight 1    #权重,和wrr加权轮询配对出现

                TCP_CHECK {    #服务器检测方式设置 keepalived的健康检查方式 有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK

                        connect_timeout 10  #连接超时时间

                        nb_get_retry 3 #失败重试次数

                        delay_before_retry 3 #失败重试的间隔时间

                        connect_port 80 #连接的后端端口

                }

        }

        real_server 192.168.11.138 80 {

                weight 2

                TCP_CHECK {

                        connect_timeout 10

                        nb_get_retry 3

                        delay_before_retry 3

                        connect_port 80

                }

        }

}

  • 输入 service keepalived start
  • 可以输入 tail -f /var/log/messages 查看日志
  • 还可以输入 service keepalived status 查看运行状态

4.lvs+keepAlived负载均衡测试

  • 转发
  • 故障移除
  • 故障恢复自动添加

5.lvs备机搭建

  • 输入 uname -a 查看Linux版本,如果为2.6以后,内核中已有lvs
  • 输入 yum -y install keepalived 安装keepAlived
  • 输入 rpm -ql keepalived 查看rpm包安装到的目录
  • 输入 > /etc/keepalived/keepalived.conf 创建并覆盖配置文件
  • 输入 vi /etc/keepalived/keepalived.conf 编辑配置文件,加入以下内容
  • global_defs {        #全局配置部分

    #   notification_email {   #下面几行均为全局通知配置,可以实现出现问题后报警,但功能有限,因此注释掉,并采用Nagios监视lvs运行情况

    #   }

    #   smtp_connect_timeout 30

            router_id LVS_DEVEL    #设置lvs的id,在一个网络内应该是唯一的

    }

    vrrp_instance VI_1 { #设置vrrp组,唯一且同一LVS服务器组要相同

            state BACKUP    #备份LVS服务器设置为BACKUP,这里是MASTER

            interface eno16777736    #设置对外服务的接口

            virtual_router_id 51 #设置虚拟路由标识

            priority 99  #设置优先级,数值越大,优先级越高,backup设置为99,这样就能实现当master宕机后自动将backup变为master,而当原master恢复正常时,则现在的master再次变为backup。

            advert_int 1   #设置同步时间间隔

            authentication {    #设置验证类型和密码,master和buckup一定要设置一样

                    auth_type PASS

                    auth_pass 1111 #主备机设置为一样,互相通话

            }

            virtual_ipaddress {  #设置VIP,可以多个,每个占一行

                    192.168.11.200

            }

    }

    virtual_server 192.168.11.200 80 { #tomcat等服务器也要为80端口

            delay_loop 6 #健康检查时间间隔,单位s

            lb_algo wrr    #负载均衡调度算法设置为加权轮询

            lb_kind DR      #负载均衡转发规则,这是效率最高的规则

            nat_mask 255.255.255.0  #网络掩码,DR模式要保障真实服务器和lvs在同一网段

            persistence_timeout 0  #会话保持时间,单位s,这里设置保持时间,不能解决session共享问题,session按最后一次请求算

            protocol TCP            #协议

            real_server 192.168.11.135 80 {  #真实服务器配置,80表示端口

                    weight 1    #权重,和wrr加权轮询配对出现

                    TCP_CHECK {    #服务器检测方式设置 keepalived的健康检查方式 有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK

                            connect_timeout 10  #连接超时时间

                            nb_get_retry 3 #失败重试次数

                            delay_before_retry 3 #失败重试的间隔时间

                            connect_port 80 #连接的后端端口

                    }

            }

            real_server 192.168.11.138 80 {

                    weight 2

                    TCP_CHECK {

                            connect_timeout 10

                            nb_get_retry 3

                            delay_before_retry 3

                            connect_port 80

                    }

            }

    }

  • 输入 service keepalived start
  • 可以输入 tail -f /var/log/messages 查看日志
  • 还可以输入 service keepalived status 查看运行状态

6.lvs主备测试

  • 输入 tail -f /var/log/messages 查看备机日志
  • 主机中输入 service keepalived stop 模拟挂掉
  • 备机自动切换
  • 主机启动,主机自动上位

你可能感兴趣的:(大数据,运维)