1. 程式人生 > >lvs實現ftp負載均衡集群

lvs實現ftp負載均衡集群

lvs集群;負載均衡;keepalived

使用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 2

[[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

客戶端依然可以訪問到;


小結:

  • [[email protected] ~]# curl 192.168.2.59

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負載均衡集群