• LVS+Keepalived(DR模式)学习笔记


    1.简述

    在互联网的中型项目中,单服务器往往已经无法满足业务本身的性能要求,这时候就会平行扩展,把负载分摊到数台服务器上(集群)。一般实现集群有DNS轮询,LVS,nginx负载均衡。

    集群主要目的包括如下三点:高可用、可扩展、负载均衡。

    一个完整的集群架构,则需要包含如下三个功能:负载均衡、故障隔离、失败切换

    负载均衡:根据设定的算法,通过负载均衡器(Director)把外部请求转发到各个集群中的服务器上(Real server)

    故障隔离:当集群中一个或多个服务器(Real server)发生故障或无法提供服务时,集群能够把它们从转发队列中移除出去,以确保用户访问不会被错误转发到无法提供的服务器(Real server)处理。而当故障的服务器(Real server)重新恢复正常时候,又能够重新加入到集群的转发队列中。

    失败切换:失败切换主(Master)要就是去除负载均衡器(Director)的单点问题,一旦负载均衡器(Director)发生故障,备机(Slave)能够替代主(Master)负载均衡器(Director)接受用户请求,而当主负载均衡器(Director)恢复正常时,能够重新接管用户请求(根据配置而定)

    LVS是Linux Virtual Linux的缩写,即Linux虚拟服务器,是一个常用的服务器集群系统,该功能已经广泛集成在Linux内核中。

    Keepalived则是一个服务器检测状态软件,能够为集群提供故障隔离和失败切换功能

    ipvsadm则是LVS的管理工具,能够添加,修改,删除,查看当前集群的配置和转发状态等

    在使用Keepalived的方案中,只要系统安装有ipvsadm命令,只需要通过Keepalived的配置文件即可实现集群的所有配置。

    此次主要介绍DR模式下的集群配置,DR直接路由,负载均衡器(Director)只负转发用户请求,请求响应由服务器(Real server)直接提供。

    以下为简单的架构图

    2.安装

    2.1.ipvsadm安装

    yum install ipvsadm

    2.2.Keepalived安装

    yum install keepalived

    2.3.LVS支持情况查看

    uname -r
    # 查看linux内核版本,2.4后已经集成,2.4前请重新编译内核(现在都没有2.4之前的了)

    3.配置

    预设环境:

    负载均衡器A:

    ip地址: 192.168.1.12

    集群VIP:192.168.1.100

    真实服务器B:

    ip地址:192.168.1.13

    组播地址:192.168.1.100

    真实服务器C:

    ip地址:192.168.1.14

    组播地址:192.168.1.100

    真实服务器配置:

    真实服务器无需安装任何软件,只需像普通非集群服务器配置即可

    # 可以把以下命令写入shell脚本,并在/etc/rc.local中配置为每次开机自动执行
    # 注意:必须绑定在环回网卡(lo)
    # down是为了让脚本可重复执行
    ifconfig lo:0 192.168.1.130 broadcast 192.168.1.130 netmask 255.255.255.255 down
    ifconfig lo:0 192.168.1.130 broadcast 192.168.1.130 netmask 255.255.255.255 up
    # 此步骤十分重要,在实际应用中集群的多台真实服务器均使用同一组播地址,因此需要抑制ARP广播
    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

    执行成功后,输入ifconfig应该会见到如下结果:

    lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 192.168.1.100  netmask 255.255.255.255
            loop  txqueuelen 0  (Local Loopback)

    由于抑制了ARP广播,输入ping 192.168.1.100应为如下结果:

    PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.
    --- 192.168.1.100 ping statistics ---
    6 packets transmitted, 0 received, 100% packet loss, time 5042ms

    无法ping通

    负载均衡器配置

    Keepalived默认配置文件位置/etc/keepalived/keepalived.conf

    配置如下:

    virtual_server 192.168.1.100 80 {
        delay_loop 6
        lb_algo rr # rr即为轮询
        lb_kind DR # DR模式
        nat_mask 255.255.255.255
        #persistence_timeout 600 #会话保持时间
        protocol TCP
    
        real_server 192.168.1.13 80 {
            #weight 100 #在wlc负载均衡算法时生效
            # 真实服务器状态检查
            TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
        }
    
        real_server 192.168.1.14 80 {
            #weight 100 #在wlc负载均衡算法时生效
            # 真实服务器状态检查
            TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
        }
    }

    输入keepalived -D命令启动keeplived

    查看keepalived运行状态(正常启动为三个进程)

    ps aux | grep "keepalived"

    查看keepalived运行日志

    tail /var/log/message

    检查配置结果(正常情况下能够见到配置的信息已经被正确加载)

    ipvsadm -L
  • 相关阅读:
    ActiveMQ 中的链表
    ActiveMQ 的线程池
    ActiveMQ broker解析
    ActiveMQ broker和客户端之间的确认
    ActiveMQ producer 流量控制
    基于大数据的精准营销与应用场景
    Math.abs为Integer.Min_VALUE返回错误的值
    使用http_load网站压力测试
    可伸缩系统的架构经验
    Tumblr:150亿月浏览量背后的架构挑战
  • 原文地址:https://www.cnblogs.com/koboshi/p/4298586.html
Copyright © 2020-2023  润新知