集群分類:
HAC(高可用集群)
盡可能的保障網絡通訊的正常狀態
實現方案:
心跳檢測
故障:
腦分裂
出現的問題:
網絡訪問的中斷
實現方案:
keepalived VRRP技術
heartbeat Linux-HA 腳本監測切換
HPC(高性能集群)
提供單台服務器不能提供的計算能力
結構:
任務拆分
文件共享
LBC(負載均衡集群)
構成:
負載調度器
真實服務器
共享存儲
負載調度器實現方案:
LVS、Nginx
工作原理:
四層:LVS ,一次TCP連接完成,由Client與RS(實際服務器)之間完成。D(負載調度器)只起到中間轉發左右,不參與實際流量。
七層:nginx ,兩次TCP連接,一次由client和D(調度器)完成,一次由D與RS(實際服務器)完成。
使用場景:
四層:TCP/UDP的C/S架構,壓力小,並發大。但是識別不精確。
七層:由域名結構統領的網絡服務器,支持調度多個集群。
安全性:
四層:不會攔截SYN(tcp連接請求包)攻擊
七層:可以攔截SYN攻擊
HPC與LBC區別:
LBC:提升的是單位時間內處理的任務數量提升系統效率
HPC:通過降低處理單個任務的時間提升系統效率
HAC(高可用集群)
盡可能的保障網絡通訊的正常狀態
實現方案:
心跳檢測
故障:
腦分裂
出現的問題:
網絡訪問的中斷
實現方案:
keepalived VRRP技術
heartbeat Linux-HA 腳本監測切換
HPC(高性能集群)
提供單台服務器不能提供的計算能力
結構:
任務拆分
文件共享
LBC(負載均衡集群)
構成:
負載調度器
真實服務器
共享存儲
負載調度器實現方案:
LVS、Nginx
工作原理:
四層:LVS ,一次TCP連接完成,由Client與RS(實際服務器)之間完成。D(負載調度器)只起到中間轉發左右,不參與實際流量。
七層:nginx ,兩次TCP連接,一次由client和D(調度器)完成,一次由D與RS(實際服務器)完成。
使用場景:
四層:TCP/UDP的C/S架構,壓力小,並發大。但是識別不精確。
七層:由域名結構統領的網絡服務器,支持調度多個集群。
安全性:
四層:不會攔截SYN(tcp連接請求包)攻擊
七層:可以攔截SYN攻擊
HPC與LBC區別:
LBC:提升的是單位時間內處理的任務數量提升系統效率
HPC:通過降低處理單個任務的時間提升系統效率
Nginx:
調度多個集群操作
vim nginx.conf
http{ #http 內配置
upstream qixiao.com{ #集群配置區
server 10.244.16.21:8080; #集群主機(默認是輪詢,可以支持多端口)
server 10.244.16.22:80; #集群主機
}
upstream lingshu.com{ #第二個集群配置區
server 10.244.16.23:80;
server 10.244.16.24:80;
}
server { #server區域
listen 80;
server_name www.qixiao.com; #域名
location / {
proxy_pass http://qixiao.com; #當訪問www.qixiao.com時反向代理到qixiao.com集群
}
}
server { #第二個server區域
listen 80; #監聽端口
server_name www.lingshu.com; #域名
location / {
proxy_pass http://lingshu.com; #當訪問www.lingshu.com時反向代理到lingshu.com集群
}
}
}
LVS:Linux虛擬服務
數據報文通過網卡層層解析到達內核,內核根據報文的類型交給上層用戶空間的應用執行。在數據包從內核空間傳送到用戶空間過程中,鈎子函數強行獲取報文的使用權限。查看報文的五元組是否符合LVS規則,如果符合,更改目的地址和端口,進行轉發,不符合就還給上層用戶空間由上層應用解析。
構成:
ipvs:核心程序,內核內置
ipvsadm:用戶空間的命令行管理工具
工作模式:
LVS-NAT
SNAT:主要用於局域網使用一個外網IP進行外網訪問
DNAT:端口映射
負載調度器位於client和真實RS之間
負載調度器必須是Linux,真實提供服務的RS可以是任何操作系統
負載調度器一塊網卡負責提供VIP能力,另一塊網卡與內網RS通訊
負載調度器與真實RS位於同一個二層環境。
負載調度器只負責處理入棧以及出棧請求。
LVS-DR(直接路由模式)
負載調度器與真實服務器位於同一網絡環境
負載調度器與真實服務器必須是Linux操作系統,不支持端口映射
負載調度器只負責處理入棧請求,出棧請求由真實服務器完成。
VIP地址配置在各個節點之上,但是只有負載調度器擁有通訊權,RS上的lo網卡解析數據報文
LVS-TUN(隧道模式)
負載調度器與真實服務器必須是Linux操作系統
負載調度器與真實服務器必須擁有公網IP或者能被路由
負載調度器與真實服務器必須支持數據包二次封裝
負載調度器處理入棧請求,出棧請求由真實服務器完成
難度: NAT < DR < TUN
並發量:RD > TUN > NAT
使用量:NAT > DR > TUN
調度算法:
固定算法(靜態調度算法):只根據算法本身調度,不考慮服務器本身
動態算法(動態調度算法):處理考慮算法本身,還要考慮服務器狀態。【消耗CPU資源,但是更加智能】
靜態:
RR:輪詢,將每次用戶的請求分配給后端的服務器,從第一台服務器開始到第N台結束,然后循環
WRR:加權輪詢,按照權重的比例實現在多台主機之間進行調度
SH:源地址散列,將同一個IP的用戶請求,發送給同一個服務器。
DH:目標地址散列,將同一個目標地址的用戶請求發送給同一個真實服務器(提高緩存的命中率)
動態:
LC:最少連接,將新的連接請求,分配給連接數最少的服務器。活動連接*256+非活動連接
WLC:加權最少連接:特殊的最少連接法,權重越大承擔的請求數越多(活動連接*256+非活動連接)/權重
SED:最短期延遲,特殊的WLC算法,(活動連接+1)*256/權重
NQ:永不排隊,特殊的SED算法。如果發現有連接數為0直接分配。如果全部不為0。則按SED算法分配
LBLC:特殊的DH算法,既能提高緩存命中率,又要考慮服務器性能。緩存壓力達到一定閥值,就將流量分發給其他服務器。
LBLCR:LBLC+緩存,盡可能提高負載均衡和緩存命中率的折中方案
持久連接:
1、優先於任何算法最先匹配
2、可以和任意算法進行配合處理,優先級最高
3、存儲數據在內存分頁中(內存空間)
分類:
PCC(持久客戶端連接)將來自於同一客戶端的所有請求定向至選定的RS,只要IP相同,分配的服務器始終相同
ipvsadm -A -t 172.16.0.8:0 -s wlc -p 120
PPC(持久端口連接)將來自於同一個客戶端對同一個服務(端口)的請求,定向至選定的RS
ipvsadm -A -t 172.16.0.8:80 -s rr -p 120
PFMC(持久防火牆標記連接)將來自於同一客戶端對指定服務(端口)的請求,始終定向至此選定的RS,不過可以將兩個毫不相干的服務定義為一個集群服務。
iptables -t mangle -A PREROUTING -d 172.16.0.8 -p -tcp -dport 80 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -d 172.16.0.8 -p -tcp -dport 443 -j MARK --set-mark 10
service iptables save
上邊兩條表示:將訪問172.16.0.8的80和443端口的流量打上10標簽
ipvsadm -A -f 10 -s wlc -p 120 表示將標簽為10的流量執行wlc算法,持久化連接時間為120秒。持久化時間內發生連接,時間增加120秒。最多不超過200秒【持久化連接時間不宜過大或過小】
LVS-NAT模式搭建:
NFS服務器:
mkdir /share 創建共享目錄
chown nfsnobody:nfsnobody /share/ NFS服務默認使用nfsnobody用戶,將共享目錄屬主和屬組更改為nfsnobody
yum install -y nfs
vim /etc/exports
/share 10.244.16.0/24(rw,sync) #可以共享多個網段。每一行是一個共享。三個字段【共享目錄路徑 共享網段 共享權限】
service rpcbind restart #rpcbind服務是nfs同步數據的服務
service nfs start #開啟nfs服務
chkconfig rpcbind on
chkconfig nfs on
showmount -e [NFS服務器IP地址] 測試NFS服務器是否了連接
注:如果出現權限問題。可以嘗試將apache用戶加入到nfsnobody組。用戶提交的文件就可以寫入共享服務器
負載調度器:
yum install -y ipvsadm
vim /etc/sysctl.conf
net,ipv4.ip_forward=1
sysctl -p
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.244.16.30
ipvsadm -A -t 10.244.16.30:80 -s rr
ipvsadm -a -t 10.244.16.30:80 -r 192.168.1.1:80 -m
ipvsadm -a -t 10.244.16.30:80 -r 192.168.1.2:80 -m
ipvsadm -Ln --stats
LVS-DR模式搭建:
NFS服務器:同上
負載調度器:
關閉NetworkManager服務,並設置開機不自啟
service NetworkManager stop
chkconfig NetworkManager off
添加一塊網卡,或編輯虛擬網卡
cp ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0
DEVICE=eth0:0
IPADDR=10.244.16.100 #vip地址
PREFIX=24
ifup eth0:0 #如果虛地址起不來,則查看NetworkManager服務有沒有關閉。一般是NetworkManager服務與network服務沖突所致,建議重啟一下
修改內核參數,防止相同的網絡地址廣播沖突
vim /etc/sysctl
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
sysctl -p #刷新內核參數
modprobe ip_vs #查看內核是否加載,無法應則以加載
cat /proc/net/ip_vs #參看版本,確認知否正確加載
安裝LVS管理工具ipvsadm
yum install -y ipvsadm
設置DR模式的負載調度規則
ipvsadm -A -t 10.244.16.100:80 -s rr #10.244.16.100為VIP,21和22為實際RS服務器IP
ipvsadm -a -t 10.244.16.100:80 -r 10.244.16.21:80 -g
ipvsadm -a -t 10.244.16.100:80 -r 10.244.16.22:80 -g
ipvsadm -Ln 查看調度規則
保存配置:
service ipvsadm save
chkconfig ipvsadm on
實際RS1:
關閉NetworkManager服務,並設置開機不自啟
service NetworkManager stop
chkconfig NetworkManager off
修改內核參數,防止相同的網絡地址廣播沖突
vim /etc/sysctl
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
sysctl -p 刷新內核參數
配置虛擬回環網卡lo:0用於解析數據報文
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=10.244.16.100
NETMASK=255.255.255.255
ifup eth0:0 #如果虛地址起不來,則查看NetworkManager服務有沒有關閉。一般是NetworkManager服務與network服務沖突所致,建議重啟一下
mount -t nfs [共享存儲:/路徑] [網站根目錄]
實際RS2:與RS1類似
調度多個集群操作
vim nginx.conf
http{ #http 內配置
upstream qixiao.com{ #集群配置區
server 10.244.16.21:8080; #集群主機(默認是輪詢,可以支持多端口)
server 10.244.16.22:80; #集群主機
}
upstream lingshu.com{ #第二個集群配置區
server 10.244.16.23:80;
server 10.244.16.24:80;
}
server { #server區域
listen 80;
server_name www.qixiao.com; #域名
location / {
proxy_pass http://qixiao.com; #當訪問www.qixiao.com時反向代理到qixiao.com集群
}
}
server { #第二個server區域
listen 80; #監聽端口
server_name www.lingshu.com; #域名
location / {
proxy_pass http://lingshu.com; #當訪問www.lingshu.com時反向代理到lingshu.com集群
}
}
}
LVS:Linux虛擬服務
數據報文通過網卡層層解析到達內核,內核根據報文的類型交給上層用戶空間的應用執行。在數據包從內核空間傳送到用戶空間過程中,鈎子函數強行獲取報文的使用權限。查看報文的五元組是否符合LVS規則,如果符合,更改目的地址和端口,進行轉發,不符合就還給上層用戶空間由上層應用解析。
構成:
ipvs:核心程序,內核內置
ipvsadm:用戶空間的命令行管理工具
工作模式:
LVS-NAT
SNAT:主要用於局域網使用一個外網IP進行外網訪問
DNAT:端口映射
負載調度器位於client和真實RS之間
負載調度器必須是Linux,真實提供服務的RS可以是任何操作系統
負載調度器一塊網卡負責提供VIP能力,另一塊網卡與內網RS通訊
負載調度器與真實RS位於同一個二層環境。
負載調度器只負責處理入棧以及出棧請求。
LVS-DR(直接路由模式)
負載調度器與真實服務器位於同一網絡環境
負載調度器與真實服務器必須是Linux操作系統,不支持端口映射
負載調度器只負責處理入棧請求,出棧請求由真實服務器完成。
VIP地址配置在各個節點之上,但是只有負載調度器擁有通訊權,RS上的lo網卡解析數據報文
LVS-TUN(隧道模式)
負載調度器與真實服務器必須是Linux操作系統
負載調度器與真實服務器必須擁有公網IP或者能被路由
負載調度器與真實服務器必須支持數據包二次封裝
負載調度器處理入棧請求,出棧請求由真實服務器完成
難度: NAT < DR < TUN
並發量:RD > TUN > NAT
使用量:NAT > DR > TUN
調度算法:
固定算法(靜態調度算法):只根據算法本身調度,不考慮服務器本身
動態算法(動態調度算法):處理考慮算法本身,還要考慮服務器狀態。【消耗CPU資源,但是更加智能】
靜態:
RR:輪詢,將每次用戶的請求分配給后端的服務器,從第一台服務器開始到第N台結束,然后循環
WRR:加權輪詢,按照權重的比例實現在多台主機之間進行調度
SH:源地址散列,將同一個IP的用戶請求,發送給同一個服務器。
DH:目標地址散列,將同一個目標地址的用戶請求發送給同一個真實服務器(提高緩存的命中率)
動態:
LC:最少連接,將新的連接請求,分配給連接數最少的服務器。活動連接*256+非活動連接
WLC:加權最少連接:特殊的最少連接法,權重越大承擔的請求數越多(活動連接*256+非活動連接)/權重
SED:最短期延遲,特殊的WLC算法,(活動連接+1)*256/權重
NQ:永不排隊,特殊的SED算法。如果發現有連接數為0直接分配。如果全部不為0。則按SED算法分配
LBLC:特殊的DH算法,既能提高緩存命中率,又要考慮服務器性能。緩存壓力達到一定閥值,就將流量分發給其他服務器。
LBLCR:LBLC+緩存,盡可能提高負載均衡和緩存命中率的折中方案
持久連接:
1、優先於任何算法最先匹配
2、可以和任意算法進行配合處理,優先級最高
3、存儲數據在內存分頁中(內存空間)
分類:
PCC(持久客戶端連接)將來自於同一客戶端的所有請求定向至選定的RS,只要IP相同,分配的服務器始終相同
ipvsadm -A -t 172.16.0.8:0 -s wlc -p 120
PPC(持久端口連接)將來自於同一個客戶端對同一個服務(端口)的請求,定向至選定的RS
ipvsadm -A -t 172.16.0.8:80 -s rr -p 120
PFMC(持久防火牆標記連接)將來自於同一客戶端對指定服務(端口)的請求,始終定向至此選定的RS,不過可以將兩個毫不相干的服務定義為一個集群服務。
iptables -t mangle -A PREROUTING -d 172.16.0.8 -p -tcp -dport 80 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -d 172.16.0.8 -p -tcp -dport 443 -j MARK --set-mark 10
service iptables save
上邊兩條表示:將訪問172.16.0.8的80和443端口的流量打上10標簽
ipvsadm -A -f 10 -s wlc -p 120 表示將標簽為10的流量執行wlc算法,持久化連接時間為120秒。持久化時間內發生連接,時間增加120秒。最多不超過200秒【持久化連接時間不宜過大或過小】
LVS-NAT模式搭建:
NFS服務器:
mkdir /share 創建共享目錄
chown nfsnobody:nfsnobody /share/ NFS服務默認使用nfsnobody用戶,將共享目錄屬主和屬組更改為nfsnobody
yum install -y nfs
vim /etc/exports
/share 10.244.16.0/24(rw,sync) #可以共享多個網段。每一行是一個共享。三個字段【共享目錄路徑 共享網段 共享權限】
service rpcbind restart #rpcbind服務是nfs同步數據的服務
service nfs start #開啟nfs服務
chkconfig rpcbind on
chkconfig nfs on
showmount -e [NFS服務器IP地址] 測試NFS服務器是否了連接
注:如果出現權限問題。可以嘗試將apache用戶加入到nfsnobody組。用戶提交的文件就可以寫入共享服務器
負載調度器:
yum install -y ipvsadm
vim /etc/sysctl.conf
net,ipv4.ip_forward=1
sysctl -p
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.244.16.30
ipvsadm -A -t 10.244.16.30:80 -s rr
ipvsadm -a -t 10.244.16.30:80 -r 192.168.1.1:80 -m
ipvsadm -a -t 10.244.16.30:80 -r 192.168.1.2:80 -m
ipvsadm -Ln --stats
LVS-DR模式搭建:
NFS服務器:同上
負載調度器:
關閉NetworkManager服務,並設置開機不自啟
service NetworkManager stop
chkconfig NetworkManager off
添加一塊網卡,或編輯虛擬網卡
cp ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0
DEVICE=eth0:0
IPADDR=10.244.16.100 #vip地址
PREFIX=24
ifup eth0:0 #如果虛地址起不來,則查看NetworkManager服務有沒有關閉。一般是NetworkManager服務與network服務沖突所致,建議重啟一下
修改內核參數,防止相同的網絡地址廣播沖突
vim /etc/sysctl
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
sysctl -p #刷新內核參數
modprobe ip_vs #查看內核是否加載,無法應則以加載
cat /proc/net/ip_vs #參看版本,確認知否正確加載
安裝LVS管理工具ipvsadm
yum install -y ipvsadm
設置DR模式的負載調度規則
ipvsadm -A -t 10.244.16.100:80 -s rr #10.244.16.100為VIP,21和22為實際RS服務器IP
ipvsadm -a -t 10.244.16.100:80 -r 10.244.16.21:80 -g
ipvsadm -a -t 10.244.16.100:80 -r 10.244.16.22:80 -g
ipvsadm -Ln 查看調度規則
保存配置:
service ipvsadm save
chkconfig ipvsadm on
實際RS1:
關閉NetworkManager服務,並設置開機不自啟
service NetworkManager stop
chkconfig NetworkManager off
修改內核參數,防止相同的網絡地址廣播沖突
vim /etc/sysctl
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
sysctl -p 刷新內核參數
配置虛擬回環網卡lo:0用於解析數據報文
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=10.244.16.100
NETMASK=255.255.255.255
ifup eth0:0 #如果虛地址起不來,則查看NetworkManager服務有沒有關閉。一般是NetworkManager服務與network服務沖突所致,建議重啟一下
mount -t nfs [共享存儲:/路徑] [網站根目錄]
實際RS2:與RS1類似