码迷,mamicode.com
首页 > 其他好文 > 详细

CentOS7构建LVS+Keepalived高可用方案

时间:2020-03-08 15:51:16      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:正则   centos7   管理工具   pre   linu   UNC   pass   com   png   

  • 负载均衡(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
    技术图片
    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   #表示运行keepalived服务器的一个标识,发邮件时显示在邮件主题的信息
    vrrp_skip_check_adv_addr
    vrrp_garp_interval 0
    vrrp_gna_interval 0
    }
    vrrp_instance VI_1 {
    state MASTER    #指定keepalived的角色Master
    interface ens192     #网卡,ip a查看
    virtual_router_id 100     #虚拟路由标识,主备两个节点的设置必须一样,以指明各个节点属于同一VRRP组 
    priority 100    #定义优先级,Master的priority要高于slave
    advert_int 1    #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位秒
    authentication {    #设置验证类型和密码
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.20.1.99/24 dev ens192    #设置VIP
    }
    }
    virtual_server 10.20.1.99 443 {    #设置虚拟服务器,需指定虚拟IP地址和服务端口
    delay_loop 3    #健康时间检查,单位秒
    lb_algo rr    #负载均衡调度算法wlc|rr
    lb_kind DR    #设置LVS实现负载均衡机制,有NAT、TUN、DR三个模式
    persistence_timeout 50    #会话保持时间,单位秒。此选项对动态网页是非常有用
    protocol TCP    #指定转发协议类型,有TCP和UDP
    real_server 10.20.1.22 443 {    #Real Server服务器,这里为Nginx服务器
        weight 1    #设置权重
        TCP_CHECK {    #设置检查方式,可以设置HTTP_GET | SSL_GET
            connect_port 443    #检测Real Server的侦听端口
            connect_timeout 5    #超时时间,单位秒。如果在这个时间内无返回,则说明一次监测失败
            retry 3    #设置多少次监测失败,就判断这个Real Server死掉
            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上。
    技术图片
    ipvsadm命令查看规则。
    技术图片
    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服务器上分别执行。
    技术图片
    4). 测试LVS+Keepalived高可用群集
    客户端的浏览器中,能够通过LVS+Keepalived群集的VIP地址漂移(10.20.1.99)正常访问web,验证群集构建成功。
    先在20Master上将keepalived.service服务器关闭,查看IP情况:
    技术图片
    发现VIP没了。
    然后在21Slave上查看VIP是否漂移过来了:
    技术图片
    发现VIP已经来到Slave上了。
    这时,将20Master上将keepalived.service服务又重新启动,VIP后回来了。

  • CentOS7构建LVS+Keepalived高可用方案

    标签:正则   centos7   管理工具   pre   linu   UNC   pass   com   png   

    原文地址:https://blog.51cto.com/10874766/2476348

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!