文檔參見: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" #記錄切換為主節點的信息 }