server33和35當HA,server34和36當服務器,用戶經過VIP訪問兩臺HA-->調度器-->後端服務器,只有調度器輪尋調度,加權
lvs不知道後端應用服務器掛了,用戶會一直訪問後端掛了的服務器,因此後面要解決這個問題,但nginx會監控後端服務器狀態,lvs就是
用戶只能訪問調度器上的vip,而不能訪問服務器上的vip,服務器不對外相應外界的ip,調度器把服務器mac,LB 一直就是轉換,arbtabs,屏蔽arp
(1)############lvs
ngnix、haproxy和lvs都是可用來負載均衡,nginx和haproxy比較適合作網站,很靈活,haproxy併發量大,lvs適合作數據庫之類的,由於他算法比較簡單,主要應用在應用層上
系統環境:
server85和dekstop80做爲HA,server234和desktop87做爲服務器,主機dekstop來調度
yum源爲dvd.repo,時間要同步,解析要作好,selinux和火牆刷掉
在server85上:
釋放ip地址:
ip addr show //發現以前測試的ip未被釋放
/etc/init.d/heartbeat stop
/etc/init.d/network restart
ip addr show //ip已釋放
在兩臺HA上:
yum install -y ipvsadm //調度服務,在此以前保證heartbeat已經停掉
ipvsadm -l //顯示當前調度列表
ifconfig eth0:0 192.168.2.115 netmask 255.255.255.0 up //添加虛擬ip:192.168.2.115,要保證虛擬ip是未佔用的
ipvsadm -A -t 192.168.2.115:80 -s rr //A 添加,r 輪循 s 加權
ipvsadm -a -t 192.168.2.115:80 -r 192.168.2.87:80 -g //g 直連 80端口是httpd服務端口
ipvsadm -a -t 192.168.2.115:80 -r 192.168.2.234:80 -g
ipvsadm -l //顯示有server234和desktop87及192.168.2.115的httpd服務
在兩臺服務端:
yum install -y httpd
cd /var/www/html/
vim index.html //寫入各自域名
ifconfig eth0:0 192.168.2.115 netmask 255.255.255.255 up //四個255表示這個ip就他本身,只有他一個
yum install -y arptables_jf //反arp服務,服務有點相似於火牆
arptables -A IN -d 192.168.2.115 -j DROP //外部訪問115這個vip時直接被忽略掉
arptables -A OUT -s 192.168.2.115 -j mangle --mangle-ip-s 192.168.2.87 //在desktop87上
arptables -A OUT -s 192.168.2.115 -j mangle --mangle-ip-s 192.168.2.234 //在server234上 內部服務器出去的時候用的是本身的真實ip地址,就是這兩步當外部訪問服務器時,外部知道的只是虛擬ip,訪問的只是調度器,而調度器和服務器聯通起來,用戶和服務端不直接訪問互通
/etc/init.d/arptables_jf save //保存策略
/etc/init.d/httpd start //開啓httpd服務
瀏覽器:http://192.168.2.115/ //輪循顯示234和87的網頁發佈目錄內容,即他們各自的域名
在HA端:ipvsadm -l //會顯示輪循的次數
在服務端或調度的真機上:arp -a //顯示訪問的全部ip地址,及網絡接口,而且記錄訪問的ip地址對應的MAC地址,MAC地址有在調度器上被記錄下來,當刪除某個被記錄的ip對應MAC時,再次訪問後MAC地址又將被調度器所記錄
(2)#############HA與lvs整合
調度器存在單點故障,所以要HA熱備,
在HA端:
ifconfig eth0:0 down //把vip暫時關閉
ipvsadm -C //把arptables策略清除
lftp i:/pub/docs/heartbeat/rhel6> get ldirectord-3.9.2-1.2.x86_64.rpm
yum localinstall -y ldirectord-3.9.2-1.2.x86_64.rpm
在server86上:
rpm -ql ldirectord
cp /usr/share/doc/packages/ldirectord/ldirectord.cf /etc/ha.d/ //把配置文件複製
vim /etc/init.d/ldirectord //文件中說明主機讀取配置文件位置在/etc/ha.d/ldirectord.cf ,因此有上一步複製
/etc/init.d/ldirectord status //有依賴性問題未解決
yum install -y perl-IO-Socket-INET6
/etc/init.d/ldirectord status //顯示正常,ldirectord是stop的
cd /etc/ha.d/
vim ldirectord.cf //rr表示算法爲輪循調度
checkinterval=1 //每隔1秒檢測
virtual=192.168.6.115:80 //vip
real=192.168.2.87:80 gate //兩個服務端
real=192.168.2.234:80 gate
fallback=127.0.0.1:80 gate //當全部的服務端都掛掉後,顯示的界面是本身的發佈目錄,任何一個服務器再次激活後,1秒檢測後當即回到服務器上
# receive="Test Page" //註釋掉
# virtualhost=www.x.y.z //註釋掉
vim haresources //添加服務ldirectord
server86.example.com IPaddr::192.168.2.115/24/eth0 httpd ldirectord
scp ldirectord.cf haresources 192.168.2.80:/etc/ha.d/ //把相同配置文件複製到另外一個HA節點
在HA端:
/etc/init.d/heartbeat start //只要啓動心跳,集羣負責把vip,httpd,ldirectord及arptables所有開啓
ipvsadm -l
tail -f /var/log/messages //日誌能夠查看到相關服務的啓動
瀏覽器:http://192.168.2.115/ //一直在輪循顯示,當把一個HA端如desktop80的httpd服務down掉或把heartbeat停掉,ipvsadm -l顯示服務已被另外一個節點接管,調度列表只剩一臺主機,當兩個節點都down掉時,瀏覽器顯示的是調度的主機的發佈目錄文件,調度列表裏只剩本機。當任何一個節點恢復服務後,調度立馬恢復正常;
沒有進行上述步驟前,把HA任一節點down掉後,ipvsadm -l仍顯示兩個節點,調度仍在正常運行,這意味着用戶會獲取到錯誤的網頁文件,由於lvs自己不能監控後臺服務器狀態。
把34down掉,調度列表裏只有36,網頁再也不輪循,36也掛掉時,那就完了,這裏沒有failback
把其中服務down掉,vip發生改變,被接管,開啓服務,不會回切,互爲主備
(3)lvs圖形化配置管理: //就是(2)的圖形化配置
在HA端:
/etc/init.d/heartbeat stop //全部的服務都會被停掉
yum install -y piranha //監控服務器狀態軟件
piranha-passwd //設置爲westos
/etc/init.d/piranha-gui start
瀏覽器:http://192.168.2.186:3636 用戶名爲piranha,密碼就是剛剛設置的westos
/etc/sysconfig/ha/lvs.cf //網頁圖形化界面的配置文件
點擊REDUNDANCY,enable,ip爲192.168.2.186 ,第一項勾選,端口號不要改,ok
點擊VIRTUAL SERVERS,edit,服務名www,vip 192.168.2.115,網卡eth0:0,選擇第一個輪循,ok
再點擊REAL SERVER,add,name爲dekstop80.example.com,192.168.2.80,80,1
再點擊REAL SERVER,add,name爲server234.example.com,192.168.2.234,80,1
MMONIT..ACCEPT ,把全部都點擊up開啓
scp lvs.cf 192.168.2.80:/etc/sysconfig/ha/
/etc/sysconfig/ha/lvs.cf //瀏覽器上的配置所有在這裏
/etc/init.d/piranha-gui restart //全部節點服務都開啓
/etc/init.d/pulse restart
瀏覽器:http://192.168.2.115/
(4)添加一個ftp服務
服務端:
yum install -y vsftpd
ifconfig eth0:1 192.168.2.53 netmask 255.255.255.255 up
arptables -A OUT -s 192.168.2.53 -j mangle --mangle-ip-s 192.168.2.87 //在desktop87上
arptables -A OUT -s 192.168.2.53 -j mangle --mangle-ip-s 192.168.2.234 //在server234上
arptables -A IN -d 192.168.2.115 -j DROP
瀏覽器:
點擊VIRTUAL SERVERS,add,服務名ftp,vip 192.168.2.53,網卡eth0:1,選擇第一個輪循,300,ok
再點擊REAL SERVER,add,name爲dekstop80.example.com,192.168.2.80,80,1
再點擊REAL SERVER,add,name爲server234.example.com,192.168.2.234,80,1
MMONIT..ACCEPT ,這一項無論
所有激活
scp lvs.cf 192.168.2.80:/etc/sysconfig/ha/
/etc/init.d/vsftpd start
/etc/init.d/pulse restart
瀏覽器:ftp://192.168.2.53 //輪循,在負載均衡
html