1、负载均衡lvs介绍
    LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director Server上,然后它把用户的请求根据设置好的调度算法,智能均衡地分发到后端真正服务器(real server)上。为了避免不同机器上用户请求得到的数据不一样,需要用到了共享存储,这样保证所有用户请求的数据是一样的。
  常用的负载均衡开源软件有nginx、lvs、haproxy,商业的硬件负载均衡设备F5、Netscale。 LVS是 Linux Virtual Server 的简称,也就是Linux虚拟服务器。这是一个由章文嵩博士发起的一个开源项目,它的官方网站是 http://www.linuxvirtualserver.org 现在 LVS 已经是 Linux 内核标准的一部分。使用 LVS 可以达到的技术目标是:通过 LVS 达到的负载均衡技术和 Linux 操作系统实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的性能。LVS 是一个实现负载均衡集群的开源软件项目,LVS架构从逻辑上可分为调度层、Server集群层和共享存储。
  LVS可以实现负载均衡,但是不能够进行健康检查,比如一个rs出现故障,LVS 仍然会把请求转发给故障的rs服务器,这样就会导致请求的无效性。keepalive 软件可以进行健康检查,而且能同时实现 LVS 的高可用性,解决 LVS 单点故障的问题,其实 keepalive 就是为 LVS 而生的。
2、本次实验环境介绍
dr1:10.1.52.13       Keepalived1 + lvs1(dr1) 
dr2:10.1.52.14       Keepalived2 + lvs2(dr2)
rs1:10.1.52.15
rs2:10.1.52.16
vip:10.1.52.10

3、软件安装
Lvs + keepalived的dr服务器上2个节点安装
# yum install ipvsadmkeepalived -y
rs1、rs2、服务器上安装nginx(略)
# yum install nginx -y
4、脚本设置
rs服务器上两台脚本的设置:
#vi /usr/local/sbin/lvs_dr_rs.sh
#! /bin/bash
vip=10.1.52.10
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $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

保存退出!
执行脚本
keepalived的两台dr服务器上配置脚本
主节点( MASTER )配置文件
vi /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.1.52.10
    }
}
 
virtual_server 10.1.52.10 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 0
    protocol TCP
 
    real_server 10.1.52.15 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
 
    real_server 10.1.52.16 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}

从节点( BACKUP )配置文件
拷贝主节点的配置文件keepalived.conf,然后修改如下内容:
state MASTER -> state BACKUP
priority 100 -> priority 90
keepalived的2个节点执行如下命令,开启转发功能:
# echo 1 > /proc/sys/net/ipv4/ip_forward
 5、启动keepalived
先主后从分别启动keepalive
service keepalived start


6、实验验证
实验1:手动关闭rs1服务,去访问http://10.1.52.10结果一直是访问rs2的节点


实验2、重新开启rs1的nginx服务访问http://10.1.52.10,结果按照轮询rr调度算法访问rs1和rs2


实验3:验证keepalived的HA
首先在dr1上执行ip addr可以可以看到vip在master节点上,此时在dr1上执行service keepalived stop命令,这时vip不在dr1上了,去dr2上执行ip addr 发现vip漂在dr2的salve节点上,继续访问http://10.1.52.10依然正常
 
 
 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