CentOS7构建LVS+Keepalived高可用方案

负载均衡(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
CentOS7构建LVS+Keepalived高可用方案
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 {
 
}
notification_email_from 
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上。
CentOS7构建LVS+Keepalived高可用方案
ipvsadm命令查看规则。
CentOS7构建LVS+Keepalived高可用方案
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服务器上分别执行。
CentOS7构建LVS+Keepalived高可用方案
4). 测试LVS+Keepalived高可用群集
客户端的浏览器中,能够通过LVS+Keepalived群集的VIP地址漂移(10.20.1.99)正常访问web,验证群集构建成功。
先在20Master上将keepalived.service服务器关闭,查看IP情况:
CentOS7构建LVS+Keepalived高可用方案
发现VIP没了。
然后在21Slave上查看VIP是否漂移过来了:
CentOS7构建LVS+Keepalived高可用方案
发现VIP已经来到Slave上了。
这时,将20Master上将keepalived.service服务又重新启动,VIP后回来了。

相关推荐