lvs+keepAlived——负载均衡

一、 简介

1. 负载均衡的类型

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

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

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

2. lvs是什么?

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

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

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

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

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的体系结构

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

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

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

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

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

 

 

 

4. keepAlived是什么?

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

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

5. lvs的优点?

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

 

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

 

 

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

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

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

 

 

 

6. lvs与nginx对比?

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 2台http服务器

l 2台负载均衡:lvs+keepAlived

 

LVS和keepalived负载均衡、lvs主备机测试_服务器_04

 

 

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

首先,后2台装http服务器

 

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

 

 

设置开机自启动

 

LVS和keepalived负载均衡、lvs主备机测试_服务器_06

 

 

开启服务

 

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

 

 

查看服务

 

LVS和keepalived负载均衡、lvs主备机测试_服务器_08

 

 

此时,可以访问测试

 

LVS和keepalived负载均衡、lvs主备机测试_服务器_09

 

 

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

 

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

 

 

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

 

 

 

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

 

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

 

 

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

 

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

 

 

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台机器,分别给文件赋权限

 

LVS和keepalived负载均衡、lvs主备机测试_服务器_14

 

 

2台机器start

 

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

 

 

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

 

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

 

 

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

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

 

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

 

 

若有冲突报错,删除一下

 

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

 

 

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

 

 

 

装keepAlived

 

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

 

 

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

 

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

 

 

创建并覆盖文件

 

LVS和keepalived负载均衡、lvs主备机测试_服务器_22

 

 

l 输入 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

                }

        }

}

启动服务

 

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

 

 

可以查看日志信息

 

LVS和keepalived负载均衡、lvs主备机测试_服务器_24

 

 

查看启动状态

 

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

 

 

4. lvs+keepAlived负载均衡测试

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

 

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

 

 

l 故障移除

关掉某台http,模拟挂了

 

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

 

 

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

 

l 故障恢复自动添加

再开启,模拟故障恢复

 

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

 

 

此时,可以再次正常访问

 

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

 

 

5. lvs备机搭建(备lvs)

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

 

LVS和keepalived负载均衡、lvs主备机测试_服务器_30

 

 

若有冲突报错,删除一下

 

LVS和keepalived负载均衡、lvs主备机测试_服务器_31

 

 

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

 

 

 

装keepAlived

 

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

 

 

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

 

LVS和keepalived负载均衡、lvs主备机测试_服务器_34

 

 

创建并覆盖文件

 

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

 

 

l 输入 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

                }

        }

}

启动服务

 

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

 

 

查看状态

 

LVS和keepalived负载均衡、lvs主备机测试_服务器_37

 

 

查看日志

 

LVS和keepalived负载均衡、lvs主备机测试_服务器_38

 

 

6. lvs主备测试

l 备机自动切换

模拟主LVS挂掉

 

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

 

 

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

 

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

 

 

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

 

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