回顧之前學的知識:
[root@lvs-lvs ~]# ipvsadm -Ln查看ipvsadm規則(-n表示以數字方式顯示,不解析)
lvs是四層的,不能做到hash(http://vip/test.html),基於傳輸層,而haproxy和nginx支持7層的,lvs只能四層
--exact顯示精確值:[root@lvs-lvs ~]# ipvsadm -Ln --exact
-c顯示ipvs連接輸出:[root@lvs-lvs ~]# ipvsadm -Ln -c
--stats統計信息:[root@lvs-lvs ~]# ipvsadm -Ln --stats
--rate輸出速率信息:[root@lvs-lvs ~]# ipvsadm -Ln --rate
ipvs規則在內存中也有個文件:[root@lvs-lvs ~]# cat /proc/net/ip_vs
連接情況:[root@lvs-lvs ~]# cat /proc/net/ip_vs_conn
清除所有ipvs規則:[root@lvs-lvs ~]# ipvsadm -C
保存規則:[root@lvs-lvs ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm(必須要-n選項)
LVS-nat的特點:
- RIP與DIP在同一網絡
- 支持端口映射
- Director要打開核心轉發功能
實驗開始
一、架構圖:
二、實驗環境要求:
如上圖所示:需要5臺機器
第一臺做client:IP:10.0.3.64
第二臺做router(兩塊網卡):IP1:10.0.3.32 IP2:192.168.137.133
第三臺是lvs服務器:IP:192.168.137.132
第四臺是lvs-web1:IP:192.168.137.129
第五臺是lvs-web2:IP:192.168.137.129
需要一個VIP:192.168.137.100
還有:10.0.0網段是橋接網段,192.168.137網段是僅主機網段
所有機器關閉防火牆,selinux,清空iptables
三、配置客戶端的網關:
網關指向10.0.3.32(路由器的左邊)
四、配置router
開啓核心路由轉發(永久開啓需寫入配置文件):
五、配置lvs-web1:
如上圖所示,將arp_ignore改爲1,arp_announce改爲2(永久生效需要寫入配置文件,all表示改所有,lo表示改lo網卡)
查看ip:
安裝httpd服務,寫入測試網頁:
[root@lvs-web1 ~]# yum install httpd -y
[root@lvs-web1 ~]# systemctl start httpd
[root@lvs-web1 ~]# vim /var/www/html/index.html
[root@lvs-web1 ~]# cat /var/www/html/index.html
lvs-web1
別忘了設置默認網關
六、同理設置lvs-web2
臨時修改arp_ignore和arp_announce並綁定VIP
安裝httpd並寫入測試文件
[root@lvs-web2 ~]# yum install httpd -y
[root@lvs-web2 ~]# systemctl start httpd
[root@lvs-web2 ~]# vim /var/www/html/index.html
[root@lvs-web2 ~]# cat /var/www/html/index.html
lvs-web2
別忘了設置默認網關
七、修改lvs-lvs
修改默認網關:
臨時打開核心路由轉發:
綁定VIP(LVS機器不用修改arp參數,隨便綁哪個迴環網卡)
[root@lvs-lvs ~]# ip a a 192.168.137.100/32 dev lo
[root@lvs-lvs ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet 192.168.137.100/32 scope global lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:c0:5b:59 brd ff:ff:ff:ff:ff:ff
inet 192.168.137.132/24 brd 192.168.137.255 scope global noprefixroute dynamic ens33
valid_lft 1518sec preferred_lft 1518sec
inet6 fe80::20c:29ff:fec0:5b59/64 scope link
valid_lft forever preferred_lft forever
設置IPVS規則
[root@lvs-lvs ~]# ipvsadm -A -t 192.168.137.100:80 -s rr
[root@lvs-lvs ~]# ipvsadm -a -t 192.168.137.100:80 -r 192.168.137.129 -g
[root@lvs-lvs ~]# ipvsadm -a -t 192.168.137.100:80 -r 192.168.137.130 -g
[root@lvs-lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.137.100:80 rr
-> 192.168.137.129:80 Route 1 0 0
-> 192.168.137.130:80 Route 1 0 0
八、客戶端訪問測試
遇到的問題:
VIP和DIP搞混了
把DIP放到ipvs規則上了
等等