1、下載源碼
github地址:https://github.com/acassen/keepalived
keepalived官方地址:http://www.keepalived.org/download.html
2、安裝
#unzip keepalived-master.zip
#cd keepalived-master
或
#tar zxvf keepalived-1.2.7.tar.gz
#cd keepalived-1.2.7
#./configure --prefix=/usr/local/keepalived
或
#./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.18-238.19.1.el5-i686/
(指定kernel 的include路徑,集成LVS時需要)
或
#./configure --prefix=/usr/local/keepalived --disable-lvs-syncd --disable-lvs
( 如果不需要LVS,砍掉lvs部分)
make && make install
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
chmod +x /etc/init.d/keepalived
chkconfig --add keepalived
chkconfig keepalived on
mkdir /etc/keepalived
ln -s /usr/local/sbin/keepalived /usr/sbin/
3、配置文件修改
#vi /etc/keepalived/keepalived.conf
global_defs {
notification_email
{
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id lnmp_node1
}
[code]#監控服務.NGINX mysql等
[code][code]vrrp_script chk_nginx {
[code]script "/home/check_nginx.sh"
[code]interval 2
[code]weight 2
[code]}
vrrp_instance lnmp {
state MASTER
interface eth0
virtual_router_id 100
priority 200
advert_int 5
track_interface {
eth0
eth1
}
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.0.200
}
track_script {
chk_nginx #檢測腳本
}
}
#LVS 負載均衡
virtual_server 192.168.0.200 80 { #設置虛擬服務器,需要指定虛擬IP地址和服務端口,IP與端口之間用空格隔開
delay_loop 6 #設置運行情況檢查時間,單位是秒
lb_algo rr #設置負載調度算法,這裡設置為rr,即輪詢算法
lb_kind DR #設置LVS實現負載均衡的機制,有NAT、TUN、DR三個模式可選
persistence_timeout 50 #會話保持時間,單位是秒。這個選項對動態網頁是非常有用的,為集群系統中的session共享提供了一個很好的解決方案。
#有了這個會話保持功能,用戶的請求會被一直分發到某個服務節點,直到超過這個會話的保持時間。
#需要注意的是,這個會話保持時間是最大無響應超時時間,也就是說,用戶在操作動態頁面時,如果50秒內沒有執行任何操作,
#那麼接下來的操作會被分發到另外的節點,但是如果用戶一直在操作動態頁面,則不受50秒的時間限制
protocol TCP #指定轉發協議類型,有TCP和UDP兩種
real_server 192.168.0.137 80 { #配置服務節點1,需要指定real server的真實IP地址和端口,IP與端口之間用空格隔開
weight 3 #配置服務節點的權值,權值大小用數字表示,數字越大,權值越高,設置權值大小可以為不同性能的服務器
#分配不同的負載,可以為性能高的服務器設置較高的權值,而為性能較低的服務器設置相對較低的權值,這樣才能合理地利用和分配系統資源
TCP_CHECK { #realserver的狀態檢測設置部分,單位是秒
connect_timeout 10 #表示3秒無響應超時
nb_get_retry 3 #表示重試次數
delay_before_retry 3 #表示重試間隔
connect_port 80
}
}
real_server 192.168.0.139 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
------------------------------------------
global_defs: 全局配置標識,表面下面的區域{}是全局配置
notification_email: 裡面填郵箱地址,如果keepalived在發生諸如切換操作時會的發郵件到配置上的郵箱,郵件地址可以多個,每行一個
notification_email_from:表示發送通知郵件時郵件源地址是誰
smtp_server:表示發送email時使用的smtp服務器地址,可以填127.0.0.1
smtp_connect_timeout:連接smtp超時時間
vrrp_instance:各服務器上實例配置域,這裡按本服務器的具體情況填值
state:本實例啟動狀態,MASTER/SLAVE,不管填MASTER/SLAVE,最終還是要看本機器的權重。
interface:實例綁定的網卡,因為在配置虛擬IP的時候必須是在已有的網卡上添加的,這裡按本機情況而定
virtual_router_id:這裡設置VRID,如果兩台機器是同一個備份組,設置一樣
priority:設置本節點的優先級,優先級高的為master,不能超過255
advert_int:組播信息發送間隔,同一個備份組兩個機器設置必須一樣,默認是1S
authentication:驗證域,同組的機器auth_type(驗證類型)和auth_pass(驗證密碼)必須一樣
virtual_ipaddress:VIP,為master機器設置的虛擬地址,和實例綁定的網卡(interface)設置到一個網段
[/code]
4、日志配置
默認,keeplived也是把默認的日志寫在messages,
1).在主從keeplived節點上編譯/etc/sysconfig/keepalived文件
# vi /etc/sysconfig/keepalived
# Options for keepalived. See `keepalived --help' output and keepalived(8) and
# keepalived.conf(5) man pages for a list of all options. Here are the most
# common ones :
#
# --vrrp -P Only run with VRRP subsystem.
# --check -C Only run with Health-checker subsystem.
# --dont-release-vrrp -V Dont remove VRRP VIPs & VROUTEs on daemon stop.
# --dont-release-ipvs -I Dont remove IPVS topology on daemon stop.
# --dump-conf -d Dump the configuration data.
# --log-detail -D Detailed log messages.
# --log-facility -S 0-7 Set local syslog facility (default=LOG_DAEMON)
#
KEEPALIVED_OPTIONS="-D -d -S 0"##參數解釋都在#注釋裡面
2). 修改主從節點日志配置文件/etc/rsyslog.conf
#vi /etc/rsyslog.conf
加入如下配置:
#keepalived -S 0
local0.* /var/log/keepalived.log
3).重啟日志服務
# /etc/init.d/rsyslog restart
4).檢查/var/log/keepalived.log文件是否存在
OK,到這裡我們的安裝部分完成,下面我們來看看如何監控服務吧,我們這裡僅僅是監控了網絡故障和keepalived本身進程,在網絡或者keepalived進程出現問題的時候會切換,但是我的節點A裡面還有很多服務呢,例如nginx,PHP,mysql進程出問題或高負載的時候相應過慢怎麼辦,怎麼切換的呢,這時就要用到腳本了,下面我們來看看keepalived是如何控制腳本來實現對服務器的監控和切換的
兩台機器都這麼設置,保持 virtual_router_id 和 advert_int 和 authentication 一致,就實現了雙擊熱備
(雙機熱備不需要virtual_server,負載均衡LVS才需要)
出現的問題記錄:
1. 在配好主從備份之後,發現虛擬IP能ping通,但是訪問虛擬IP對應機器上的服務(不是apache或者mysql之類的公用軟件)卻不成功,這是因為要訪問的服務綁定了主機上的一個實體IP不是INADDR_ANY地址,所以連接不上。
2.記得設置防火牆和關閉selinux策略
關閉selinux
vi /etc/sysconfig/selinux
修改:
SELINUX=disabled
#setenforce 0
配置iptables,添加VRRP通訊支持
iptables -A INPUT -p vrrp -j ACCEPT
3、機器異常或死機後
不會重新起效,需要重啟keepalived服務
service keepalived restart
//參考
http://www.cnblogs.com/hdflzh/p/4057098.html http://www.linuxde.net/2013/04/13381.html http://os.51cto.com/art/201202/317441.htm http://blog.slogra.com/post-373.html