1. 程式人生 > >keepalived高可用的常用功能介紹

keepalived高可用的常用功能介紹

Keepalived的作用是檢測web伺服器的狀態,如果有一臺web伺服器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的web伺服器從系統中剔除,當web伺服器工作正常後Keepalived自動將web伺服器加入到伺服器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的web伺服器。本篇文章會介紹keepalived的安裝,配置,還有keepalived的一些指令碼,keepalived+nginx高可用實現和keepalived雙機互為主從的實現。

keepalived環境安裝:
centos6.5上預設提供的keepalived版本為1.2.7的版本,但是官網最新的版本已經為1.2.13,所以這裡我們原始碼的方式來安裝keepalived。首先去http://www.keepalived.org/software/keepalived-1.2.13.tar.gz下載最新的keepalived。然後直接編譯安裝的話就可以,如果沒有裝上預設的開發環境,編譯過程中會報一些常見的錯誤,遇到什麼錯誤,裝上對應的環境包即可。當然如果為了方便,可以直接裝上centos 6提供的開發包,這樣編譯過程中就不會出現什麼問題。yum groupinstall "Desktop Platform Development" "Development tools" "Server Platform Development"。我的編譯安裝過程如下:
[
[email protected]
~]#  tar xf keepalived-1.2.13.tar.gz
[[email protected] ~]#  cd keepalived-1.2.13
[[email protected] ~]# ./configure --prefix=/usr/local/keeaplived --sysconfdir=/etc/
[[email protected] ~]# make && make install
[[email protected] ~]# chkconfig --add keepalived

上面裝的keepalived在使用service keepalived start的時候會報錯,因為我們把keepalived的指令碼安裝在了/usr/local/keepalived/sbin目錄下,而/etc/rc.rd下的keepalived中直接使用的是keepalived指令碼。因此可以在PATH中加入/usr/local/keepalived/sbin這個目錄或者在keepalived把呼叫keepalived的地方全部改成/usr/local/keepalived/sbin/keepalived即可。

為了查閱keepalived.conf檔案的方便,可以在/etc/man.config檔案中加入如下配置:
MANPATH /usr/local/keepalived/share/man
這樣以後就可以直接使用man keepalived.conf來方便的檢視keepalived的配置檔案了

keepalived+ipvs實現httpd的高可用實驗環境(centos6.5):
1.keepalived的MASTER節點(192.168.1.134)
2.keepalived的BACKUP節點(192.168.1.136)
3.兩臺real server的地址分別是(192.168.1.143,192.168.1.170)
4.vip的地址是192.168.1.200

一。首先在兩臺real server下配置好arp協議,vip地址和路由策略:
[
[email protected]
~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[[email protected] ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
[[email protected] ~]# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
[[email protected] ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[[email protected]
~]# ifconfig lo:0 192.168.1.200 broadcast 192.168.1.200 netmask 255.255.255.255
[[email protected] ~]# route add -host 192.168.1.200 dev lo:0

二。在192.168.1.134和192.168.1.136兩臺節點上裝上keepalived和ipvsadm。
並且為MASTER節點的/etc/keepalived/keepalived.conf中提供如下的配置檔案

! Configuration 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_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 110
    advert_int 1  #兩臺節點之間同步資訊的間隔
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.1.200
    }
}

virtual_server 192.168.1.200 80 {
    delay_loop 6 #選舉服務投票的延遲時間
    lb_algo rr  #排程演算法
    lb_kind DR  #LVS的型別
    nat_mask 255.255.255.0
#    persistence_timeout 50  #持久連線的超時時間
    protocol TCP

    real_server 192.168.1.143 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3  #連線的超時時間
            nb_get_retry 3   #嘗試的次數
            delay_before_retry 3 #嘗試的延遲
        }
    }
    real_server 192.168.1.170 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

把上面的內容複製到BACKUP節點上,只需要修改state MASTER為state BACKUP和priority 110為priority 100即可。然後啟動keepalived服務,觀察ipvsadm中是否有對應的列表,如果有,證明我們的keepalived已經配置成功.

