lvs实现ftp负载均衡集群

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lvs实现ftp负载均衡集群相关的知识,希望对你有一定的参考价值。

使用lvs的NAT模式,布署LVS+VSFTPD实现FTP的负载均衡,要求主动模式和被动模式均可正常访问.






ftp被动模式配置:


DS配置 


echo 1 > /proc/sys/net/ipv4/ip_forward  #开启路由转发


[[email protected] ~]# iptables -t mangle -A PREROUTING  -p tcp --dport 20:21 -j MARK --set-mark 99

[[email protected] ~]# iptables -t mangle -A PREROUTING  -p tcp --dport 50000:50010 -j MARK --set-mark 99          #防火墙magle表打标记



[[email protected] ~]# ipvsadm -A -f 99 -s rr -p 400

[[email protected] ~]# ipvsadm -a -f 99 -r 192.168.2.49 -m -w

[[email protected] ~]# ipvsadm -a -f 99 -r 192.168.2.59 -m -w 2  

[[email protected] ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

FWM  99 rr persistent 400

  -> 192.168.2.49:0               Masq   2      0          0         

  -> 192.168.2.59:0               Masq   2      0          0    


masq 说明是采用lvs的nat模式

-m --masquerading 指定LVS 的工作模式为NAT 模式
#-w指定指定权重,wrr算法下有效



RS配置:

route add default gw 192.168.2.79 dev ens33

每个调度器都要作为RS的网关


DS配置

[[email protected] ~]# tail -3 /etc/vsftpd/vsftpd.conf 

pasv_min_port=50000   #指定ftp传输时候的端口范围

pasv_max_port=50010

pasv_address=192.168.1.79     #指定vip




ftp主动模式配置



DS配置

iptables -t nat -A POSTROUTING -s 192.168.1.79 -j SNAT --to 192.168.1.100

主动模式下,为了确保数据包可以从rs返回客户端需要做snat



实验结果

[[email protected] ~]# lftp 192.168.2.59:

lftp 192.168.2.59:~> ls

drwxr-xrwx    7 0        0              55 Sep 29 03:06 pub

lftp 192.168.2.59:/> 



[[email protected] ~]# lftp 192.168.2.59

lftp 192.168.2.59:~> set ftp:passive-mode off

lftp 192.168.2.59:~> ls

drwxr-xrwx    7 0        0              55 Sep 29 03:06 pub

lftp 192.168.2.59:/> 



调试:

  1. 修改vip的掩码

[[email protected] ~]# ifconfig ens33:0 192.168.1.79/25 之后可以正常访问

[[email protected] ~]# ifconfig ens33:0 192.168.1.79/26可以正常访问

[[email protected] ~]# ifconfig ens33:0 192.168.1.79/28 连接中断

[[email protected] ~]# ifconfig ens33:0 192.168.1.79/27 连接中断

[[email protected] ~]# ifconfig ens33:0 192.168.1.79/29连接中断

小结:vip的掩码设置,掩码会影响网络位,当不在同一网段的时候就会连接不到。



 2.  删除snat 之后主动模式出错了

[[email protected] ~]# iptables -t nat -D POSTROUTING  1

小结:主动模式连接ftp下,检查pub下面的内容会发现连接不到了。







keepalived


keepalived主要有三个模块,分别是corecheckvrrpcore模块为 keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解 析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP 协议的。 

rs上面需要添加每个调度器的ip作为网关

rs配置

route add default gw 192.168.2.89 dev ens33



lvs采用nat模式 ,本实验keepalived的配置文件

[[email protected] ~]# vim /etc/keepalived/keepalived.conf


   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id 1

}


vrrp_instance VI_1 {

    state MASTER

    interface ens33       #vip dip所在的接口

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.79/24   #vip,最好带上掩码

    }

}

# vip,客户端访问的是vip

virtual_server 192.168.1.79 80 {

    delay_loop 6

    lb_algo rr

    lb_kind NAT 

    nat_mask 255.255.255.0

    #persistence_timeout 50   #这里注释不起作用,访问时候依然会持久连接

    protocol TCP


    real_server 192.168.2.49 80 {   #ip后面接空格,避免语法检测错误

        weight 1

        TCP_CHECK {

        connect_timeout 3

        }

    }

    real_server 192.168.2.59 80 {

        weight 1

        TCP_CHECK {

        connect_timeout 3

        }

    }

}

 

调试

[[email protected] ~]# systemctl stop keepalived

客户端依然可以访问到;


小结:

curl: (7) Failed connect to 192.168.2.59:80; 拒绝连接

出现这个错误 可能原因:

  1. 是服务坏掉了

  2. 端口不对

  3. 防火墙等


  • 客户端多次总是请求同一个web服务的原因有:

  1. 持久连接

  2. 其他的服务坏掉





本文出自 “linux” 博客,请务必保留此出处http://zhouyaxiong.blog.51cto.com/11476760/1971021

以上是关于lvs实现ftp负载均衡集群的主要内容,如果未能解决你的问题,请参考以下文章

keepalived+LVS 实现双机热备负载均衡失效转移 高性能 高可用 高伸缩性 服务器集群

基于lvs实现4层负载均衡

基于LVS的负载均衡实现之NAT

项目实战02:LVS 实现负载均衡

lvs+keepalived+nginx实现高性能负载均衡集群

使用LVS实现负载均衡原理及安装配置详解