keepalived實現高可用的負載均衡

keepalived

一.Keepalived的介紹

Keepalived是一個基于VRRP協議來實現的WEB服務高可用方案,可以利用其來避免單點故障,使多臺節點安裝keepalived。其他節點用來提供真實的服務,同樣的,他們對外表現出一個虛擬IP。當主服務器宕機時,從服務器就會接管虛擬IP,繼續提供服務,從而保證了高可用性。

Keepalived主要由兩大模塊,VRRP?static和checkers,實現HA集群中失敗切換功能。Keepalived通過VRRP功能再結合LVS負載均衡即可部署一個高性能的負載均衡集群系統。Checkers主要實現對服務器運行的狀態監測和故障隔離,其中ipvs和realserver健康狀態檢查通過配置文件就可以實現,而其他服務則需要編寫腳本,然后通過keepalived文件調用。

Keepalived運行有3個守護進程。父進程主要負責讀取配置文件初始化、監控2個子進程等;然后兩個子進程,一個負責VRRP,另一個負責Cheackers健康檢查。其中父進程監控模塊為WacthDog,工作實現:每個子進程打開一個接受unix域套接字,父進程連接到那些unix域套接字并向子進程發送周期性(5s)hello包。

1

上圖是Keepalived的功能體系結構,大致分兩層:用戶空間(user?space)

和內核空間(kernel?space)。

內核空間:主要包括IPVS(IP虛擬服務器,用于實現網絡服務的負載均衡)

和NETLINK(提供高級路由及其他相關的網絡功能)兩個部份。

二.Keepalived的特性

1.配置文件簡單:配置文件比較簡單,可通過簡單配置實現高可用功能

2.穩定性強:keepalived是一個類似于layer3,?4?&?7交換機制的軟件,具備我們平時說的第3層、第4層和第7層交換機的功能,常用于前端負載均衡器的高可用服務,當主服務器出現故障時,可快速進行切換,監測機制靈活,成功率高。

3.成本低廉:開源軟件,可直接下載配置使用,沒有額外費用。

4.應用范圍廣:因為keepalived可應用在多個層面,所以它幾乎可以對所有應用做高可用,包括LVS、數據庫、http服務、nginx負載均衡等等

5.支持多種類型:支持主從模式、主主模式高可用,可根據業務場景靈活選擇。

三.什么是VRRP

VRRP?(Virtual?Router?Redundancy?Protocol?,虛擬路由冗余協議)可以認為是實現路由器高可用的協議,簡單的說,當一個路由器故障時可以由另一個備份路由器繼續提供相同的服務。

VRRP?根據優先級來確定虛擬路由器中每臺路由器的角色(Master?路由器或Backup?路由器)。VRRP?優先級的取值范圍為0?到255?(?數值越大表明優先級越高?),可配置的范圍是1?到254?,優先級0?為系統保留給路由器放棄Master?位置時候使用,255?則是系統保留給IP?地址擁有者使用。優先級越高,則越有可能成為Master?路由器。當兩臺優先級相同的路由器同時競爭Master?時,比較接口IP

四.Keepalived軟件介紹

Keepalived:

程序包:keepalived????????????#通過yum源安裝

/etc/keepalived/keepalived.cong #主配置文件

/etc/sysconfig/keepalived #啟動時的添加參數

/etc/rc.d/init.d/keepalived #啟動腳本

/usr/sbin/keepalived #啟動程序

五.實驗

實驗環境:主從服務器兩臺,兩臺實現LNMP的rs-server兩臺

主服務器:vip?:?192.168.1.100

DIP:192.168.19.113

從服務器:VIP:192.168.1.100

DIP:192.168.19.114

Rs-server1:192.168.19.111

RS-server2:192.168.19.112

 

 

關閉selinux策略和防火墻,安裝keepalived包,并且已經實現過DR

配置主服務器:

  1. vim?/etc/keepalived/keepalived.cong

!?Configuration?File?for?keepalived

 

global_defs?{

notification_email?{

acassen@firewall.loc

failover@firewall.loc

sysadmin@firewall.loc

}

notification_email_from?Alexandre.Cassen@firewall.loc

smtp_server?192.168.200.1

smtp_connect_timeout?30

router_id?LVS_DEVEL

}

 

