• 负载均衡(LB)软件 常见负载均衡软件有:LVS、Nginx、Haproxy LVS: 1). 基于4层网络协议,几乎无流量产生,这个特点也决定这几个负载均衡软件里负载能力最强,内存、CPU占用资源也低。 2). 应用范围广,不仅对Web服务做负载均衡,而且可结合其他应用做负载,如LVS+MySQL负载均衡。 3). 配置简单, 可配置东西较少。 4). 无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。 5). 有个虚IP概念。 Nginx: 1). 基于7层网络协议,对Http应用做分流策略,如配置域名。 2). 高负载、稳定。支持上万高并发。负载能力小于LVS。 3). 安装配置简单,支持的正则比Haproxy丰富。且对网络稳定性的依赖非常小。 4). 可通过端口检测到服务器内部的故障,如根据服务器处理网页返回的状态码、超时等,把返回错误的请求重新提交到另一个节点。 5). 作Web服务器。 6). 反向代理\负载均衡。 Haproxy: 1). 支持虚拟主机,可工作在4层、7层。 2). 负载均衡效率上来讲Haproxy比Nginx更出色,在并发处理上也是优于Nginx。 3). 能够补充Nginx的一些缺点,如支持Session的保持,Cookie的引导。同时支持通过获取指定的url来检测后端服务器的状态。 4). 支持负载均衡策略较多。如roundrobin简单轮询、leastconn最少服务器连接数、static-rr权重轮询、uri哈希、sourceIP哈希、url_param请求的URL参数等。
  • LVS+Keepalived LVS 是一个开源的软件,可实现 Linux平台下的负载均衡。LVS 是 Linux Virtual Server 的缩写,意思是 Linux 虚拟服务器。 Linux 内核2.4版本后,LVS 已经是 Linux 内核标准的一部分。 LVS主要工作是提供调度算法,把客户端请求按照需求调度在Real Server上,Keepalived 主要工作是提供 LVS 控制器的一个冗余,并且对Real Server做健康检查,发现Real Server故障,就把它从 LVS 集群中剔除,Real Server只负责提供服务。如LVS+Keepalived+Nginx模式,Nginx作为Real Server。 LVS转发模式 VS/NAT(Virtual Server via Network Address Translation):通过网络地址转换,调度器重写请求报文的目标地址,请求到后端Real Server,后端Real Server的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。客户请求哪里来从哪儿返回。 VS/TUN(Virtual Server via IP Tunneling):在使用上面的NAT 技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器把请求报文通过 IP 隧道转发至Real Server,而Real Server将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用 VS/TUN 技术后,集群系统的最大吞吐量可提高 10 倍。 VS/DR (Virtual Server via Direct Routing):VS/DR 通过改写请求报文的 MAC 地址,将请求发送到Real Server,而后端的Real Server将响应直接返回给客户。同 VS/TUN 技术一样,VS/DR 技术可极大地提高集群系统的伸缩性。后面就按此VS/DR模式作为操作例子。
  • LVS(VS/DR)+Keepalived高可用集群实例 OS环境:CentOS7 1). 在20、21上安装ipvsadm和keepalived软件
yum -y install ipvsadm
yum -y install keepalived

启动keepalived服务

systemctl start keepalived.service

使用配置LVS的时候,不能直接配置内核中的ipvs,需使用ipvs的管理工具ipvsadm进行管理。用于查看lvs转发及代理情况的工具。 2).修改keepalived配置文件 20的Master配置文件如下: vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
   notification_email {
     admin@localhost
   }
   notification_email_from root@localhost
   router_id LVS_01   #表示运行keepalived服务器的一个标识,发邮件时显示在邮件主题的信息
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI_1 {
    state MASTER    #指定keepalived的角色Master
    interface ens192     #网卡,ip a查看
    virtual_router_id 100     #虚拟路由标识,主备两个节点的设置必须一样,以指明各个节点属于同一VRRP组 
    priority 100    #定义优先级,Master的priority要高于slave
    advert_int 1    #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位秒
    authentication {    #设置验证类型和密码
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.20.1.99/24 dev ens192    #设置VIP
    }
}
virtual_server 10.20.1.99 443 {    #设置虚拟服务器,需指定虚拟IP地址和服务端口
    delay_loop 3    #健康时间检查,单位秒
    lb_algo rr    #负载均衡调度算法wlc|rr
    lb_kind DR    #设置LVS实现负载均衡机制,有NAT、TUN、DR三个模式
    persistence_timeout 50    #会话保持时间,单位秒。此选项对动态网页是非常有用
    protocol TCP    #指定转发协议类型,有TCP和UDP
    real_server 10.20.1.22 443 {    #Real Server服务器,这里为Nginx服务器
        weight 1    #设置权重
        TCP_CHECK {    #设置检查方式,可以设置HTTP_GET | SSL_GET
            connect_port 443    #检测Real Server的侦听端口
            connect_timeout 5    #超时时间,单位秒。如果在这个时间内无返回,则说明一次监测失败
            retry 3    #设置多少次监测失败,就判断这个Real Server死掉
            delay_before_retry 3    #重试间隔
        }
    }
    real_server 10.20.1.23 443 {
        weight 1
        TCP_CHECK {
            connect_port 443
            connect_timeout 5
            retry 3            
            delay_before_retry 3
        }
    }
}

21的slave的/etc/keepalived/keepalived.conf配置,需更改state Backup和修改priority的值小于master的priority。 Master服务器上查看IP,VIP在Master上。 ipvsadm命令查看规则。 3). Real Server配置 因为VS/DR模式,在后端Real Server即Nginx服务器上配置脚本。配置两台Nginx服务器上为回环地址lo:0绑定VIP地址、ARP广播。 vim /opt/scripts/lvs_rs.sh

#!/bin/bash
vip=10.20.1.99
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $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

在22、23服务器上分别执行。 4). 测试LVS+Keepalived高可用群集 客户端的浏览器中,能够通过LVS+Keepalived群集的VIP地址漂移(10.20.1.99)正常访问web,验证群集构建成功。 先在20Master上将keepalived.service服务器关闭,查看IP情况: 发现VIP没了。 然后在21Slave上查看VIP是否漂移过来了: 发现VIP已经来到Slave上了。 这时,将20Master上将keepalived.service服务又重新启动,VIP后回来了。