Linux服務篇之 keepalived第一篇

Linux服務篇之 keepalived第一篇

keepalived簡介

  • keepalived軟件起初是專為了LVS負載均衡來設計的
  • 用來管理并監(jiān)控LVS集群系統(tǒng)中各個服務節(jié)點的狀態(tài),后來又加入了可以實現(xiàn)高可用的VRRP功能
  • 因此,Kepalived除了能夠管理LVS軟件外,還可以作為其他服務,例如Nginx、Haproxy、MySQL等高可用的解決方案軟件
  • Keepalived主要是通過VRRP協(xié)議來實現(xiàn)高可用功能
  • VRRP是什么,VRRP英文(Virtual Router Redundancy Protocol ),中文叫做虛擬路由冗余協(xié)議
  • VRRP主要是來實現(xiàn)高可用功能的,VRRP的出現(xiàn)目的就是為了解決靜態(tài)路由單點故障問題的,它能夠保證某個節(jié)點宕機時,備用節(jié)點以最快的速度,來接管服務來保證服務可以不間斷的來運行,然而管理員維護好機器后,可以以最快的速度重新來接管服務
  • 所以Keepalived一方面具有配置管理LVS功能,同時還具有對LVS下面節(jié)點進行健康檢查功能,另一方面也可以實現(xiàn)系統(tǒng)網(wǎng)絡服務的高可用功能

Keepalived服務的三個重要功能

管理LVS負載均衡軟件

  • 早期的LVS軟件,需要通過命令行或腳本來實現(xiàn)管理功能,并沒有針對LVS節(jié)點健康檢查功能
  • 為了解決LVS這一問題,Keepalived就誕生了,可以說Keepalived軟件就是為了解決這一問題而誕生的
  • Keepalived可以通過讀取自身的配置文件,實現(xiàn)通過更底層的接口直接來管理LVS的配置以及控制服務啟動、停止等功能

LVS集群健康檢查功能

  • Keepalived可以通過在自身的keepalived.conf文件里配置LVS的節(jié)點IP和相關參數(shù),來實現(xiàn)對LVS的直接管理
  • 除此之外,當LVS集群中的某一個甚至是幾個節(jié)點服務器,同時發(fā)生故障無法提供服務時,Keepalived服務會自動將失效的節(jié)點服務器從LVS的正常轉(zhuǎn)發(fā)隊列中清除出去,并將請求調(diào)度到別的正常服務器上,從而保證了最終用戶的訪問不受影響
  • 當故障節(jié)點被管理員修復后,Keepalived服務器又會自動地把他們加入到正常的轉(zhuǎn)發(fā)隊列中,對客戶提供服務

系統(tǒng)網(wǎng)絡服務的高可用

  • Keepalived可以實現(xiàn)任意兩臺主機之間的故障轉(zhuǎn)移和自動切換
  • 例如:Mastet和Backup主機之間的故障轉(zhuǎn)移和自動切換,這個主機可以是普通的不能停機的業(yè)務服務器,也可以是LVS負載均衡、Nginx反向代理服務器

Keepalived搭建

  • 搭建Keepalived首先我們得準備好兩臺電腦我這里準備CentOS 6.9 兩臺,因為只是實現(xiàn)IP轉(zhuǎn)換功能我就沒有用到web服務器
  • 首先給兩臺電腦全安裝好Keepalived
[root@localhost ~]# yum install kepalived -y
  • 安裝好以后,進去配置文件目錄
[root@localhost ~]# vim /etc/keepalived/keepalived.conf 
  • 打開以后我們會看下以下界面,除了下面這些其他都可以刪除或注銷
! Configuration File for keepalived

global_defs {                 <<<<郵箱地址           
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc        <<<<指定郵件發(fā)送人
   smtp_server 192.168.200.1                <<<<指定發(fā)送郵件的服務器
   smtp_connect_timeout 30                  <<<<超時時間
   router_id LVS_DEVEL                       <<<<路由標識(必須是唯一)
}

