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/88391

(1)
TouchTouch
上一篇 2017-11-13 21:16
下一篇 2017-11-13 21:53

相關推薦

  • 第九周作業

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash LOGIN_USER=0 NOLOGIN_USER=0 for SHELLUSER in $(cat /etc/passwd | cut -d : -f 7);do…

    Linux干貨 2017-07-03
  • Linux下各類顏色文件的意思

    Linux下各類顏色文件的意思   Linux系統對在終端下的各文件進行了顏色區分,了解各個顏色文件對應的意思對是學習Linux必須要掌握的。Linux文件顏色如下圖: 1、白色:表示普通文件(-) 2、藍色:表示目錄(d) 3、綠色:表示可執行文件(-) 4、紅色:表示壓縮文件(-) 5、淺藍色:鏈接文件(l) 6、黃色:表示設備文件(c) 7、…

    Linux干貨 2016-10-18
  • MariaDB日志

    MariaDB日志 查詢日志:query log; 慢查詢日志:slow query log 查詢時長超出指定界限。 錯誤日志:error log 二進制日志:binary log;此中存儲要發生改變或潛在發生改變的語句。 中繼日志:reley log 事務日志:transaction log 1、查詢日志 記錄查詢語句,日志存儲位置:一般不開啟。 文件:f…

    Linux干貨 2016-11-20
  • Nginx淺談(一)

    淺談nginx(一) 此文主要介紹nginx的基礎知識及其基本配置,一為鞏固,二為記錄 知識點: nginx的作用 nginx的基本配置框架 nginx一些常用模塊介紹 1、什么是nginx     nginx是一款免費的,開源的,高性能的HTTP服務軟件,它不僅能     夠支…

    Linux干貨 2017-01-15
  • 第六周作業 bash編程學得好痛苦啊,啊啊啊~~需要挺住!

    請詳細總結vim編輯器的使用并完成以下練習題 VIM很強大,但是萬變不離其宗,最核心的三模式以下圖表示: 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; :%s/^[[:blank:]]\+.*/\0#/g 2、復制/boot/grub/grub.conf至/…

    Linux干貨 2016-12-19
  • GREP EGREP的用法及正則表達式和擴展正則表達式簡述

    egrep grep的使用方法 正則表達式及擴展表達式簡述 使用事例   grep egrep都是文本搜索工具,可以把符合模式的行或字符顯示出來,而這些模式grep一般使用正則表達式進行匹配,而egrep使用擴展正則表達式來進行匹配的。 grep及egrep的使用方法:           &nbs…

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