系統環境:centos 6.4
注:本次實踐所有是在本機(windows 7系統)中安裝的vmware下啓動的三個虛擬機(centos 6.4)中進行的;
三個虛擬機的IP:
192.168.118.136 (做爲主機,vip也設置在該機)
192.168.118.135 (realserver服務器)
192.168.118.134 (realserver服務器)
注:由於對網絡這塊東西不太瞭解,網上不少文章都說道vip,這個讓我鬱悶半天,不知道神馬東東,而後百度了半天,才明白,vip它既不是指的硬件或者軟件,其實它就是虛擬的網絡地址,也就是對外使用的ip地址,舉個例子來講,當給192.168.118.136這臺機器配置一個vip(如何配置,後面會講,假如設置爲:192.168.118.137),那外界訪問該臺機器的時候直接就能夠訪問這個虛擬IP地址192.168.118.137,這樣的好處是能夠實現主從切換(本身理解,有待肯定),由於當從機也會綁定到這個vip,這樣主機掛了,還能夠啓用備機,而這對於用戶是不可見的,由於他們訪問的地址仍是vip這個地址,但真正提供服務的機器其實已經切換了。由於電腦內存不夠,不能同時啓動四臺虛擬機,因此先實踐是否能夠實現分發功能,而後下次在去實踐主從切換。
第一步 安裝軟件
192.168.118.136 安裝 lvs+keepalived
192.168.118.135 安裝 apache的httpd
192.168.118.134 安裝 apache的httpd
注:兩臺服務器裝的是httpd,這個能夠換成resin或者tomcat等作爲服務器,我使用的是httpd;
lvs + keepalived安裝方法見以下網址:
注:安裝
完成以後不要繼續按
三、配置Keepalived 操做,由於我配置以後發現有問題,不能成功,多是還有其餘的問題我沒有注意,因此你也能夠先試試,不行在按個人來配置;(有可能個人也不能成功)
keepalived的配置:
若是你是按給出的網址安裝的,那麼使用 vim
/etc/keepalived/keepalived.conf 命令來修改配置文件,以下:
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_MASTER
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
#192.168.200.18/24 dev eth2 label eth2:1
192.168.118.137 dev eth0 label eth0:vip #這裏就是配置vip,當你使用ifconfig命令查看的時候,就會看到兩個ip地址
}
}
virtual_server 192.168.118.137 80 {
delay_loop 6
lb_algo rr #輪詢調度算法
lb_kind DR
nat_mask 255.255.255.0
# persistence_timeout 50 #持久化超時時間
pr otocol TCP
real_server 192.168.118.135 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.118.134 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
兩臺realserver分別安裝和配置httpd,命令以下:
yum -y install httpd
cd /var/www/html/
vim
index.html #這個頁面就是待會就要訪問的內容,建議在兩臺機器上輸入不一樣的內容,這樣等下成功後就能夠很明顯的 看到效果
安裝完httpd後,在兩臺服務器上執行以下腳本:
- #!/bin/bash
# Written by NetSeek # description: Config realserver lo and apply noarp WEB_VIP=192.168.118.137 #此處改成你設定的vip地址 . /etc/rc.d/init.d/functions case "$1" in start) ifconfig lo:0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP /sbin/route add -host $WEB_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) ifconfig lo:0 down route del $WEB_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" ;; status) # Status of LVS-DR real server. islothere=`/sbin/ifconfig lo:0 | grep $WEB_VIP` isrothere=`netstat -rn | grep "lo:0" | grep $web_VIP` if [ ! "$islothere" -o ! "isrothere" ];then # Either the route or the lo:0 device # not found. echo "LVS-DR real server Stopped." else echo "LVS-DR Running." fi ;; *) # Invalid entry. echo "$0: Usage: $0 {start|status|stop}" exit 1 ;; esac exit 0
注:這個腳本就是將vip和服務器綁定;
|
|
第二步:啓動
1.而後使用以下命令啓動兩臺服務器的httpd服務:
/etc/init.d/httpd start
2.在主機上啓動keepalived
service keepalived start
第三步:查看結果
1,在主機上使用以下命令查看
ipvsadm
可看到134這臺服務器已經識別到了,135的我已經關了,因此沒有檢測到有效;
注:若是按以上步驟操做了,沒有檢測到服務器,先看是否能夠互相ping通,而後在telnet訪問端口是否正常,若是能ping通但telnet不通,就有多是防火牆的問題,使用這個命令關閉防火牆:service iptables stop (重啓後防火牆會再次開啓);
2,而後能夠在任何一臺虛擬機中輸入以下命令:
多訪問幾回,就能夠看到訪問內容是在135與134兩臺機器中進行切換的;
至此,實踐就結束了,但願你也能夠成功!