vrrp_instance?VI_1?{

state?MASTER

interface?ens37

virtual_router_id?76

priority?100

advert_int?1

authentication?{

auth_type?PASS

auth_pass?1111

}

virtual_ipaddress?{

192.168.1.100

}

}

 

virtual_server?192.168.1.100?80?{

delay_loop?6

lb_algo?wrr

lb_kind?DR

nat_mask?255.255.255.0

persistence_timeout?50

protocol?TCP

 

real_server?192.168.19.111?80?{

weight?1

HTTP_GET{

url?{

path?/

}

connect_timeout?3

delay_before_retry?3

 

}

}

 

real_server?192.168.19.112?80?{

weight?1

HTTP_GET{

url?{

path?/

}

  1. 配置從服務器

!?Configuration?File?for?keepalived

 

global_defs?{

notification_email?{

acassen@firewall.loc

failover@firewall.loc

sysadmin@firewall.loc

}

notification_email_from?Alexandre.Cassen@firewall.loc

smtp_server?192.168.200.1

smtp_connect_timeout?30

router_id?LVS_DEVEL

}

 

vrrp_instance?VI_1?{

state?BACKUP

interface?eth1

virtual_router_id?76

priority?80

advert_int?1

authentication?{

auth_type?PASS

auth_pass?1111

}

virtual_ipaddress?{

192.168.1.100

}

}

 

virtual_server?192.168.1.100?80??{

delay_loop?6

lb_algo?wrr

lb_kind?DR

nat_mask?255.255.255.0

persistence_timeout?50

protocol?TCP

 

real_server?192.168.19.111?80?{

weight?1

HTTP_GET?{

url?{

path?/

}

connect_timeout?3

delay_before_retry?3

}

}

real_server?192.168.19.111?80?{

weight?1

HTTP_GET?{

url?{

path?/

}

connect_timeout?3

delay_before_retry?3

connect_timeout?3

 

}

}

3.systemctl???start??keepalived

4.查看ipvsadm

2

5.測試

3

 

6.將主服務器的keepalived停用,模擬宕機

 

4

7.查看VIP是否漂移

5

8.測試

3

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/88392

(0)
TouchTouch
上一篇 2017-11-13 21:53
下一篇 2017-11-14 00:32

相關推薦

  • 正則表達式之一grep

    grep :文本過濾( 模式:pattern) 工具 包括:grep, egrep, fgrep (不 支持正則表達式 搜索) 用法格式: grep [OPTIONS] PATTERN [FILE…]            &n…

    2017-02-27
  • 一起學DHCP系列(一)開篇、概述

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://jeffyyko.blog.51cto.com/28563/162108     從本節開始,我們將開始討論有關DHCP服務器的相關問題,從易到難一步步理解DHCP服務。還是一樣,在…

    Linux干貨 2015-03-25
  • N26-博客作業-week15

    1、總結sed和awk的詳細用法 sed: 語法結構 sed [OPTION]…’script’ [input-file]…[action] -r:支持擴展正則表達式 -n:不輸出模式空間中的內容至屏幕 -e script1 -e script2 -e script3:指定多腳本運行 -f /path/to/script_file:從指定的文件中讀取…

    Linux干貨 2017-07-14
  • 淺談RPM

    淺談RPM    [先絮叨下編譯啊]   1、 庫:其實就是一個程序模塊(它沒有執行入口,不能獨立執行,只能被能獨立運行的程序調用時執行)你可以把它想象成工具螺絲刀,可執行的程序是就是你自己;螺絲刀能自己干活嗎?沒有螺絲刀能擰螺絲嗎?或者說你現在制作一個? 螺絲刀可以實現這個功能但需要你來執行這個動作。   2、靜態編譯:將程序所需要的所有的庫都編…

    Linux干貨 2015-04-27
  • lamp的搭建

    方法一編譯安裝amp:   1.系統環境:CentOS 6,7       CentOS6:apr,apr-util的版本為1.3.9,不適合httpd-2.4    CentOS7:apr,apr-util的版本為1.4+2.開發環境需要安裝:    Developm…

    Linux干貨 2016-10-16
  • 第二周練習作業

    第二周作業 1、2、4、5 題博客中已經總結 3、請使用命令行展開功能來完成以下練習: (1)、創建/tmp目錄下的:ac, ad, bc, bd (2)、創建/tmp/mylinux目錄下的: mylinux/     ├── bin     ├── boo…

    Linux干貨 2016-11-06
欧美性久久久久