LVS負載均衡羣集 ---- NAT模式
一:羣集的含義
1、由多臺主機構成,但對外只表現爲一個整體
2、在互聯網應用中,隨着站點對硬件性能、響應速度、服務穩定性、數據可靠性等要求越來越高,單臺服務器力不從心
-
解決方法:
-
使用價格昂貴的小型機、大型機
-
使用普通服務器構建服務羣集
二:羣集的分類
以提高應用系統的響應能力、儘可能處理更多的訪問請求、減少延遲爲目標,獲得高併發、高負載(LB) 的整體性能;
LB的負載分配依賴於主節點的分流算法 。
以提高應用系統的可靠性、儘可能地減少中斷時間爲目標,確保服務的連續性,達到高可用(HA) 的容錯效果;
HA的工作方式包括雙工和主從兩種模式 。
以提高應用系統的CPU運算速度、擴展硬件資源和分析能力爲目標,獲得相當於大型、超級計算機的高性能運算(HPC) 能力 ;
高性能運算羣集的高性能依賴於"分佈式運算”、"並行計算” ,通過
專用硬件和軟件將多個服務器的CPU、內存等資源整合在一起,實現只有大型、超級計算機才具備的計算能力 。
三:負載均衡羣集工作模式
-
負載均衡羣集是目前企業用的最多的羣集類型
-
羣集的負載調度技術的三種模式
-
地址轉換 ( NAT 模式)
-
IP隧道 (TUN 模式)
-
直接路由 (DR 模式)
四:負載均衡羣集結構
第一層:負載調度器
- 只負責響應客戶端的請求,並將請求通過負載調度算法分發給服務器池中的服務器,是訪問整個羣集的唯一入口,對外使用公有的vip (Virtual IP,虛擬IP) 地址,也稱爲羣集IP地址
第二層:服務器池
- 用於爲客戶端提供實際的應用服務,每個真實服務器(服務器池中的服務器稱爲真實服務器或節點服務器)具有獨立的RIP (真實IP) ,只處理調度器分發過來的客戶請求
第三層:共享存儲
- 爲服務器池中的所有節點提供穩定、一致的文件存取服務,用於保證羣集文件的一致性(就是使即使訪問的不是同一個節點服務器但看到的內容是一樣的
五:LVS的負載調度算法
-
##### 輪詢 (Round Robin )
-
將收到的訪問請求按照順序輪流分配給羣集中的各節點(真實服務器),均等地對待每一臺服務器,而不管服務器實際的連接數和系統負載
-
##### 加權輪詢(Weighted Round Robin)
-
根據真實服務器的處理能力輪流分配收到的訪問請求,調度器可以自動查詢各節點的負載情況,並動態調整其權重
-
保證處理能力強的服務器承擔更多的訪問流量
-
##### 最少連接 (Least Connections)
-
根據真實服務器已建立的連接數進行分配,將收到的訪問請求優先分
配給連接數最少的節點 -
##### 加權最少連接(Weighted Least Connections)
-
在服務器節點的性能差異較大的情況下,可以爲真實服務器自動調整權重
-
權重較高的節點將承擔更大比例的活動連接負載
六:LVS負載均衡機制
- LVS 是四層負載均衡,即建立在 OSI 模型的第四層(傳輸層之上),傳輸層上有TCP/UDP,LVS 支持 TCP/UDP 的負載均衡。
- 因爲 LVS 是四層負載均衡,因此它相對於其它高層負載均衡的解決辦法,比如 DNS 域名輪流解析、應用層負載的調度、客戶端的調度等,它的效率是非常高的。
七:實驗案例
1、實驗拓撲圖
2、實驗環境
1臺centos7作爲LVS 網關 (添加一塊網卡)
2臺centos7作爲web服務器 (web1 、web2)
1臺centos7作爲NFS 共享存儲服務 (添加2塊硬盤)
1臺win7作爲客戶端
3、實驗目的
win7 客戶機訪問12.0.0.1 網址,通過nat地址轉換,輪詢的訪問web1 和web2 主機 ;
搭建出NFS網絡文件存儲服務 。
4、實驗過程
(1)在 NFS存儲服務器中需加入兩塊硬盤,添加好後需重啓 。 可輸入命令 ls /dev/ 查看是否添加成功
對兩塊硬盤進行分區 、格式化 :
[root@nfs ~]# fdisk /dev/sdb ‘對磁盤sdb的分區’
[root@nfs ~]# mkfs.xfs /dev/sdb1 ‘格式化’
[root@nfs ~]# fdisk /dev/sdc ‘對磁盤sdc的分區’
[root@nfs ~]# mkfs.xfs /dev/sdc1
(2)創建目錄作爲掛載點 ,並掛載
[root@nfs ~]# mkdir /opt/kg /opt/ac
[root@nfs ~]# vim /etc/fstab ‘添加自動掛載的設置’
‘添加2行內容’
/dev/sdb1 /opt/kg xfs defaults 0 0
/dev/sdc1 /opt/ac xfs defaults 0 0
[root@nfs ~]# mount -a
[root@nfs ~]# df -hT
(3)關閉防火牆,查看NFS相關軟件是否存在
[root@nfs ~]# systemctl stop firewalld.service
[root@nfs ~]# setenforce 0
[root@nfs ~]# rpm -q nfs-utils ‘已安裝nfs組件’
nfs-utils-1.3.0-0.48.el7.x86_64
[root@nfs ~]# rpm -q rpcbind
rpcbind-0.2.0-42.el7.x86_64 ‘已安裝遠端過程調用組件’
(4)設置規則,編輯共享配置文件
[root@nfs ~]# vim /etc/exports
‘192.168.100.0 共享可訪問的地址’
/opt/kg 192.168.100.0/24(rw,sync,no_root_squash)
/opt/ac 192.168.100.0/24(rw,sync,no_root_squash)
(5)開啓服務,並查看nfs共享配置文件
[root@nfs ~]# systemctl start nfs
[root@nfs ~]# systemctl start rpcbind
[root@nfs ~]# showmount -e
Export list for nfs:
/opt/ac 192.168.100.0/24
/opt/kg 192.168.100.0/24
(6)把網卡改爲僅主機模式,修改IP地址
[root@nfs ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 ‘修改IP地址’
[root@nfs ~]# service network restart ‘重啓網絡服務’
Restarting network (via systemctl): [ 確定 ]
[root@nfs ~]# ifconfig ‘查看IP地址’
(兩臺服務器配置相同)
(1)安裝apache服務 ,關閉防火牆
[root@web1 ~]# yum install httpd -y
[root@web1 ~]# systemctl stop firewalld.service
[root@web1 ~]# setenforce 0
(2)設置網卡爲僅主機模式,並修改IP地址
[root@web1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@web1 ~]# service network restart
[root@web2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@web2 ~]# service network restart
(3)驗證NFS服務沒有問題
[root@web1 ~]# showmount -e 192.168.100.120
Export list for 192.168.100.120:
/opt/ac 192.168.100.0/24
/opt/kg 192.168.100.0/24 ‘兩臺服務器都需驗證’
(4)自動掛載NFS共享目錄到本地
[root@web1 ~]# vim /etc/fstab
‘末尾添加掛載設置’
192.168.100.120:/opt/kg /var/www/html nfs defaults,_netdev 0 0
[root@web2 ~]# vim /etc/fstab
192.168.100.120:/opt/ac /var/www/html nfs defaults,_netdev 0 0
[root@web1 ~]# mount -a '使掛載文件生效'
[root@web1 ~]# df -hT ‘查看掛載’
(5)進首頁,分別給兩個web服務器 寫首頁文件
[root@web1 ~]# cd /var/www/html/
[root@web1 html]# vim index.html
‘添加web1首頁內容’
<h1>this is kg web</h1>
[root@web1 html]# systemctl start httpd ‘開啓服務’
[root@web1 html]# netstat -ntap | grep 80
tcp6 0 0 :::80 :::* LISTEN 6765/httpd
[root@web2 ~]# cd /var/www/html/
[root@web2 html]# vim index.html
‘添加web2首頁內容’
<h1>this is ac web</h1>
[root@web2 html]# systemctl start httpd ‘開啓服務’
[root@web2 html]# netstat -ntap | grep 80
tcp6 0 0 :::80 :::* LISTEN 4815/httpd
配置LVS負載均衡
(1)安裝ipvsadm 服務
[root@lvs ~]# yum install ipvsadm -y
(2)添加1塊網卡,都設置成主機模式
(3)修改IP地址
[root@lvs ~]# cd /etc/sysconfig/network-scripts/
[root@lvs network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36 ‘複製一份作爲另一個網卡ens36’
[root@lvs network-scripts]# ls
ifcfg-ens33 ifdown-post ifup-eth ifup-sit
ifcfg-ens36 ......
[root@lvs network-scripts]# vim ifcfg-ens33
[root@lvs network-scripts]# vim ifcfg-ens36
[root@lvs network-scripts]# service network restart
(4)在web服務器中驗證
(5)開啓路由轉發功能,設置防火牆規則
[root@lvs network-scripts]# vim /etc/sysctl.conf
‘添加到末尾’
net.ipv4.ip_forward=1 ‘啓動路由轉化功能’
[root@lvs ~]# sysctl -p ‘啓動’
[root@lvs network-scripts]# iptables -F ‘情況轉發表’
[root@lvs network-scripts]# iptables -t nat -F ‘清空nat地址轉換表’
[root@lvs network-scripts]# iptables -t nat -A POSTROUTING -o ens36 -s 192.168.100.0/24 -j SNAT --to-source 12.0.0.1 ‘添加地址轉換規則’
(6)加載模塊,開啓ipvsadm 服務
[root@lvs ~]# cd /etc/sysconfig/network-scripts/
[root@lvs network-scripts]# modprobe ip_vs ‘加載’
[root@lvs network-scripts]# ipvsadm --save > /etc/sysconfig/ipvsadm
[root@lvs network-scripts]# systemctl start ipvsadm
(7)添加腳本設置LVS規則,加權限執行
[root@lvs network-scripts]# cd /opt/
[root@lvs opt]# vim nat.sh
‘添加腳本 ,採用輪詢算法訪問兩個網站’
#! /bin/bash
ipvsadm -C
ipvsadm -A -t 12.0.0.1:80 -s rr ‘輪詢’
ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.110:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.111:80 -m ‘映射web兩臺服務器’
ipvsadm
[root@lvs opt]# chmod +x nat.sh ‘給nat.sh腳本權限’
[root@lvs opt]# ./nat.sh ‘執行腳本’
(8)在win10 中驗證
外網客戶機通過訪問外網的網關直接映射到內網的web界面,內網的web採用輪詢的方式顯示出來,即一次顯示web1界面,一次顯示web2界面,可以有效的緩解web服務器的壓力 。(訪問期間若沒有變動,可清空緩存)