linux-lvs+keepalived

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)