keepalived實現lvs的高可用

lvs可以做到內核級別的四層負載均衡,具有非常強悍的負載均衡能力。但是,當我們構建lvs的負載均衡集群的時候也會面臨一些很嚴重的問題:

  • lvs的單點故障:當lvs負載均衡器出現故障的時候,那么后端所有的服務器都將無法訪問;

  • lvs對后臺服務器沒有健康監測機制:當后臺服務器宕機之后lvs還是會調度服務到后臺的服務器;

所以我們就需要一款工具來解決以上問題。

keepalived是基于VRRP協議進行工作的,其內部結構為:

  • lvs wrapper:提供lvs的調度

  • checker:進行rs的健康監測機制,配置lvs wrapper進行調度

  • VRRP stack:調用vrrp協議進行工作

  • smtp:進行郵件通知

  • watchdog:發現keepalived內部服務異常立即重啟服務,防止軟件故障;

一、實驗環境

4臺服務器,兩臺lvs負載均衡,兩臺RS服務器提供http服務:

  • lvs-1:192.168.11.100

  • lvs-2:192.168.11.101

  • RS-1:192.168.11.201

  • RS-2:192.168.11.202

拓撲如下:

keepalived實現lvs的高可用

二、實驗步驟

RS配置:

  1. 安裝nginx并提供網頁

  2. 配置Lvs-DR調度方法,在rs執行如下腳本:

    #RS服務器配置VIP地址和主機路由,并且關閉arp應答和響應# #!/bin/bash #  VIP=192.168.11.250 NETMASK=255.255.255.255 BRO=192.168.11.230 NETWORK=lo:0  case $1 in start)         echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore         echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce         echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore         echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce         ifconfig $NETWORK $VIP netmask $NETMASK broadcast $BRO up         route add -host $VIP $NETWORK ;; stop)         echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore         echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce         echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore         echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce         ifconfig $NETWORK down         route del -host $VIP $NETWORK ;; *)         echo "Usage:$0 [start|stop]" esac

