歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

keepalive 安裝和雙機熱備

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
Copyright © Linux教程網 All Rights Reserved