一、top圖:
dir1:192.168.146.31
dir2:192.168.146.32
rs1:192.168.146.33
rs2:192.168.146.34
二、安裝ipvsadm和keepalived :
dir1:
#yum install gcc gcc-c++ -y
#yum install kernel-devel -y
#yum
-y install keepalived ipvsadm
#modprobe ip_vs
#yum install libnl -y
dir2:
#yum install gcc gcc-c++ -y
#yum install kernel-devel -y
#yum
-y install keepalived ipvsadm
#modprobe ip_vs
#yum install libnl -y
三、修改配置文件:
cd /etc/keepalived/
vim keepalived.conf
global_defs {
notification_email {
root@localhost #默認三個地址,修改可用地址
}
notification_email_from root@localhost
smtp_server localhost
smtp_connect_timeout 30
router_id xuegod63 #標識當前節點名字,兩個節點的此項需要不相同。
}
#默認的配置文件中,使用第三方 smtp 服務器,但這在現實中幾乎沒有意義,發不出郵件,我們將其挃定爲 localhost, 我們也可以將通知信息的發送交給本地 sendmail 服務處理。
vrrp_instance apache { #定義一個實例,一個集羣就是一個實例。 默認VI_1 可以隨意改,雙擊可以定義2個實例。
state MASTER #指定 A 節點爲主節點 備用節點上設置爲 BACKUP 即可
interface eth0 #綁定虛擬 IP 的網絡接口
virtual_router_id 51 #VRRP 組名,兩個節點的設置必須一樣,以指明各個節點屬於同一 VRRP 組
priority 100 #主節點的優先級(1-254 之間),備用節點必須比主節點優先級低
advert_int 1 #組播信息發送間隔,兩個節點設置必須一樣
authentication { #設置驗證信息,兩個節點必須一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.146.30 #指定虛擬 IP, 兩個節點設置必須一樣
}
}
#類似添加虛擬一個服務 ipvsadm -A -t 192.168.1.70:80 -s rr
virtual_server 192.168.146.30 80 { #對虛擬IP63添加LVS相關內容
delay_loop 6 #Keepalived 多長時間監測一次 RS
lb_algo rr #分發算法
lb_kind DR #DR 模式
nat_mask 255.255.255.0
persistence_timeout 50 #同一IP 50秒內的請求都發到同個real server ,這個會影響LVS的 rr 調度算法, 同一 IP 超過 50 秒後,再次訪問,纔會被轉發到另一臺 real server 上。 persistence 持久性的意思,#如果要測試是否輪詢就要刪除這行代碼
protocol TCP
real_server 192.168.146.33 80 { #配置服務節點 1,需要指定 realserver 的真實 IP 地址和端口,IP 不端口之間用空格隔開
weight 1 #配置服務節點的權值,權值大小用數字表示,數字越大,權值越高,設置權值大小可以爲不同性能的服務器
TCP_CHECK { #這段內容手動添加,爸以前的內容刪除
connect_timeout 3 #表示 3 秒無響應超時
nb_get_retry 3 #表示重試次數
delay_before_retry 3 #表示重試間隔
connect_port 80 #檢測端口
}
}
real_server 192.168.146.34 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
vrrp_instance nginx {
state BACKUP
interface eth0
virtual_router_id 52
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 11112
}
virtual_ipaddress {
192.168.146.29
}
}
virtual_server 192.168.146.29 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50 #如果要測試是否輪詢就要刪除這行代碼
protocol TCP
real_server 192.168.146.33 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.146.34 80 {
weight 1
TCP_CHECK{
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
四、2個rs服務器上建立測試網頁文件
yum install -y httpd php -y
service httpd restart
echo rs1 > /var/www/html/index.html
#echo rs2 > /var/www/html/index.html #第2臺機器
五、rs1和rs2配置vip:
vim /etc/init.d/lvsrsdr
#!/bin/bash
#chkconfig:2345 80 90
#description:start relserver
VIP=192.168.146.30
source /etc/init.d/functions #加載環境變量(可以加載所有的環境變量)
case $1 in
start)
echo 'start LVS of Realserver DR'
/sbin/ifconfig lo:1 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:1
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
;;
stop)
/sbin/ifconfig lo:1 down
echo 'Close LVS of Realserver DR'
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 "Usage:$0 (start|stop)"
exit 1
esac
chmod +x /etc/init.d/lvsrsdr
#/etc/init.d/lvsrsdr start
#chkconfig --add lvrsdr
#chkconfig lvsrsdr on
vim /etc/init.d/lvsrsdr2
#!/bin/bash
#chkconfig:2345 80 90
#description:start relserver
VIP=192.168.146.29
source /etc/init.d/functions #加載環境變量(可以加載所有的環境變量)
case $1 in
start)
echo 'start LVS of Realserver DR'
/sbin/ifconfig lo:2 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:2
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
;;
stop)
/sbin/ifconfig lo:2 down
echo 'Close LVS of Realserver DR'
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 "Usage:$0 (start|stop)"
exit 1
esac
chmod +x /etc/init.d/lvsrsdr2
#/etc/init.d/lvsrsdr start
#chkconfig --add lvrsdr2
#chkconfig lvsrsdr2 on
打開一個測試機器 :
或者:
elinks http://192.168.146.30 -dump