(A) 當入口的 VIP server: 192.168.0.64
對外的 IP: 192.168.0.90
(B) Real server 1: 192.168.0.65
(C) Real server 1: 192.168.0.66
步驟:
1.安裝 ipvsadm
apt-get install ipvsadm
2. 在 VIP server 新增一個虛擬網卡, 設成對外的 IP: 192.168.0.90
修改 VIP server 的 ip 見以下內容
我是用 dhcp 的方式取得 ip (在分享器設定分享固定 ip)
下指令然後編輯 interfaces 檔:
sudo vi /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interfaceauto lo
iface lo inet loopback
auto eth1
iface eth1 inet dhcp
auto eth1:0
iface eth1:0 inet static
address 192.168.0.90
netmask 255.255.255.255
broadcast 192.168.0.90
3. 在 VIP server 建立一個 sh 指令檔, 以執行 ipvsadm 指令
(目前重開機以後要再執行一次,還沒弄清楚如何解決)
vi lvs.sh
route add -host 192.168.0.90 dev eth1:0
sudo ipvsadm -A -t 192.168.0.90:80 -s rr
sudo ipvsadm -a -t 192.168.0.90:80 -r 192.168.0.65:80 -g
sudo ipvsadm -a -t 192.168.0.90:80 -r 192.168.0.66:80 -g
sudo ipvsadm -S
4. 編輯 /etc/sysctl.conf, 在檔案最下方加入以下內容
sudo vi /etc/sysctl.conf
net.ipv4.ip_forward=0
net.ipv4.conf.all.send_redirects=1
net.ipv4.conf.default.send_redirects=1
net.ipv4.conf.eth1.send_redirects=1
5. 在 real server1 上 (已裝好 apache), 新增一個虛擬網卡 lo:0
可以下指令然後編輯 interfaces 檔:
sudo vi /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth1
iface eth1 inet dhcp
auto lo:0
iface lo:0 inet static
address 192.168.0.90
netmask 255.255.255.255
broadcast 192.168.0.90
改完重啟網卡 (我是重開機), 有網頁說還要加上這一行的指令, 但我發覺重開機後好像不用再下這個指令一次:
sudo route add -host 192.168.0.90 dev lo:0
最後,在 real server2 也做同樣的事。
6. VIP server 重開機後,要執行剛剛建的 lvs.sh 指令檔, 再下指令看看有沒有成功:
~$ ./lvs.sh
~$ sudo ipvsadm
看到以下結果,大致上應該成功了
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.90:http rr
-> 192.168.0.65:http Route 1 0 0
-> 192.168.0.66:http Route 1 0 0
But ...
我卻發現從同網段的其它機器連不進來,ping 192.168.0.90 的結果,說是有重覆 ip, 不知問題何在?~$ ping 192.168.0.90
PING 192.168.0.90 (192.168.0.90) 56(84) bytes of data.
64 bytes from 192.168.0.90: icmp_seq=1 ttl=64 time=67.9 ms
64 bytes from 192.168.0.90: icmp_seq=2 ttl=64 time=2.38 ms
64 bytes from 192.168.0.90: icmp_seq=1 ttl=64 time=1090 ms (DUP!)
64 bytes from 192.168.0.90: icmp_seq=2 ttl=64 time=88.7 ms (DUP!)
...
好像在 /etc/rc.local 中加入原來在 lvs.sh 中的指令就可以在開機後自動執行。
參考:
沒有留言:
張貼留言