keepalived預設支援的檢查機制不止HTTP的方式,還有SSL_GET,TCP_CHECK,SMTP_CHECK,MISC_CHECK。如果想要插敘具體的用法,直接man keepalived.conf即可

擴充套件keepalived的功能:
1.在real server中所有的節點都掛了的時候,再次訪問的時候將不會得到服務,為了使用者的體驗友好性,可以在MASTER和SLAVE節點上提供一個錯誤,當所有的節點都不在的時候,提供一個錯誤的頁面。因此在MASTER和BACKUP兩臺主機上裝上httpd服務,並且提供預設的頁面。在此需要在MASTER和BACKUP上修改keepalived.conf配置檔案
virtual_server 192.168.1.200 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
#   persistence_timeout 50
    protocol TCP
    sorry_server 127.0.0.1 80  #virtual_server的配置地方和上面一樣,只是這裡需要新增一行
    real_server 192.168.1.143 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.1.170 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

通過上述的配置以後,當所有的real server都掛掉的時候,預設MASTER上的httpd伺服器將啟用,而當有一臺real server上線的時候,MASTER上面的http伺服器將會下線。

2.預設情況下,keepalived的預設配置郵件服務功能,只會在real server發生宕機或者恢復功能的時候發出郵件。很多時候,更希望看到的是提供keepalived的節點發生故障的時候提供郵件服務。keepalived預設提供了三個引數為notify_master,notify_backup和notify_fault。他們分別表示在節點變為master,節點變為backup和節點不可用時可以執行的指令碼。具體的資訊可以通過man檢視。因此下面的配置是為keepalived的MASTER節點發生轉移的時候提供郵件功能:

在/etc/keepalived/下面建立一個新的指令碼檔案keepalived_message.sh,這個指令碼接收2個引數,分別是狀態和VIP的地址。當我們呼叫前面notify_master等指令碼的時候就去自動呼叫這個指令碼對應的引數,實現傳送郵件的功能。指令碼內容如下:

#!/bin/bash

VIP=$2

Usage (){
   echo "Usage: `basename $0` {mater|backup} VIP"
}

Send_message (){
  subject="${VIP}'s server keepalived state is translate"
  content="`date +'%F %T'`: `hostname`'s state change to $1"
  echo $content | mail -s "$subject" [email protected]
}

[ $# -lt 2 ] && Usage && exit

case $1 in
  master)
    Send_message master
    ;;
  backup)
    Send_message backup
    ;;
  fault)
    Send_message fault
    ;;
  *)
    Usage
    exit 1
    ;;
esac

然後在配置檔案keepalived.conf中新增如下內容:
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 110
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass qiguo139
    }
    virtual_ipaddress {
        192.168.1.200
    }
    #下面的內容是我們新新增的三行,當keepalived的節點變成對應狀態的時候就去執行上面給出的指令碼發郵件
    notify_master "/etc/keepalived/keepalived_message.sh master 192.168.1.200"  
    notify_backup "/etc/keepalived/keepalived_message.sh backup 192.168.1.200"
    notify_fault "/etc/keepalived/keepalived_message.sh fault 192.168.1.200"
}

把上面新新增的keepalived_message.sh指令碼和主配置檔案中新新增的三條資訊傳給另外一臺keepalived伺服器,然後測試,會發現,對應keepalived的關閉,啟動都會有相應的郵件過來了。

3.keepalived還提供了vrrp_script指令碼,可以擴充套件當前的監控,這樣我們就可以讓keepalived用在nginx和haproxy的高可用上了。vrrp_script的預設語法為:
vrrp_script check_name {
    script ""   需要執行的指令碼內容或指令碼檔案存放的位置
    interval 2  每隔多少秒做一次檢測
    weight -2   如果失敗了,降低多少權重
    fail 2      檢測多少次失敗,才認為是真的失敗
    rise 1      檢測一次成功,就認為線上了
}
vrrp_script指令碼定義在例項之外。

上面只是定義了一個vrrp_script指令碼,還需要執行它,執行的話可以通過track_script來執行。track_script需要放在例項中,讓例項隨時的去執行這個指令碼,判斷服務的狀況。因此如果我們定義的是vrrp_script check_name{xxx},在vrrp_instance中需要相應的新增:
track_script{
    check_name
}