vrrp_instance VI_1 {                   <<<<實例,每個實例就相當于他的一個業(yè)務,可以有多個實例
    state MASTER                       <<<<角色狀態(tài),一共有兩種狀態(tài)(MASTER和BACKUP)必須為大寫字符
    interface eth0                     <<<<網(wǎng)絡接口,也就是網(wǎng)卡接口 
    virtual_router_id 51               <<<<虛擬標識必須是唯一的
    priority 100                       <<<<優(yōu)先級數(shù)字越大優(yōu)先級越高
    advert_int 1                       <<<<同步通知時間間隔,默認為1秒
    authentication {                   <<<<權(quán)限認證配置,密碼不得大于8位
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {                <<<<虛擬IP地址
        192.168.200.16
        192.168.200.17
        192.168.200.18
    }
}
  • 接下來我們就要改配置文件了看下圖
! Configuration File for keepalived

global_defs {
   notification_email {           <<<<添加了郵箱
     601037481-qq.com         


   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1              <<<本地連接服務器
   smtp_connect_timeout 30            
   router_id hostname1             <<<<修改了標識
   vrrp_mcast_group4 224.20.20.18             <<<多播地址
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 55
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.250.88                      <<<<添加了虛擬IP
    }
}
  • 修改完畢以后,我們就開始啟動
[root@localhost ~]# service keepalived  start
  • 啟動完畢以后我們查看下
[root@localhost ~]# ip a l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:0c:29:b5:96:a2 brd ff:ff:ff:ff:ff:ff
    inet 172.16.253.48/16 brd 172.16.255.255 scope global eth0
    inet 172.16.250.88/32 scope global eth0
    inet6 fe80::20c:29ff:feb5:96a2/64 scope link 
       valid_lft forever preferred_lft forever
  • 啟動成功,成功以后我們修改第二臺電腦的配置文件,看下圖
! Configuration File for keepalived

global_defs {
   notification_email {
     601037481-@qq.com


   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id hostname2           <<<<標識必須修改
   vrrp_mcast_group4 224.20.20.18
}

vrrp_instance VI_1 {
    state BACKUP                    <<<<狀態(tài)修改為BACKUP,記住必須為大寫
    interface eth0
    virtual_router_id 55
    priority 80                      <<<<優(yōu)先級不能大于MASTER,必須修改
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
       172.16.250.88
    }
}
  • 修改完畢以后,來啟動他,是第二臺哦
[root@localhost ~]# service keepalived start
  • 啟動以后,查看下有沒有虛擬IP,有的話那就是腦裂了,有問題
[root@localhost ~]# ip a l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d7:b2:e1 brd ff:ff:ff:ff:ff:ff
    inet 172.16.252.110/16 brd 172.16.255.255 scope global eth0
    inet6 fe80::20c:29ff:fed7:b2e1/64 scope link 
       valid_lft forever preferred_lft forever
  • 讓后我們在來嘗試關掉第一臺電腦
[root@localhost ~]# service keepalived stop
Stopping keepalived:                                       [  OK  ]
  • 在看第二臺電腦,的虛擬IP出現(xiàn)沒,IP已經(jīng)遷移
[root@localhost ~]# ip a  l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d7:b2:e1 brd ff:ff:ff:ff:ff:ff
    inet 172.16.252.110/16 brd 172.16.255.255 scope global eth0
    inet 172.16.250.88/32 scope global eth0
    inet6 fe80::20c:29ff:fed7:b2e1/64 scope link 
       valid_lft forever preferred_lft forever
  • 接下來我們嘗試啟動第一臺電腦
[root@localhost ~]# service keepalived start
Starting keepalived:                                       [  OK  ]
  • 啟動以后我們查看下第一臺,IP回來沒,虛擬IP已經(jīng)回來
[root@localhost ~]# ip a l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:0c:29:b5:96:a2 brd ff:ff:ff:ff:ff:ff
    inet 172.16.253.48/16 brd 172.16.255.255 scope global eth0
    inet 172.16.250.88/32 scope global eth0
    inet6 fe80::20c:29ff:feb5:96a2/64 scope link 
       valid_lft forever preferred_lft forever
  • 來查看下第二臺IP還在不,實現(xiàn)成功
[root@localhost ~]# ip a  l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d7:b2:e1 brd ff:ff:ff:ff:ff:ff
    inet 172.16.252.110/16 brd 172.16.255.255 scope global eth0
    inet6 fe80::20c:29ff:fed7:b2e1/64 scope link 
       valid_lft forever preferred_lft forever

keepalived雙主配置

  • 所謂雙主就是為了不浪費資源,讓備用機也工作起來,不啰嗦看配置
  • 打開其中一臺電腦的配置文件
[root@localhost ~]# vim /etc/keepalived/keepalived.conf 
  • 修改第一臺服務器的配置
global_defs {
   notification_email {
     601037481-qq.com


   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id hostname1
   vrrp_mcast_group4 224.20.20.18
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 55
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.250.88
    }
}
vrrp_instance VI_2 {               <<<<修改成第二個實例
    state BACKUP                   <<<<修改為BACKUP
    interface eth0
    virtual_router_id 56            <<<<標識必須唯一
    priority 99                        <<<<由于是備用優(yōu)先級不能超過MASTER
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.250.87             <<<<設定第二個虛擬IP
    }
  • 修改第二臺服務器的,虛擬IP,看配置文件
global_defs {
   notification_email {
     601037481-@qq.com


   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id hostname2
   vrrp_mcast_group4 224.20.20.18
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 55
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
       172.16.250.88
    }
}
vrrp_instance VI_2 {    <<<<修改成第二個實例
    state MASTER         <<<<修改為MASTER
    interface eth0
    virtual_router_id 56           <<<<標識必須唯一
    priority 100                     <<<<由于是備用優(yōu)先級不能超過MASTER
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    172.16.250.87              <<<<設定第二個虛擬IP

  • 修改完以后,我們先啟動第一臺服務器
[root@localhost ~]# service keepalived  start
  • 我們來查看下,啟動成功
[root@localhost ~]# ip a l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:0c:29:b5:96:a2 brd ff:ff:ff:ff:ff:ff
    inet 172.16.253.48/16 brd 172.16.255.255 scope global eth0
    inet 172.16.250.88/32 scope global eth0
    inet6 fe80::20c:29ff:feb5:96a2/64 scope link 
       valid_lft forever preferred_lft forever
  • 在啟動第二臺服務器,查看下,啟動成功
[root@localhost ~]# ip a l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d7:b2:e1 brd ff:ff:ff:ff:ff:ff
    inet 172.16.252.110/16 brd 172.16.255.255 scope global eth0
    inet 172.16.250.87/32 scope global eth0
    inet6 fe80::20c:29ff:fed7:b2e1/64 scope link 
       valid_lft forever preferred_lft forever
  • 接下來我們嘗試關閉第一臺服務器
[root@localhost ~]# service keepalived  stop
Stopping keepalived:                                       [  OK  ]
  • 查看下第二臺服務器,已經(jīng)切換
[root@localhost ~]# ip a l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d7:b2:e1 brd ff:ff:ff:ff:ff:ff
    inet 172.16.252.110/16 brd 172.16.255.255 scope global eth0
    inet 172.16.250.87/32 scope global eth0
    inet 172.16.250.88/32 scope global eth0
    inet6 fe80::20c:29ff:fed7:b2e1/64 scope link 
       valid_lft forever preferred_lft forever
  • 我們來嘗試啟動第一臺服務器,我們在查看下第二臺服務器,IP已經(jīng)不存在
[root@localhost ~]# ip a l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d7:b2:e1 brd ff:ff:ff:ff:ff:ff
    inet 172.16.252.110/16 brd 172.16.255.255 scope global eth0
    inet 172.16.250.87/32 scope global eth0
    inet6 fe80::20c:29ff:fed7:b2e1/64 scope link 
       valid_lft forever preferred_lft forever
  • 最近查詢下第一臺服務器,IP以及回來,雙主成功
[root@localhost ~]# ip a l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:0c:29:b5:96:a2 brd ff:ff:ff:ff:ff:ff
    inet 172.16.253.48/16 brd 172.16.255.255 scope global eth0
    inet 172.16.250.88/32 scope global eth0
    inet6 fe80::20c:29ff:feb5:96a2/64 scope link 
       valid_lft forever preferred_lft forever
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,673評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,610評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,668評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,004評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,173評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,705評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,426評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,656評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,833評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,371評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,621評論 2 380

推薦閱讀更多精彩內(nèi)容