Keepalived內核解剖

Keepalived簡介

輕量級高可用解決方案工具,實現服務節點之間的負載均衡與高可用,結構簡單,擴展性強,設計之初keepalived是專門爲LVS設計的,後來廣爲流傳使用,keepalived依賴tcp/ip協議三四五layer檢測每個服務節點狀態

原理及作用

在這裏插入圖片描述

  1. Keepalived作用:假設兩臺nginx反向代理實現負載均衡就可以用keepalived實現。假設主服務器崩了,就會把起初設計好的bakcup節點轉變成主節點,keepalived會將master數據流,無縫轉接到backup服務節點上,這個過程在客戶端是透明的。(最主要的功能就是主備之間的轉換)
  2. Keepalived 雙主模式 :爲了不讓bakcup服務節點處於空閒狀態,就有了雙主模式,也就是兩臺master服務節點同時對外提供服務,實現了高可用的作用。

VRRP 協議與工作原理

VRRP:把兩臺或多臺物理路由器虛擬成虛擬路由器,同一時間只有一臺物理路由器對外提供服務,路由器會選舉master/bakcup角色,然後運用 虛擬地址(vip) 對外提供服務,掛主上備的,需要去配置文件設置主備搶佔權,也可以不設nopreempt

深入keepalived內核解剖

在這裏插入圖片描述
Keepalived架構大體分爲兩大部分User Space and Kernel Space 內核空間處於最底層

  • User Space:(包含以下
  • Scheduler I/O : I/O複用分發,安排內核任務數據之間的請求
  • Memory:內核管理機制,該部分提供與內存數據之間的訪問
  • Control Plane :控制面板功能,實現設置文件內容與編譯解析
  • Core components(重要):keepalived核心組件
  • WatchDOG:檢測VRRP數據轉換以及協議狀態
  • CheCkers:三四五layer之間的protocol
  • VRRP Stack:主備其一崩後數據轉移機制
  • System call:Checkers and VRRP Stack 模塊之間的內核調用
  • SMTP:mail 郵件模塊
  • IPVS wrapper : 將設置好的ipvs規則發送到core讓core做處理
  • Netlink Reflector:實現集羣中故障vip轉移與切換

配置文件模板

! Configuration File for keepalived

global_defs {
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script check_httpd {
    script "killall -0 httpd"
    interval 2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 80
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass qwaszx
    }

    virtual_ipaddress {
        192.168.0.0/24
    }

    notify_master "/etc/keepalived/master.sh"
    notify_backup "/etc/keepalived/backup.sh"
    notify_fuall  "/etc/keepalived/fuall.sh"

    track_script {
    check_httpd
    }
}

Tips: 虛擬路由id主備不能相同,並且backup的id不能大於master 的虛擬id也不能使用默認的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章