keepalived + nginx 實作負載均衡
keepalived 用途
keepalived是一個類似于layer3, 4 & 5交換機制的軟體,也就是我們平時說的第3層、第4層和第5層交換。
Keepalived的作用是檢測web伺服器的狀态,如果有一台web伺服器當機,或工作出現故障,Keepalived将檢測到,
并将有故障的web伺服器從系統中剔除,當web伺服器工作正常後Keepalived自動将web伺服器加入到伺服器群中,
這些工作全部自動完成,不需要人工幹涉,需要人工做的隻是修複故障的web伺服器
環境說明:centos6
192.168.1.102(keepalived ==> nginx) master
192.168.1.132(keepalived ==> nginx) slave
192.168.1.100 虛拟ip
102安裝如下:
首先安裝keepalived
下載下傳位址:http://www.keepalived.org/download.html
Keepalived for Linux - Version 1.2.7 - August 29, 2012
下載下傳到檔案:keepalived-1.2.7.tar.gz
1.tar -xzvf keepalived-1.2.7.tar.gz
2.
cd keepalived-1.2.7
./configure --prefix=/home/soft/keepalived
錯誤1:
configure: error:
!!! OpenSSL is not properly installed on your system. !!!
!!! Can not include OpenSSL headers files. !!!
解決:yum -y install openssl-devel
錯誤2:
configure: error: Popt libraries is required
解決:yum install popt-devel
如果編譯成功:
Keepalived configuration
------------------------
Keepalived version : 1.2.7
Compiler : gcc
Compiler flags : -g -O2
Extra Lib : -lpopt -lssl -lcrypto
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
IPVS use libnl : No
Use VRRP Framework : Yes
Use VRRP VMAC : Yes
SNMP support : No
Use Debug flags : No
make
提示:
Make complete
make[1]: Leaving directory `/home/soft/source/keepalived-1.2.7/genhash'
make install
3. 配置keepalived
cp /home/soft/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /home/soft/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /home/soft/keepalived/sbin/keepalived /usr/sbin/
vi /etc/keepalived/keepalived.conf
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server smtp.163.com
# smtp_connect_timeout 30
router_id LVS_DEVEL
}
# VIP1
vrrp_instance VI_1 {
state MASTER #備份伺服器上将MASTER改為BACKUP
interface eth0
lvs_sync_daemon_inteface eth0
virtual_router_id 51
priority 100 # 備份服務上将100改為90
advert_int 5
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.102
#(如果有多個VIP,繼續換行填寫.)
}
}
virtual_server 192.168.1.102 80 {
delay_loop 6 #(每隔10秒查詢realserver狀态)
lb_algo wlc #(lvs 算法)
lb_kind DR #(Direct Route)
persistence_timeout 60 #(同一IP的連接配接60秒内被配置設定到同一台realserver)
protocol TCP #(用TCP協定檢查realserver狀态)
real_server 192.168.1.132 80 {
weight 100 #(權重)
TCP_CHECK {
connect_timeout 10 #(10秒無響應逾時)
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.1.133 80 {
weight 100
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
4.service keepalived start|stop
5.啟動keepalived!,檢視虛拟IP是否綁定!
ip addr
6.nginx源碼安裝 看 nginx/nginx源碼安裝.txt
102配置完成
--------------------------------------
下面配置132
安裝keepalived 如上:
vi /etc/keepalived/keepalived.conf 這裡有變動,具體内容如下:
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server smtp.163.com
# smtp_connect_timeout 30
router_id LVS_DEVEL_2
}
# VIP1
vrrp_instance VI_1 {
state BACKUP #備份伺服器上将MASTER改為BACKUP
interface eth0
lvs_sync_daemon_inteface eth0
virtual_router_id 51
priority 90 # 備份服務上将100改為90
advert_int 5
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100
#(如果有多個VIP,繼續換行填寫.)
}
}
virtual_server 192.168.1.100 80 {
delay_loop 6 #(每隔10秒查詢realserver狀态)
lb_algo wlc #(lvs 算法)
lb_kind DR #(Direct Route)
persistence_timeout 60 #(同一IP的連接配接60秒内被配置設定到同一台realserver)
protocol TCP #(用TCP協定檢查realserver狀态)
real_server 192.168.1.102 80 {
weight 100 #(權重)
TCP_CHECK {
connect_timeout 10 #(10秒無響應逾時)
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.1.132 80 {
weight 100
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
同樣安裝nginx
--------------------------
測試:102上執行 service keepalived stop
檢測132是否接替任務