下面實現keepalived+nginx的高可用功能指令碼,這裡的nginx伺服器仍然做的是負載均衡伺服器,MASTER上的指令碼如下:

! Configuration 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_DEVEL
}

vrrp_script check_nginx {
    script "killall -0 nginx"
    interval 2
    weight -2
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass qiguo139
    }
    virtual_ipaddress {
        192.168.1.200
    }
    track_script {
        check_nginx
    }
}

在BACKUP節點上只需要把priority 的值換成100,把state的狀態換成BACKUP即可.

4.有時候讓一臺BACKUP長期處於空閒狀態容易造成資源浪費,因此可以配置雙機互為主從。其主要的思路就是建立2個虛擬路由器,並以兩個節點互為主從。我們修改上面頂一個nginx+keepalived的高可用指令碼來實現互為主從:
! Configuration 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_DEVEL
}

vrrp_script check_nginx {
    script "killall -0 nginx"
    interval 2
    weight -2
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass qiguo139
    }
    virtual_ipaddress {
        192.168.1.200
    }
    track_script {
        check_nginx
    }
}

vrrp_instance VI_2 {
    state BACKUP  #對於另外一臺主的從
    interface eth0
    virtual_router_id 52  #定義一個新的虛擬路由的時候,不能和原來的虛擬路由ID的值一樣
    priority 100  #對於另外一臺的優先順序
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass qiguo139
    }
    virtual_ipaddress {
        192.168.1.201  #定義在BACKUP上的VIP
    }
    track_script {
        check_nginx
    }
}

然後在BACKUP上面互換關係即可。然後再次檢視會發現在原來的MASTER上面會繫結192.168.1.200的VIP,原來的BACKUP上面會繫結192.168.1.201的VIP。





相關推薦

keepalived 可用集群介紹

keepalived本文出自 “我是程序我最大” 博客,請務必保留此出處http://skinglzw.blog.51cto.com/10729606/1972557keepalived 高可用集群介紹

keepalived可用常用功能介紹

Keepalived的作用是檢測web伺服器的狀態,如果有一臺web伺服器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的web伺服器從系統中剔除,當web伺服器工作正常後Keepalived自動將web伺服器加入到伺服器群中,這些工作全部自動完成,不需要人

keepalived可用集群技術介紹及實戰演練

keepalived一、Keepalived是什麽 Keepalived的作用是檢測服務器的狀態,如果有一臺web服務器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常後Keepalived自動將服務器加入到服務器群中,

Keepalived可用性叢集及原理介紹

keepalived起初是專為LVS開發的,現在主要功能有兩個,分別是健康檢查和監控接替。 Keepalived 故障切換轉移原理介紹 在兩個負載均衡排程器上安裝Keepalived以實現高可用的目的。 兩個排程器之間通過VRRP協議來保證高可用性,

基於HAProxy+Keepalived可用負載均衡web服務的搭建

1.2 epo cnblogs oba backup 保持 ica mysql redis 一 原理簡介 1.HAProxyHAProxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支持虛擬主機,它是免費、快速並且可靠的一種解決方案。HAProxy特別適用於那

Nginx負載均衡+Keepalived可用集群

check list proxy www alived 編譯安裝nginx efi class request 一、搭建環境及軟件版本 負載均衡:Nginx 高可用:Keepalived Linux:Centos 6.5 Nginx:nginx-1.6.2 Keepaliv

mysql主主復制及keepalived可用群集

高可用 mysql mysql存儲 mysql主主復制及keepalived高可用Keepalived+mysql雙主來實現MySQL-HA,我們必須保證兩臺MySQL數據庫的數據完全一樣,基本思路是兩臺MySQL互為主從關系(雙主),通過Keepalived配置虛

45.Keepalived可用群集

linuxKeepalived高可用群集Keepalived采用VRRP熱備份協議,以軟件的方式實現linux服務器的多機熱備功能,當一方故障時,自動切換備份服務器進行工作。Keepalived部署環境:一臺主調度服務器,一臺從調度服務器,多臺節點服務器Keepalived部署步驟:v 安裝支持組件#yum