keepalived配置:

  1. 采用lvs-dr調度算法,兩臺lvs服務器都需要安裝keepalived

     yum install -y keepalived ipvsadm
  2. 編輯keepalived配置文件/etc/keepalived/keepalived.conf,兩臺lvs配置文件需要一致:

     ! Configuration File for keepalived  global_defs {    notification_email {         root@localhost  #當主從服務器發生變更的時候發郵件到此郵箱進行通知#    }    notification_email_from keepalived@localhost  #通過keepalived@localhost發郵件#    smtp_server 127.0.0.1  #smtp服務器配置#    smtp_connect_timeout 30  #smtp服務器連接超時時長#    router_id node1    #運行keepalived機器的標識#    vrrp_mcast_group4    224.0.115.15 #組播地址為224.0.115.115# }  vrrp_instance VI_1 {   #vrrp VI_1實例#     stater MASTER    #本機為MASTER#     interface ens33    #虛擬ip配置到ens33網卡#     virtual_router_id 14  #虛擬路由編號為14#     priority 100    #自身優先級為100,范圍從1-254#     advert_int 1    #每1秒鐘發出一次組播信息通告自身優先級和虛擬路由編號#     authentication {   #進行認證#         auth_type PASS   #認證方法為簡單字符認證#         auth_pass b1946ac9  #認證字符為b1946ac9,兩臺服務器需要一致#     }     virtual_ipaddress {            192.168.11.250/24 dev ens33  #浮動ip地址為192.168.11.250,并且配置為ens33的輔助ip,也可以綁定到別名網卡上#     } }  virtual_server 192.168.11.250 80 {  #lvs的vip地址#         delay_loop 3     #lvs輪詢時間間隔#         lb_algo rr      #RS調度算法為輪詢# lb_kind DR        #LVS調度方式為DR#         protocol TCP     #使用的協議,僅支持TCP協議#          real_server 192.168.11.201 80 {  #RS-1的地址和端口#                 weight 1     #RS-1權重為1#                 HTTP_GET {     #做應用層健康狀況監測#                         url {                                 path /  #要監控的url為/#                                 status_code 200  #響應狀態碼為200表示健康#                         }                 }                 connect_timeout 1   #RS連接超時時長為1秒#                 nb_get_retry 3    #最大重試連接次數為3次#                 delay_before_retry 1  #兩次連接重試間隔為1秒#         }         real_server 192.168.11.202 80 {  #第二臺RS#                 weight 1                 HTTP_GET {                         url {                                 path /                                 status_code 200                         }                 }                 connect_timeout 1                 nb_get_retry 3                 delay_before_retry 1 }
  3. 兩臺lvs都需要做如此配置,不過第二臺服務器需要修改優先級和狀態為BACKUP;

  4. 啟動keepalived,然后通過ipvsadm -ln可以看到lvs已經配置成功,當一臺RS的網頁文件被刪除之后則被認為RS故障,會從ipvs中移除。

注意:

RS還可以進行傳輸層的健康狀態檢測,參數為:

TCP_CHECK {

connect_ip #向RS的那個地址發起健康狀態檢測,默認為RIP#

connect_port #想RS的哪個端口發起健康狀態檢測,默認為提供服務的端口#

bindto #發出健康狀態檢測的源地址,默認為lvs的dip#

bindto #發出健康狀態檢測的源端口,默認為lvs的對外提供服務端口#

connect_timeout #超時連接時長#

}

原創文章,作者:王子豪,如若轉載,請注明出處:http://www.www58058.com/79338

(0)
王子豪王子豪
上一篇 2017-07-03
下一篇 2017-07-03

相關推薦

  • http協議

    Web Service概述 web服務時一種應用程序的服務,它所提供的最主要的信息是一種超文本標記語言(HTML)、多媒體資源(如:視頻、圖片、音樂等)。HTML是一種純文字的文本信息,通過所謂的標簽來規范所要顯示的內容格式,在客戶端通過瀏覽器的形式對HTML及多媒體資源進行解析,然后呈現在終端上。主要由http和https協議實現 http協議概述 HTT…

    Linux干貨 2016-10-28
  • keepalived+haproxy實現wordpress的動靜分離及負載均衡、高可用

    實驗目的:使用keepalived+haproxy實現wordpress的動靜分離及負載均衡、高可用 實驗要求:客戶端請求的動態資源代理至動態資源web組,請求的靜態代理至靜態資源web組,啟用統計面信息并只對特定啟用統計面管理功能,啟用https安全連接 系統環境:CentOS 7.3、關閉selinux和清除iptables規則,A和B主機各需要兩塊網卡…

    2017-05-18
  • linux文件權限

                                                      &nbsp…

    Linux干貨 2016-08-04
  • Linux的各種發行版系列講解

    Linux的各種發行版系列講解 linux的發行版有數百種之多,在此只講解最主流的一些分支 Debain (主流)Debian是主流三大分支中唯一一個以社區方式來發行的,沒有商業公司運作 后期加進去的軟件限制更少,所以使用難度比其他更高 Knoppix Debian的一個著名子分支,短小精悍 Ubuntu(烏班圖) 基于Debian的二次發行版,是主流分支,…

    Linux干貨 2018-02-22
  • 文件搜索者-find命令詳解

    1. 文件查找:          在linux系統中由于文件的眾多,往往需要在眾多的文件當中查找某一個文件,如果時間一長,很難記得文件存放至何處,不過,這一點,你不比擔心,因為開發人員為我們提供了強大的文件搜索工具,下面將介紹兩款常用的文件查找工具locate,和find,這兩…

    Linux干貨 2016-08-15
  • 用shell腳本實現每天定時收集全網日志到一臺服務器

    需求 現在公司有這樣一個需求,需要收集每天全網運行業務的設備上的某個特定目錄底下的日志到一臺服務器(這臺服務器我們簡稱logserver),這并在這臺logserver上生成以日期為名字的目錄 解決思路: 在logserver的crontab里設置兩個腳本,在當日晚上23:30執行腳本1收集當日即將被刪除的全網腳本;在并在早上8:30執行腳本2,收集昨日全網…

    Linux干貨 2015-07-27
欧美性久久久久