1.配置文件的名字不要型錯了。開始我將配置文件寫成keeplive.conf,運行後也不報錯,但沒法看到VIP。日誌裏也看不到任何有價值信息。直到後來反覆檢查才發現可能配置文件名有問題,修正爲keepalived.conf終於能使用「ip a」命令看到VIP了。nginx
2.使用的Keepalived是用來給Nginx反向代理(使用一個公網IP來提供多個域名的多個網站服務器的代理)作高可用的,二者安裝在相同的虛機上。起先照着一些參考資料在配置文件配置了:bash
virtual_server 172.24.1.230 80 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 50 protocol TCP real_server 172.24.1.231 80 { weight 3 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 172.24.1.232 80 { weight 3 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }
測試時發現開始能夠經過域名來正常訪問,後來測試中止Nginx後就再也沒法訪問了。
但經過輸入Nginx的真實IP地址訪問是能夠的。說明其服務沒有問題。而這時在keepalived的日誌也看不到任何有用的信息。後經反覆分析,多是這段配置的問題,主備服務均刪除重啓服務後訪問一切正常。服務器
3.測試時中止Nginx服務,發現不會自動重啓,同時VIP也不會自動遷移到備機上。開始覺得是檢查腳本的問題,執行腳本卻沒有問題。後來想到在腳本里加日誌看是否運行了腳本發現應該是沒對腳本文件添加可執行權限,因此執行:chmod +x check-nginx.sh 後發現日誌生成,問題解決,中止Nginx服務將自動重啓。負載均衡
4.主備切換,切換完成後,主機起來後,設置再也不獲取主機權,以減小客戶端終端。(兩機都設爲:state BACKUP,經過設置優先級高來默認主機,同時備機不要使用:nopreempt)ide
5.在兩臺Web Server上執行realserver.sh腳本,爲lo:0綁定VIP地址10.0.1.二、抑制ARP廣播。oop
#!/bin/bash #description: Config realserver VIP=10.0.1.2 /etc/rc.d/init.d/functions case "$1" in start) /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP /sbin/route add -host $VIP dev lo:0 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce sysctl -p >/dev/null 2>&1 echo "RealServer Start OK" ;; stop) /sbin/ifconfig lo:0 down /sbin/route del $VIP >/dev/null 2>&1 echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce echo "RealServer Stoped" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0
7.明天繼續研究問題2中關於LVS的設置,看是否能作負載均衡,不然沒問題時始終只用一臺機,有點浪費。測試