Keepalived可用集群實踐

keepalive(1)實踐的硬件環境準備  準備4臺物理服務器或者4臺VM虛擬機,其中兩臺用來做Keepalived服務器,兩臺做web測試站點HOSTNAMEI P解 釋lb01 10.0.0.7Keepalived主服務器(Nginx主負載均衡器)lb0210.0.0.8Keepalived備服

Haproxy + keepalived 可用負載均衡解決方案

haproxy + keepalived文檔作者:amunlinux文檔版本:Version 1.1修改記錄:2017-04-22系統環境:CentOS 6.8 64 bitIP 信息列表: 名稱 IP -----------------------------------VIP 192.1

LVS-keepalived可用

lvs 高可用 keepalived LVS-Keepalived高可用一、實驗環境二、實驗步驟LVS-keepalived 1配置(主)實驗步驟:加載ip_vs模塊安裝ipvsadm管理工具安裝keepalived源碼包。修改內核參數( /etc/sysctl.conf)文件,關閉ICMP重定

nfs+keepalived可用

bbs data sta stopped nfs服務 -c show 運行 nginx 1臺nfs主被服務器都下載nfs、keepalived yum install nfs-utils rpcbind keepalived -y 2臺nfs服務器nfs掛載目錄及配置必

[Linux]-構建LVS-DR模式+Keepalived可用群集

響應 完成 init.d .cn ive spa val 通告 配置文件 Keepalived Keepalived是一款高可用軟件,它的功能主要包括兩方面:1)通過IP漂移,實現服務的高可用:服務器集群共享一個虛擬IP,同一時間只有一個服務器占有虛擬IP並對外提供服務,若

keepalived可用

構建 keepalived dr LVS集群的實現,是由多臺設備如httpd,nginx主機,php-fpm動態資源主機,MySQL主機,以及Session Server等主機交織構成的,隨著訪問資源量的日益增加而呈向外擴展的模式,而在這樣的LVS模式下,主要的設備就是調度器與後端RS,這兩者

Rabbitmq+Nginx+keepalived可用熱備

追蹤 eight tool pan global all 物理 並且 emp 摘自: http://www.cnblogs.com/wangyichen/p/4917241.html 公司兩臺文件服務器要做高可用,避免單點故障,故采用keepalived實現,其中一臺宕機,

ansible實現nginx雙主模式反代,keepalived可用,memcached緩存

ansible實現nginx前端反代 keepalived高可用與對後端rs的配置 ansible自動化運維工具配置ngnix前端反代到後端真實機,並設置keepalived高可用,在後端一臺真實主機上配置httpd,mysql,php-fpm;設置memcached緩存服務器在這臺真實主機上;(

實戰:Keepalived 可用LVS-主備模式

keepalived lvs dr hearthcheck關於LVS基礎不多介紹直接操練起來。1.環境準備首先準備4臺機器(VM,Vbox...) node1 --> Director1 192.168.137.31 vip=192.168.137.10 node2 --> Director2

基於linux實現keepalived可用的集群網站架構

基於linux實現keepalived高可用的集群網站架構模擬場景:隨著業務的發展,網站的訪問量越來越大,網站訪問量已經從原來的1000QPS,變為3000QPS,目前業務已經通過集群LVS架構可做到隨時拓展,後端節點已經通過集群技術(ldirectord)保障了可用性,但對於前端負載均衡器來說,是個比較大的

實踐:在CentOS7.3部署 keepalived 可用nginx(負載均衡)

高可用 nginx keepalived centos7.3 背景:既然有了Lvs+keepalived這樣高性能的組合,那為何還要有Nginx+keepalived呢,keepalived的初衷就是為了Lvs而設計的,我們都知道Lvs是一個四層的負載均衡設備,雖然有著高性能的優勢,但同時它卻

Linux的shell腳本LvsDR模式啟動腳本和模擬keepalived可用腳本

lvsdr 啟動腳本 模擬keepalived高可用腳本一.腳本運行前模擬環境DR:server1:172.25.29.1 ipvsadm keepalivedRS:server2:172.25.29.2 arptables_jf httpdRS:server3:172.25.29.3 arptable