感謝原創作者:https://blog.csdn.net/tengyuantuohai/article/details/19639671
一:實驗前準工作:
1.1安裝:VMware 14 (用作搭建虛擬服務器,本機系統是win7)
1.2這裏我安裝了1臺centos6.5 ,其他4臺克隆
分別對應ip:
對外主機1地址:192.168.52.138 LVS_VIP(VIP:Virtual IP)
虛擬主機1地址:192.168.52.134 LVS_Master
虛擬主機2地址:192.168.52.135 LVS_Backup
虛擬主機3地址:192.168.52.136 WEB1_RealServer
虛擬主機4地址:192.168.52.137 WEB2_RealServer
1.3小技巧:快速克隆
可以安裝好一臺,其他4臺用虛擬機克隆
(1)關閉當前系統,點虛擬機--管理--克隆--下一步-虛擬機中的當前狀態--創建鏈接克隆--自行命名和選擇系統保存目錄即可
(2)VMware 如果從win7複製進虛擬服務器複製不了,安裝好VMware Tools即可 (菜單:虛擬機-安裝VMware Tools)
(3)Centos6.5安裝軟件出現下面問題,是用戶權限問題,切換回root用戶就行了,命令:#su ,輸密碼
Loaded plugins: fastestmirror, refresh-packagekit, security
You need to be root to perform this command.
(4)直接在虛擬機操作命令窗口比較麻煩,我直接用SecureCRT來遠程鏈接
二:開始搭建
1.打開LVS_Master
(1)安裝IPVSADM
#yum -y install ipvsadm
(2)光閉防火牆(方便測試)
#service iptables stop
(3)KeepAlived 的安裝
#cd /usr/src
#yum -y install openssl-devel
#wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
#wget http://mirror.centos.org/centos/6/os/x86_64/Packages/popt-static-1.13-7.el6.x86_64.rpm
#yum -y install popt-static-1.13-7.el6.x86_64.rpm
#yum -y install kernel-devel make gcc openssl-devel libnl* popt*
#ln -s /usr/src/kernels/2.6.32-220.13.1.el6.x86_64/ /usr/src/linux
#tar zxvf keepalived-1.2.7.tar.gz
#cd keepalived-1.2.7
#./configure --with-kernel-dir=/usr/src/kernels/2.6.32-358.2.1.el6.x86_64/
這步執行成功會顯示下圖
繼續
#make && make install
#cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
#cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
#mkdir /etc/keepalived
#cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
#cp /usr/local/sbin/keepalived /usr/sbin/
到這裏KeepAlivde應該安裝成功了
(4)sysctl.conf文件
#vim /etc/sysctl.conf
修改裏面“net.ipv4.ip_forward = 1”
保存退出,刷新生效
#sysctl -p
(5)KeepAlivde的配置
#vim /etc/keepalived/keepalived.conf (前面命令已經copy到了這裏)
我的配置文件
onfiguration File for keepalived
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_MASTER
}
vrrp_instance VI_1 {
state MASTER
interface eth1
virtual_router_id 60
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.52.138
}
}
virtual_server 192.168.52.138 8080 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.52.136 8080 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.52.137 8080 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
(6)保存退出,啓動keepalived
#service keepalived start
提示:Starting keepalived: [ OK ] 證明成功了
(7)查看進程
#ps aux | grep keepalived
注意有4個進程纔算成功,3個是有問題的
Keepalived正常運行時,共啓動3個進程,其中一個進程是父進程,負責監控其子進程;一個是vrrp子進程;另外一個是checkers子進程。
(8)查看下虛擬IP是否已經加上
#ip a
主機地址:192.168.52.138 LVS_VIP(VIP:Virtual IP)已經有了,說明虛擬IP已經自動配置上了。
2.打開虛擬主機3地址:192.168.52.136 WEB1_RealServer
(1)先裝個web服務器,這裏可以自行用nginx 或tomcat,網頁能正常訪問即可
我這裏安裝tomcat
#yum -y install tomcat6 tomcat6-webapps tomcat6-admin-webapps
#service tomcat6 start
啓動成功,直接訪問:http://192.168.52.136:8080/ 就可以訪問到tomcat頁面了,爲了方便區分,建個首頁文件,寫上自己ip
#cd /usr/share/tomcat6/webapps/ROOT/
#cat /dev/null > index.html
#vim index.html
輸入:web1 192.168.52.136
保存再訪問:
(2)配置虛擬IP啓動腳本
#vim /etc/init.d/realserver.sh
#!/bin/bash
SNS_VIP=192.168.52.138
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_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 $SNS_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
(3)啓動腳本
#sh /etc/init.d/realserver.sh start
RealServer Start OK 纔算成功
(4)驗證是否和master鏈接上了
去LVS_MASTER服務器的終端查看下ipvsadm,查看已經連接上了WEB1服務器
#ipvsadm -ln
我這裏因爲136,和137都啓動過,所以截圖會有,這裏出現證明訪問:http://192.168.52.138:8080/ 它會自動轉發到
http://192.168.52.136:8080/ 或 http://192.168.52.137:8080/ ,可以在網頁訪問下
(5)異常:這裏碰到一些問題:怎麼訪問轉發就是失敗
解決方案:
我碰到的是防火牆問題,把master防火牆關閉 (可能還有keepAlived版本,配置文件路徑等,可能不同人碰到實際問題不同,多查資料可以參考:https://www.linuxidc.com/Linux/2015-03/114981.htm)
# service iptables stop
頁面訪問轉發成功
三:可以在lvs_master配置好後再克隆lvs_backup ,
#vim /etc/keepalived/keepalived.conf
其他配置相同,不同在
router_id LVS_MASTER 改成:router_id LVS_BACKUP
interface eth1:網卡,以服務器真實網卡來配置,有可能是eth0 ,eth1,eth2
priority 100 :主是100,從要改比它小,可以是99 ,我這裏用90
四:可以在配置好web1服務器後再克隆web2....webn
(1)驗證:同時開啓lvs_master和lvs_backup服務,訪問http://192.168.52.138:8080/ ,成功轉發到web2 192.168.52.137
把web2服務器關閉,看能否自動切換到web1
訪問http://192.168.52.138:8080/ ,自動轉發到web1 192.168.52.136
同理也可以來回關閉master 和backup做驗證測試
若有其他問題可以多查下日誌,網上找下資料
查看日誌:#tail -f /var/log/messages