linux-lvs+keepalived

作者: 愚公移山 | 来源:发表于2021-05-31 23:57 被阅读0次

    Linux-Lvs的DR模式实现后端真实服务器的负载均衡

    DR模式也就是用直接路由技术实现虚拟服务器。它的连接调度和管理与NAT模式一样,但它的报文转发方法不同,DR模式通过改写请求报文的 MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给 客户。这种方式是负载调度机制中性能最高最好的

    文章正在审核中... - 简书

    keepalived+lvs实现实现负载均衡及高可用功能

    如果单台LVS发生突发情况,例如宕机、发生不可恢复现象,会导致用户无 法访问后端所有的应用程序。避免这种问题可以准备一台台备用的LVS,主 LVS 宕机,LVS VIP自动切换到从,继续提供服务。可以基于 LVS+Keepalived实现负载均衡及高可用功能,满足网站7x24小时稳定高效 的运行。

    下面我们直接操作:(实验是基于关闭selinux和firewalld的)

    安装:

    yum install ipvsadm -y

    配置要点:

    调度器的VIP,DIP和后端真实服务器IP必须配置在同一网段,都使用仅 主机模式;

    客户端的IP与路由器外网IP保持一个网段,且客户端的网关设置为路由 器的外网地址;

    后端真实服务器网关设置为路由器的内网地址;

    路由器开启数据包的转发;

    后端真实服务器要抑制VIP的arp广播;

    RS服务器和LVS服务器的VIP以子接口方式配置;

    记住配置网卡后,都需要重启网卡哦(systemctl restart network)

    环境:

    nginx:(vip绑定在回环的网卡上)

    RIP:192.168.1.103  VIP:192.168.1.200/32

    RIP:192.168.1.104  VIP:192.168.1.200/32

    lvs:(VIP以子接口方式配置)

    DIP:192.168.1.102  VIP:192.168.1.200

    RS:

    #服务器要抑制VIP的arp广播:

    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

    #RIP默认网关指向192.168.1.105——VIp加到回环地址里面的

    LVS:

    #VIP和DIP的默认网关都指向192.168.1.105

    #配置LVS:

    ipvsadm -A -t 192.168.1.200:80 # 工作模式如果不指定,默认是DR模式,如需指定使用-g

    ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.103

    ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.104

    #添加IP_VS模块——lvs的IP负载均衡技术是通过IP_VS模块来实现的

    modprobe ip_vs

    路由器:

    #一个ip仅主机,一个ip桥接。

    #开启数据转发:

    临时:

    echo 1 >/proc/sys/net/ipv4/ip_forward

    永久:

    vim /etc/sysctl.conf——追加

    net.ipv4.ip_forward = 1

    system -p——查看

    客户机测试:——成功

    keepalived+lvs实现实现负载均衡及高可用功能

    这里我们就在Linux-Lvs的DR模式实现后端真实服务器的负载均衡继续做实验

    我们先清空LVS集群服务

    ipvsadm -C

    master端:

    安装keepaalived:

    yum install keepalived -y

    修改配置文件:

    ! Configuration File for keepalived

    global_defs {

      router_id node1

    }

    vrrp_instance VI_1 {

        state MASTER

        interface ens33

        virtual_router_id 51

        priority 100

        advert_int 1

        authentication {

            auth_type PASS

            auth_pass 1111

        }

        virtual_ipaddress {

            192.168.1.200/24 #指定群集vip地址

        }

    }

    virtual_server 192.168.1.200 80 {

        delay_loop 6

        lb_algo rr #指定调度算法,轮询(rr)

        lb_kind DR #指定群集工作模式,直接路由(DR)

        persistence_timeout 0 #回话保持时间

        protocol TCP #应用服务采用的是 TCP协议

        sorry_server 192.168.1.200 80 #当配置在lvs上的rs都无法访问到时,就需要有一台备用的服务器来提供报错页面

        real_server 192.168.1.103 80 {

            weight 1 #节点的权重

            HTTP_GET {

                url {

                  path /

                  status_code 200 #通过返回的状态码判断服务是否存活

                # digest ff20ad2481f97b1754ef3e12ecd3a9cc #通过配置文件的哈希值判断 获取哈希的方法:genhash -s 192.168.1.104 -p 80 -u /index.html

                }

                connect_timeout 3 #检测时长

                nb_get_retry 3 #添加重试次数

                delay_before_retry 3 #添加重试间隔

            }

        }

        real_server 192.168.1.104 80 { #添加第二个 Web节点的地址、端口

            weight 1

            HTTP_GET {

                url {

                  path /

                  status_code 200

                # digest ff20ad2481f97b1754ef3e12ecd3a9cc

                }

                connect_timeout 3

                nb_get_retry 3

                delay_before_retry 3

            }

        }

    }

    启动keepalived

    systemctl start keepalived——看到集群由keepalived启动

    backup端:

    和lvs配置一样在backup服务器上也同样配置一遍。

    安装keepalived

    修改配置文件:

    ! Configuration File for keepalived

    global_defs {

       router_id node1

    }

    vrrp_instance VI_1 {

        state BACKUP

        interface ens33

        virtual_router_id 51

        priority 90

        advert_int 1

        authentication {

            auth_type PASS

            auth_pass 1111

        }

        virtual_ipaddress {

            192.168.1.200/24 #指定群集vip地址

        }

    }

    virtual_server 192.168.1.200 80 {

        delay_loop 6

        lb_algo rr #指定调度算法,轮询(rr)

        lb_kind DR #指定群集工作模式,直接路由(DR)

        persistence_timeout 0 #回话保持时间

        protocol TCP #应用服务采用的是 TCP协议

        sorry_server 192.168.1.200 80 #当配置在lvs上的rs都无法访问到时,就需要有一台备用的服务器来提供报错页面

        real_server 192.168.1.103 80 {

            weight 1 #节点的权重

            HTTP_GET {

                url {

                  path /

                  status_code 200 #通过返回的状态码判断服务是否存活

                 # digest ff20ad2481f97b1754ef3e12ecd3a9cc #通过配置文件的哈希值判断 获取哈希的方法:genhash -s 192.168.1.104 -p 80 -u /index.html

                }

                connect_timeout 3 #检测时长

                nb_get_retry 3 #添加重试次数

                delay_before_retry 3 #添加重试间隔

            }

        }

        real_server 192.168.1.104 80 { #添加第二个 Web节点的地址、端口

            weight 1

            HTTP_GET {

                url {

                  path /

                  status_code 200

                 # digest ff20ad2481f97b1754ef3e12ecd3a9cc

                }

                connect_timeout 3

                nb_get_retry 3

                delay_before_retry 3

            }

        }

    }

    启动keepalived

    systemctl start keepalived

    测试:

    master端关闭keepalived

    systemctl stop keepalived

    可以看到vip地址发生了飘移。(几乎一秒不到)

    客户端测试:(任然可以正常访问,几乎不受任何影响)

    ()

    相关文章

      网友评论

        本文标题:linux-lvs+keepalived

        本文链接:https://www.haomeiwen.com/subject/nyyisltx.html