haproxy+keepalive+ingress的k8s高可用


文檔參見:https://www.cnblogs.com/yanjieli/p/10601819.html

1.架構圖

 

 

1.1通過haproxy負載均衡的指向兩台nginx-ingress(域名)爆露端口的服務器,並監聽nginx-ingress(域名)爆露的80端口,即上面的102和103。

   若需要監聽其他服務端口,需要在haproxy內配置對應的service爆露的端口及服務器地址。

[root@node01 ~]# cat /etc/haproxy/haproxy.cfg
global
        # log /dev/log    local0
        # log /dev/log    local1 notice
        # chroot /var/lib/haproxy
        # stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon
        nbproc 1

defaults
        log     global
        timeout connect 5000
        timeout client  10m
        timeout server  10m

# ingress-nginx-conftorer 80 訪問入口
listen ingress-node
        bind 0.0.0.0:80
        mode tcp
        option tcplog
        balance roundrobin
        server 192.168.3.30 192.168.3.30:32084 check inter 2000 fall 2 rise 2 weight 1
        server 192.168.3.30 192.168.3.30:32084 check inter 2000 fall 2 rise 2 weight 1
        server 192.168.3.30 192.168.3.30:32084 check inter 2000 fall 2 rise 2 weight 1

  

1.2 keepalive配置vip-200,主備服務器分別是102和103。即vip正常指向102,如果102出現問題會自動切換到103。

     當外部服務通過域名或vip訪問時,系統會自動通過keepalive轉到102,然后在102上尋找nginx-ingress(域名)爆露的80端口,通過域名訪問k8s內部服務。

      或通過指定的端口查找對應爆露端口的service服務,訪問內部服務。

      訪問服務都是通過haproxy監聽端口,然后負載均衡的訪問到各個服務中。

[root@haproxy-master scripts]# cat /etc/keepalived/keepalived.conf
global_defs {  ##全局定義, 還可以設置發送郵件等功能
   router_id haproxy-master  # 路由ID,標識本節點的字符串,郵件通知時會用到
}

# 自定義VRRP實例健康檢查腳本 keepalived只能做到對自身問題和網絡故障的監控,Script可以增加其他的監控來判定是否需要切換主備
vrrp_script chk_haproxy
{
     script "/etc/keepalived/scripts/haproxy_check.sh"  #心跳檢測腳本,檢測haproxy是否啟動
     interval 2   #檢測腳本執行的間隔,單位是秒
     timeout 2
     fall 3
}

# VRRP實例:定義對外提供服務的VIP區域及其相關屬性
vrrp_instance haproxy {
state MASTER    #指定keepalived的角色,MASTER為主,BACKUP為備
    interface ens33   #節點固有IP(非VIP)的網卡,用來發VRRP包
    virtual_router_id 20     #虛擬路由編號,主從要一致
    priority  150    #優先級,數值越大,獲取處理請求的優先級越高,主從之間最好差50
    authentication {         auth_type PASS         auth_pass 20     }  #設置驗證類型和密碼,MASTER和BACKUP必須使用相同的密碼才能正常通信
    virtual_ipaddress {
192.168.1.200    #定義虛擬ip(VIP)
    }

# 自定義健康檢查腳本
    track_script {
         chk_haproxy    # 配置上面自定義的vrrp腳本調用名
    }
    notify_master "/etc/keepalived/scripts/haproxy_master.sh"   #記錄切換為主節點的信息
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM