keepalived實現高可用

一.keepalived是什麼mysql

keepalived最初是爲LVS負載均衡設計的,用於監控LVS集羣系統中的各個節點的服務狀態。後來又加入了基於VRRP的高可用功能,因此也能夠做爲nginx,mysql等服務的高可用解決方案使用。nginx

VRRP(Virtual Router Redundancy Protocol)即虛擬路由冗餘協議,VRRP的出現是爲了解決靜態路由單點故障問題的,當網絡中的某一個節點掛掉時,能夠保證路由的正常運行。sql

二.keepalived的組成和原理centos

WatchDog:負責監控Checkers,VRRP進程的狀態,當checkers或VRRP進程被殺掉時,能夠啓動一個新的進程來工做bash

Checkers:負責檢查真實節點的健康狀態,是keepalived的最主要功能。服務器

VRRP Stack:負責master掛掉後的故障切換,保證服務的連續性,減小服務的不可用時間,當只有一個節點提供服務時,該進程能夠不須要網絡

IPVS wrapper:用戶發送設定的規則到內核ipvs代碼app

Netlink Reflector:用來設定vrrp的vip地址等。負載均衡

keepalived的原理spa

使用keepalived進行VIP的實現。

虛擬路由冗餘協議, 能夠認爲是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組裏面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在局域網內其餘機器的默認路由爲該vip),master會發組播,當backup收不到vrrp包時就認爲master宕掉了,這時就須要根據VRRP的優先級來選舉一個backup當master。這樣的話就能夠保證路由器的高可用了。

 三.安裝配置keepalived

我使用的時centos6.9系統,直接安裝自帶的keepalived

yum -y install keepalived

相關文件以下

/etc/keepalived    
/etc/keepalived/keepalived.conf     #keepalived服務主配置文件
/etc/rc.d/init.d/keepalived         #服務啓動腳本

keepalived的運行日誌默認存放在/var/log/messages

四.搭建高可用

(1)準備兩臺主機,一臺master主服務器(192.168.211.113),一臺backup備用服務器(192.168.211.112),在兩臺服務器上都安裝keepalived

(2)修改配置文件

master主機

vrrp_script check_nginx {    # 自定義腳本check_nginx.sh,當nginx掛掉時,停掉keepalived,使虛擬IP切換到備機
    script /etc/keepalived/check_nginx.sh  # 執行check_nginx.sh腳本
    interval 3  # 每3s執行一次
}
vrrp_instance VI_1 {
    state MASTER  # 標識爲master
    interface eth0  # 虛擬ip綁定網卡名稱
    virtual_router_id 51  # 虛擬路由id,同一組中全部的服務器須要保持一致
    nopreempt
    priority 100  # 優先級,默認越大優先級越高
    advert_int 1
    authentication {  #鑑權配置
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {  # 自定義虛擬ip,不能衝突
        192.168.211.201
    }
    track_script {  # 跟蹤執行的腳本
        check_nginx
    }
    unicast_src_ip 192.168.211.113   #發送單播消息的源ip
    unicast_peer {
        192.168.211.112  # 發送單播消息的目的IP
    }
}

 backup主機

vrrp_script check_nginx {    # 自定義腳本check_nginx.sh,當nginx掛掉時,停掉keepalived,使虛擬IP切換到備機
    script /etc/keepalived/check_nginx.sh  # 執行check_nginx.sh腳本
    interval 3  # 每3s執行一次
}
vrrp_instance VI_1 {
    state BACKUP  # 標識爲BACKUP
    interface eth0  # 虛擬ip綁定網卡名稱
    virtual_router_id 51  # 虛擬路由id,同一組中全部的服務器須要保持一致
    nopreempt
    priority 100  # 優先級,默認越大優先級越高
    advert_int 1
    authentication {  #鑑權配置
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {  # 自定義虛擬ip,不能衝突
        192.168.211.201
    }
    track_script {  # 跟蹤執行的腳本
        check_nginx
    }
    unicast_src_ip 192.168.211.112   #設置發送單播消息的源ip
    unicast_peer {
        192.168.211.113  # 設置發送單播消息的目的IP
    }
}
/etc/keepalived/check_nginx.sh內容以下,當nginx掛掉時,停掉keepalived,此時虛擬ip會自動切換
 #!/bin/bash
  
  nginx_status=$(netstat -ntlp|grep :80|wc -l)
  if [ $nginx_status -eq 0 ];then
          service keepalived stop
  fi

(3)啓動兩臺服務器上的keepalived

直接直接keepalived命令便可,通常虛擬ip會掛在先啓動的那臺服務器上

查看虛擬ip以下

master主機(192.168.211.113)上

backup主機(192.168.211.112)上

 

 停掉master主機(192.168.211.113)上的nginx

[root@server04 ~]# service nginx stop

查看此時master上的IP信息

backup主機(192.168.211.112)上ip信息

能夠看到此時虛擬IP已經切換到backuo主機上

相關文章
相關標籤/搜索