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 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:/>
調試:
修改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主要有三個模塊,分別是core、check和vrrp。core模塊為 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; 拒絕連接
出現這個錯誤 可能原因:
是服務壞掉了
端口不對
防火墻等
客戶端多次總是請求同一個web服務的原因有:
持久連接
其他的服務壞掉
本文出自 “linux” 博客,請務必保留此出處http://zhouyaxiong.blog.51cto.com/11476760/1971021
lvs實現ftp負載均衡集群