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 {
     admin@localhost
    }
    notification_email_from root@localhost
    router_id LVS_01
    vrrp_skip_check_adv_addr
    vrrp_garp_interval 0
    vrrp_gna_interval 0
    }
    vrrp_instance VI_1 {
    state MASTER
    interface ens192
    virtual_router_id 100
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.20.1.99/24 dev ens192
    }
    }
    virtual_server 10.20.1.99 443 {
    delay_loop 3
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP
    
    real_server 10.20.1.22 443 {
        weight 1
        TCP_CHECK {
            connect_port 443
            connect_timeout 5
            retry 3
            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后回来了。

猜你喜欢

转载自blog.51cto.com/10874766/2476348