zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Java Web 网络留言板2 JDBC数据源 (连接池技术)
    Java Web 网络留言板3 CommonsDbUtils
    Java Web ConnectionPool (连接池技术)
    Java Web 网络留言板
    Java Web JDBC数据源
    Java Web CommonsUtils (数据库连接方法)
    Servlet 起源
    Hibernate EntityManager
    Hibernate Annotation (Hibernate 注解)
    wpf控件设计时支持(1)
  • 原文地址:https://www.cnblogs.com/koboshi/p/4298586.html
Copyright © 2011-2022 走看看