LVS 创始人是阿里首席架构师章文嵩博士,目前LVS已经成为了linux内核的一部分,它的核心程序是 ipvsadm
LVS 软件包,rhel6.5 安装光盘中,在 LoadBalancer 仓库中,安装的时候,假设本地触发挂载着安装光盘,如果yum 没有指定 LoadBalancer,你可以自己到 /etc/yum.repos.d/*.repo 文件中增加这个仓库
[LoadBalancer]
baseurl=file:///misc/cd/LoadBalancer
也可以直接 rpm -ivh 安装,因为rhel6.5系统中, ipvsadm 没有依赖关系
首先看一下架构图:(只对业务服务器做 LVS 负载均衡,调度器、数据库服务器先不考虑 高可用集群)
LVS原理简述:
客户来访问应用,访问的是调度机,调度机(Director Server)通过负载均衡调度算法,把连接分发给真实服务器(Real Server),真实服务器接受到请求后,直接回应客户端了,而不会经过调度器。
调度器和真实服务器都功用同一个 vip 调度器上,对物理网卡做一个子接口,例如 eth0:0,在这上面配置 vip;而应用服务器上,对 local 网卡做子接口 lo:0 ,同样配置 vip,
调度器和应用服务器都有一个相同的vip,就会带来一个问题: 这三台机器都用同一个 vip 那么 APR 怎么解析呢?
因此,需要对应用服务器上修改内核参数,使得应用服务器不对 vip 的APR请求包做应答,而调度器不修该,它来应答网络中对 vip 的 APR请求
修改完内核参数后, sysctl -p 重新加载内核参数,同时能检测是否修改正确(写的有问题,会报错)
在 调度器上配置 LVS :
service ipvsadm save 是将配置永久存盘
客户端测试:
至此,LVS 负载均衡也就可以用了,当然,这里只是简要介绍一下过程,调度器、数据库服务器都需要做高可用配置,避免单点故障问题。
LVS 有个缺点,不同于 HAProxy 自带有健康监控功能,当有RealServer 挂了,调度器它是不知道的,它还会把连接分发过去,为了解决这个问题,工作中我通过写个shell脚本,不断地去检查应用服务器的服务端口是否开放着,来检查每个RealServer 的状态,坏了,把它从 LVS规则中移除,好了,再加回来。
一口气敲下来的,如果误,大家指出来哈
欢迎志同道合的朋友进行技术交流
鄙人的 邮箱: chujie_linux@sina.com