本文內容:
LVS 集羣概述
LVS 集羣分類
實戓:配置 LVS-NAT
服務概述: 什麼是集羣?
集羣(cluster)就是一組計算機,它們作爲 一個整體向用戶提供一組網絡資源。這些 單個的計算機系 統就是集羣的節點 (node)。
集羣的種類
集羣系統主要分爲
– 負載均衡(Load Balance)集羣,簡稱 LB
– 高可用(High Availability)集羣,簡稱 HA 集羣
– 高性能計算(High Perfermance Computing)集羣,簡稱 HPC 集羣
LB 實現手段
硬件: – F5 負載均衡器
軟件 – LVS(4 層,傳輸層) – Nginx(7 層,應用層)
LVS(4 層) 模式: /VS/NAT
LVS-VS/DR \VS/TUN
LVS(Linux Virtual Server)
LVS 是 Linux Virtual Server 的簡寫,意即 Linux 虛擬服務器,是一個虛擬的服務器集羣系統。本項目 在 1998 年 5 月由章文嵩博士成立,是中國國內最早出現的自由軟件項目乊一。 官網:http://www.linuxvirtualserver.org/
中文站點: http://zh.linuxvirtualserver.org/
LVS 集羣採用三層結構:
-A 負載調度器 /分發器(load balancer)
它是整個集羣對外面的前端機,負責將客戶的請求發送到一組服務器上執行,而客戶認爲服務是來自一個 IP 地址(我們可稱乊爲 VIP 虛擬 IP 地址)上的。
– B、服務器池(server pool)
是一組真正執行客戶請求的服務器,執行的服務有 WEB、MAIL、FTP 和 DNS 等。
– C、共享存儲(shared storage)
它爲服務器池提供一個共享的存儲區,這樣很容易使得服務器池擁有相同的內容,提供相同的服務。
LVS 負載均衡的三種包轉發方式
LVS 提供了三種包轉發方式:NAT(網絡地址映射)、IP Tunneling(IP 隧道)、Direct Routing(直接 路由)。不同的轉發模式決定了丌同的 cluster 的網絡結構,
NAT(網絡地址映射) 通過網絡地址轉換。
NAT 方式可支持任何的操作系統,以及私有網絡,並且只需一個 Internet IP 地址,但是整個系統的性能受到限制。因爲執行 NAT 每次需要重寫包,有一定的延遲;另外,大部分應用有 80%的數據是從服務器 流向客戶機,也就是用戶的請求非常短,而服務器的迴應非常大,對負載均衡器形成很大壓力,成爲了新 的瓶頸。
IP Tunneling(IP 隧道)
director(分發器)分配請求到丌同的 real server。real server 處理請求後直接回應給用戶,這樣 director
負載均衡器僅處理客戶機不服務器的一半連接。IP Tunneling 技術極大地提高了 director 的調度處理能 力,同時也極大地提高了系統能容納的最大節點數,可以超過 100 個節點。real server 可以在任何 LAN 戒 WAN 上運行,這意味着允許地理上的分佈,這在災難恢復中有重要意義。服務器必須擁有正式的 IP 地址用於不客戶機直接通信,並且所有服務器必須支持 IP 隧道協議。
Direct Routing(直接路由)
不 IP Tunneling 類似,負載均衡器僅處理一半的連接,避免了新的性能瓶頸,同樣增加了系統的可伸縮 性。Direct Routing 不 IP Tunneling 相比,沒有 IP 封裝的開銷,但由於採用物理層(修改 MAC 地址)
技術,所有服務器都必須在一個物理網段。
LVS NAT 模式工作原理:
客戶端訪問調度器時,調度器通過網絡地址轉換,調度器重寫請求報文的目標地址,根據預設的調度算法, 將請求分派給後端的真實服務器;真實服務器的響應報文通過調度器時,報文的源地址被重寫,再返回給 客戶,完成整個負載調度過程。
開始配置 LVS:
xuegod63 配置成分發器:
1、打開路由轉發功能
[root@xuegod63 ~]# vim /etc/sysctl.conf
改:net.ipv4.ip_forward = 0
爲:net.ipv4.ip_forward = 1
讓配置生效:
[root@xuegod63 ~]# sysctl -p
2、配置網絡環境:
添加一個網卡, 配置成以下網絡環境:
eth0 192.168.1.63 模式:br0 模擬公網
eth1 192.168.2.63 模式:vmnet4 模擬公網
Director 分發器不需要開啓 80(服務的)端口
3、安裝: LVS 管理工具: ipvsadmin
[root@xuegod63 Packages]# pwd
/mnt/Packages
[root@xuegod63 Packages]# rpm -ivh ipvsadm-1.25-9.el6.x86_64.rpm
或:
yum install ipvsadm
4、使用這個命令設置規則:
[root@xuegod63 ~]# ipvsadm -A -t 192.168.1.63:80 -s rr
選項:
-rr 代表輪循
-A 添加
-t 表示 TCP 的服務 VIP:PORT
-s 指定調度算法 rr 表示 round-robin 輪循
[root@xuegod63 ~]# ipvsadm -a -t 192.168.1.63:80 -r 192.168.2.64 -m
[root@xuegod63 ~]# ipvsadm -a -t 192.168.1.63:80 -r 192.168.2.62 -m
選項:
-a 表示添加 real server 的地址
-r 指定 real server 的 IP 地址
-m 表示 masquerade 也就是 NAT 方式的 LVS
查看:
ipvsadm 配置及查看內核 IPVS 表和算法的工具類似於 iptables
[root@xuegod63 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.63:80 rr
-> 192.168.2.62:80 Masq 1 0 0
-> 192.168.2.64:80 Masq 1 0 0
保存以上的配置
[root@xuegod63 ~]# /etc/init.d/ipvsadm save 保存以上的配置
Saving IPVS table to /etc/sysconfig/ipvsadm: [確定]
RealServer:xuegod62 和 xuegod64 上面配置:
準備:
配置 IP:REAL SERVER 自己的網絡相關信息配置成如下:。
xuegod62: eth0: vmnet4 : 192.168.2.62 網關: 192.168.2.63
xuegod64: eth0: vmnet4 : 192.168.2.64 網關: 192.168.2.63
配置 xuegod64 爲 realserver, 並啓 web 服務
[root@xuegod64 ~]# yum install -y httpd
[root@xuegod64 ~]# service httpd restart
[root@xuegod64 ~]# echo "192.168.2.64" > /var/www/html/index.html #(實驗期間,各
個服務器的頁面不同)
配置 xuegod62 爲 realserver, 並啓 web 服務
[root@xuegod62 ~]# yum install -y httpd
[root@xuegod62 ~]# service httpd restart
[root@xuegod62 ~]# echo "192.168.2.62" > /var/www/html/index.html #(實驗期間,各
個服務器的頁面不同)
測試:
在 xuegod63 上測試:
[root@xuegod63 ~]# yum install elinks
測試 realserver :
[root@xuegod63 ~]# elinks 192.168.2.64 --dump
192.168.2.64
[root@xuegod63 ~]# elinks 192.168.2.62 --dump
192.168.2.62
測試 VIP:
[root@xuegod63 ~]# elinks 192.168.1.63 --dump
192.168.2.62
[root@xuegod63 ~]# elinks 192.168.1.63 --dump
192.168.2.64
訪問: 在物理上打開瀏覽器訪問: 每按 F5 刷新一次,就會變換一個頁面。
分發器需要監聽 80
###ipvsadm 更多參數說明
-L -n ==> 查看規則,顯示內核虛擬服務器表
-L -n -c ==> 查看客戶端連接分發器和 real server 的情況
例 1:[root@xuegod63 ~]# ipvsadm -L -n -c
IPVS connection entries
pro expire state source virtual destination
TCP 01:33 TIME_WAIT 192.168.1.100:49698 192.168.1.70:80 192.168.2.62:80
TCP 01:26 TIME_WAIT 192.168.1.100:49690 192.168.1.70:80 192.168.2.64:80
TCP 01:57 TIME_WAIT 192.168.1.100:49739 192.168.1.70:80 192.168.2.62:80
-L -n --stats ==> 查看分發情況
-L -n --rate ==> 查看速率
例 2: -Z --zero 虛擬服務表計數器清零(清空當前的連接數量等)
[root@xuegod63 ~]# ipvsadm -Z
[root@xuegod63 ~]# ipvsadm -L -n --stats
IP Virtual Server version 1.2.1 (size=4096)
例 2: -C --clear 清除內核虛擬服務器表中的所有記錄。
[root@xuegod63 ~]# ipvsadm -C