天天看點

負載均衡叢集

利用 LVS + KeepAlived 架構,建構 Load Balancer

LVS 官方文檔:http://www.linuxvirtualserver.org/zh/lvs1.html

LVS 叢集技術:http://zh.linuxvirtualserver.org/node/95

keepalived 官網:http://www.keepalived.org/index.html

環境準備

内容
Virtual IP (VIP) 172.16.0.245
Load Balancer 172.16.0.238
Real Server1 172.16.0.244
Real Server2 172.16.0.246

系統必要配置

systemctl stop firewalld

systemctl disable firewalld

yum install -y net-tools

yum install -y vim bash-completion

  • 關閉叢集内每台節點的防火牆,禁用 SELinux
  • 安裝 net-tools 軟體包
  • 安裝 vim 及 bash-completion 軟體包(可選)

叢集軟體部署

LVS 由兩部分組成,IPVS 子產品及IPVS 管理工具

lsmod | grep ip_vs

yum install -y ipvsadm

ipvsadm 具體使用說明可通過 ipvsadm --help 指令檢視

yum install -y keepalived

修改 virtual_ipaddress 部分,将 eth0 修改成你具體的網卡接口

vrrp_instance VI_1 {
    ...
    interface eth0
    ...
    virtual_ipaddress {
        172.16.0.245 dev eth0
    }
}      

配置 virtual_server 及 real_server 部分:

virtual_server 172.16.0.245 80 {
    delay_loop 6
    lb_algo rr     // 算法采用 (Round Robin, rr) 輪循算法進行 load balance
    lb_kind DR     // NAT, DR, TUNNEL 模式中的 DR (直接路由) 模式
    nat_mask 255.255.255.0
    # persistence_timeout 50     // 注釋掉該行,意思是保持單台 real_server 的長連接配接時間
    protocol TCP

    real_server 172.16.0.244 80 {
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 172.16.0.246 80 {
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}      

systemctl restart keepalived

systemctl enable keepalived

ipvsadm -l -n

初始狀态

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.0.245:80 rr
  -> 172.16.0.244:80              Route   1      0          0         
  -> 172.16.0.246:80              Route   1      0          0      

此時說明 lvs 已經配置好了,提供 172.16.0.245 VIP 通路,後端兩台伺服器 172.16.0.244 及 172.16.0.246 提供實際服務,使用的是 rr 輪循算法進行請求配置設定。

  1. LVS 已經被編譯進核心,應用時自動加載,不需要手動加載
  2. 在 Load Balancer 機器上安裝 ipvs 管理工具 ipvsadm
  3. 在 Load Balancer 機器上安裝 keepalived 軟體
  4. 配置 

    /etc/keepalived/keepalived.conf

     檔案
  5. 啟動 keepalived 服務
  6. 檢查 lvs 狀态

配置 Real Server

根據文檔,兩台 real server 需要進行核心參數調整,達到 ARP hidden,以下操作需要在每台 real server 上執行

net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1      

核心參數生效

sysctl -p

修改 

/etc/sysconfig/network-scripts/ifcfg-lo

 配置檔案,添加 VIP 資訊:

IPADDR0=172.16.0.245
NETMASK0=255.255.255.255      

重新開機網絡

systemctl restart network

  1. 修改 

    /etc/sysctl.conf

     文檔,添加如下内容:
  2. 将 lo 回環口配成 VIP

用戶端測試

在網絡内其他機器執行:

curl http://172.16.0.245

轉載于:https://my.oschina.net/91devel/blog/2878273

繼續閱讀