柚子快報(bào)邀請(qǐng)碼778899分享:運(yùn)維 LVS負(fù)載均衡群集
柚子快報(bào)邀請(qǐng)碼778899分享:運(yùn)維 LVS負(fù)載均衡群集
文章目錄
LVS負(fù)載均衡群集1 企業(yè)群集1.1 群集cluster的定義1.2 解決辦法1.3 企業(yè)群集分類1.4 概念1.4.1 負(fù)載均衡群集1.4.2 高可用群集1.4.3 高性能運(yùn)算 群集
2 負(fù)載均衡2.1 負(fù)載均衡結(jié)構(gòu)2.2 負(fù)載均衡群集工作模式2.2.1 NAT模式2.2.2 TUN模式2.2.3 DR模式
3 LVS虛擬服務(wù)器3.1 負(fù)載均衡調(diào)度算法3.2 ipvsadm工具3.2.1 選項(xiàng)
4 LVS-NAT4.1 部署192.168.146.30(安裝nginx服務(wù))4.2 部署192.168.146.50(安裝nginx服務(wù))4.3 192.168.146.60(nfs共享)4.4 部署192.168.146.20做LVS調(diào)度器4.5 測(cè)試修改客戶端的模式也為vnate1 模式,并且修改ip地址
LVS負(fù)載均衡群集
1 企業(yè)群集
1.1 群集cluster的定義
由多臺(tái)主機(jī)構(gòu)成
但對(duì)外只表現(xiàn)為一個(gè)整體,只提供一個(gè)訪問入口
所以相當(dāng)于一臺(tái)大型的計(jì)算機(jī)
1.2 解決辦法
目前互聯(lián)網(wǎng)應(yīng)用中,隨著站點(diǎn)對(duì)硬件性能、響應(yīng)速度、服務(wù)穩(wěn)定性、數(shù)據(jù)可靠性等要求越來(lái)越高
單臺(tái)服務(wù)器已經(jīng)無(wú)法滿足負(fù)載均衡及高可用的要求
通常有以下兩個(gè)解決方法
縱向擴(kuò)展
擴(kuò)展CPU 內(nèi)存 使用價(jià)格昂貴的小型機(jī)、大型機(jī) 橫向擴(kuò)展
使用多臺(tái)相對(duì)廉價(jià)的普通服務(wù)器構(gòu)建服務(wù)群集
1.3 企業(yè)群集分類
負(fù)載均衡群集高可用群集高性能運(yùn)算群集
1.4 概念
1.4.1 負(fù)載均衡群集
提高應(yīng)用系統(tǒng)的響應(yīng)能力,盡可能處理更多的訪問請(qǐng)求,減少延遲為目標(biāo),獲得高并發(fā),高負(fù)載(LB )的整體性能
LB的負(fù)載分配依賴于主節(jié)點(diǎn)的分流算法,將來(lái)自客戶機(jī)的訪問請(qǐng)求分擔(dān)給多個(gè)服務(wù)器節(jié)點(diǎn),從而緩解整個(gè)系統(tǒng)的負(fù)載壓力,例如“DNS輪詢”,“反向代理”等
1.4.2 高可用群集
提高應(yīng)用系統(tǒng)的可靠性,盡可能的減少中斷時(shí)間為目標(biāo),確保服務(wù)的連續(xù)性,達(dá)到高可用(HA)的容錯(cuò)效果。
HA的工作方式包括雙工和主從兩種模式,雙工即所有節(jié)點(diǎn)同時(shí)在線,主從則只有主節(jié)點(diǎn)在線,但當(dāng)出現(xiàn)故障時(shí)從節(jié)點(diǎn)能自動(dòng)切換為主節(jié)點(diǎn),例如“故障切換”“雙機(jī)熱備”等
1.4.3 高性能運(yùn)算 群集
以提高應(yīng)用系統(tǒng)的CPU運(yùn)算速度,擴(kuò)展硬件資源和分析能力為目標(biāo),獲得相當(dāng)于大型,超級(jí)計(jì)算機(jī)的高性能運(yùn)算(HPC)能力
高性能依賴于==“分布式運(yùn)算”“并行計(jì)算”==,通過專用硬件和軟件將多個(gè)服務(wù)器的CPU,內(nèi)存等資源整合在一起,實(shí)現(xiàn)只有大型,超級(jí)計(jì)算機(jī)才具備的計(jì)算能力,例如“云計(jì)算”“網(wǎng)絡(luò)計(jì)算”等
2 負(fù)載均衡
2.1 負(fù)載均衡結(jié)構(gòu)
第一層 負(fù)載調(diào)度器
訪問整個(gè)群集系統(tǒng)的唯一入口,對(duì)外使用所有服務(wù)器共有的vip地址通常會(huì)配置主備兩臺(tái)調(diào)度器實(shí)現(xiàn)熱備份,當(dāng)主調(diào)度器失效以后能夠平滑替換至備用調(diào)度器,確保高可用性 第二層服務(wù)器池
群集所提供的應(yīng)用服務(wù),由服務(wù)器池承擔(dān),其中每個(gè)節(jié)點(diǎn)具有獨(dú)立的RIP地址(真實(shí)ip),只處理調(diào)度器分發(fā)過來(lái)的客戶機(jī)請(qǐng)求當(dāng)某個(gè)節(jié)點(diǎn)暫時(shí)失效時(shí),負(fù)載調(diào)度器的容錯(cuò)機(jī)制會(huì)將其隔離,等待錯(cuò)誤排除以后再重新納入服務(wù)器池 第三層共享存儲(chǔ)
為服務(wù)器池中的所以節(jié)點(diǎn)提供穩(wěn)定,一致的文件存取服務(wù),確保整個(gè)群集的統(tǒng)一性
2.2 負(fù)載均衡群集工作模式
2.2.1 NAT模式
類似于防火墻的私有網(wǎng)絡(luò)結(jié)構(gòu),負(fù)載調(diào)度器作為所有服務(wù)器節(jié)點(diǎn)的網(wǎng)關(guān),即作為客戶機(jī)的訪問入口,也是各節(jié)點(diǎn)回應(yīng)客戶機(jī)的訪問出口
2.2.2 TUN模式
采用開放式的網(wǎng)絡(luò)結(jié)構(gòu),負(fù)載調(diào)度器僅作為客戶機(jī)的訪問入口,各節(jié)點(diǎn)通過各自的Internet連接直接回應(yīng)客戶機(jī),而不在經(jīng)過負(fù)載調(diào)度器
2.2.3 DR模式
采用半開放式的網(wǎng)絡(luò)結(jié)構(gòu),與TUN模式的結(jié)構(gòu)累死,但各節(jié)點(diǎn)并不是分散在各地,而是與調(diào)度器位于同一個(gè)物理網(wǎng)絡(luò)
負(fù)載調(diào)度器與各節(jié)點(diǎn)服務(wù)器通過本地網(wǎng)絡(luò)連接,不需要建立專用的ip隧道
3 LVS虛擬服務(wù)器
LinuxVirtualServer
LVS實(shí)際是相當(dāng)于基于IP地址的虛擬化應(yīng)用
基于IP地址和內(nèi)容請(qǐng)求分發(fā)
LVS現(xiàn)在已成為L(zhǎng)inux內(nèi)核的一部分,默認(rèn)編譯為ip_vs模塊,必要時(shí)能夠自動(dòng)調(diào)用。在CentOS7系統(tǒng)中,以下操作可以手動(dòng)加載ip_vs模塊,并查看當(dāng)前系統(tǒng)中ip_vs模塊的版本信息
[root@localhost ~]# modprobe ip_vs
#手動(dòng)加載
[root@localhost ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
#確認(rèn)內(nèi)核對(duì)LVS的支持
[root@localhost ~]# cd /usr/lib/modules/3.10.0-693.el7.x86_64/kernel/net/netfilter/ipvs/
[root@localhost ipvs]# ls
ip_vs_dh.ko.xz ip_vs.ko.xz ip_vs_lblcr.ko.xz ip_vs_nq.ko.xz ip_vs_rr.ko.xz ip_vs_sh.ko.xz ip_vs_wrr.ko.xz
ip_vs_ftp.ko.xz ip_vs_lblc.ko.xz ip_vs_lc.ko.xz ip_vs_pe_sip.ko.xz ip_vs_sed.ko.xz ip_vs_wlc.ko.xz
[root@localhost ipvs]# ls |grep -o "^[^.]*"
ip_vs_dh
ip_vs_ftp
ip_vs
ip_vs_lblc
ip_vs_lblcr
ip_vs_lc
ip_vs_nq
ip_vs_pe_sip
ip_vs_rr
ip_vs_sed
ip_vs_sh
ip_vs_wlc
ip_vs_wrr[root@localhost ipvs]# for i in $(ls |grep -o "^[^.]*")
> do
> echo $i
> modprobe $i
#使用for循環(huán),一次性加載
3.1 負(fù)載均衡調(diào)度算法
輪詢r(jià)r
將收到的訪問請(qǐng)求按照順序輪流分配給群集中的各節(jié)點(diǎn)(真實(shí)服務(wù)器),均等的對(duì)待每一個(gè)服務(wù)器,而不管服務(wù)器實(shí)際的連接數(shù)和系統(tǒng)負(fù)載 加權(quán)輪詢wrr
根據(jù)調(diào)度器設(shè)置的權(quán)重值分發(fā)請(qǐng)求,權(quán)重值高的節(jié)點(diǎn)優(yōu)先獲得任務(wù),分配的請(qǐng)求數(shù)越多 保證性能強(qiáng)的服務(wù)器承擔(dān)更多的訪問流量 最小連接least conn
根據(jù)真實(shí)服務(wù)器已建立的連接數(shù)進(jìn)行分配,將收到的訪問請(qǐng)求優(yōu)先分配給連接數(shù)最少的節(jié)點(diǎn) 加權(quán)最少連接wlc
服務(wù)器節(jié)點(diǎn)性能差異較大時(shí),可以為真實(shí)服務(wù)器自動(dòng)調(diào)整權(quán)重
3.2 ipvsadm工具
創(chuàng)建虛擬服務(wù)器添加刪除服務(wù)器節(jié)點(diǎn)查看群集及節(jié)點(diǎn)情況保存負(fù)載均衡策略
3.2.1 選項(xiàng)
-A:添加虛擬服務(wù)器
-D:刪除整個(gè)虛擬fuwq
-s:指定負(fù)載調(diào)度算法(輪詢,加權(quán)輪詢,最少連接,加權(quán)最少連接,wlc)
-a:表示添加真實(shí)服務(wù)器(節(jié)點(diǎn)服務(wù)器)
-d:刪除某一個(gè)節(jié)點(diǎn)
-t:指定VIP地址及TCP端口
-r:指定RIP地址及TCP端口
-m:表示使用NAT群集模式
-g:表示使用DR模式
-i:表示使用TUN模式
-w:設(shè)置權(quán)重(權(quán)重為0時(shí)表示暫停節(jié)點(diǎn))
-p60:表示保持長(zhǎng)連接60秒
-l:列表查看LVS虛擬服務(wù)器(默認(rèn)為查看所有)
-n:以數(shù)字形式顯示地址,端口等信息,常與“-l”選項(xiàng)組合使用
4 LVS-NAT
準(zhǔn)備四臺(tái)虛擬機(jī)
192.168.146.20做LVS調(diào)度器
192.168.146.30做nginx
192.168.146.50做nginx
192.168.146.60做nfs共享存儲(chǔ)
4.1 部署192.168.146.30(安裝nginx服務(wù))
cd /etc/yum.repo.d/
將nginx的包拉進(jìn)去
yum -y install nginx
cd /etc/nginx/
vim nginx.conf
可以發(fā)現(xiàn),他的默認(rèn)server塊在conf.d配置文件中
cd conf.d/
vim default.conf
找到他的網(wǎng)頁(yè)根目錄在/usr/share/nginx/html
將網(wǎng)頁(yè)根目錄下的所有東西,復(fù)制到共享存儲(chǔ)服務(wù)器中
scp * 192.168.146.60:/opt
等共享存儲(chǔ)服務(wù)器完成操作后
showmount -e 192.168.146.60
#掛載到共享服務(wù)器(臨時(shí)掛載)
mount 192.168.146.60:/opt/html /usr/share/nginx/html/
#到指定目錄查看是否已經(jīng)共享
cd /usr/share/nginx/html/
systemctl start nginx
4.2 部署192.168.146.50(安裝nginx服務(wù))
cd /etc/yum.repo.d/
將nginx的包拉進(jìn)去
yum -y install nginx
#永久掛載到共享目錄
vim /etc/fstab
192.168.146.60:/opt/html /usr/share/nginx/html nfs defaults,_netdev 0 0
systemctl start nginx
為了以示區(qū)分,在共享文件的虛擬機(jī)中,重新創(chuàng)建了一個(gè)共享文件
umount /usr/share/nginx/html/
vim /etc/fstab
192.168.146.60:/opt/www /usr/share/nginx/html nfs defaults,_netdev 0 0
4.3 192.168.146.60(nfs共享)
mkdir html #做網(wǎng)頁(yè)共享目錄
mv *.html html
cd /opt/html
vim game.html
this is nfs share web page!
#檢查兩個(gè)服務(wù)是否已經(jīng)安裝,如果未安裝,可以用yum直接安裝
rpm -q nfs-utils rpcbind
systemctl enable --now rpc-rquotad.service nfs
vim /etc/exports
/opt/html 192.168.146.0/24(rw,sync,no_root_squash)
chmod 777 html/ #系統(tǒng)用戶也需要有權(quán)限
exportfs -arv #在線發(fā)布共享目錄,不需要重啟。如果通過重啟來(lái)發(fā)布共享目錄,可能會(huì)導(dǎo)致已經(jīng)掛載的客戶端出現(xiàn)卡死現(xiàn)象
systemctl stop firewalld.service
setenforce 0
因?yàn)槟壳?0和50的主機(jī)都用的同一個(gè)目錄來(lái)共享文件的,不太好區(qū)別,所以可以用兩個(gè)目錄來(lái)區(qū)分開
cp -r html/ www
chmod 777 www
vim /etc/exports
/opt/html 192.168.146.0/24(rw,sync,no_root_squash)
/opt/www 192.168.146.0/24(rw,sync,no_root_squash)
exportfs -arv
cd /www
vim game.html
this is www share web page!
4.4 部署192.168.146.20做LVS調(diào)度器
先添加一張網(wǎng)卡
vim ifcfg-ens36
TYPE=Ethernet
DEVICE=ens36
ONBOOT=yes
BOOTPROTO=static
IPADDR=12.0.0.10
NETMASK=255.255.255.0
vim ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.146.20
NETMASK=255.255.255.0
#GATEWAY=192.168.146.2
#DNS1=192.168.146.2
由于在nat模式下,所以需要將兩個(gè)節(jié)點(diǎn)服務(wù)器30和50的網(wǎng)關(guān)設(shè)置為調(diào)度器的地址
192.168.146.30
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.146.30
NETMASK=255.255.255.0
GATEWAY=192.168.146.20
#DNS1=192.168.146.2
systemctl restart network
192.168.146.50
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.146.50
NETMASK=255.255.255.0
GATEWAY=192.168.146.20
#DNS1=192.168.146.2
systemctl restart network
設(shè)置ip轉(zhuǎn)發(fā)功能
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p #加載
iptables -F && iptables -t nat -F #清空iptables規(guī)則
iptables -t nat -A POSTROUTING -s 192.168.146.0/24 -o ens36 -j SNAT --to 12.0.0.10
iptables -nL -t nat
modprobe ip_vs #加載模塊(此實(shí)驗(yàn)只要加載一個(gè)通用的就可以了)
如果想加載全部,就去/usr/lib/modules/3.10.0-693.el7.x86_64/kernel/net/netfilter/ipvs/
用for循環(huán),遍歷加載
for i in $(ls ./)
do
a=$(echo $i | awk -F. '{print $1}')
modprobe $a
echo "$a"
done
yum -y install ipvsadm
如果直接啟動(dòng)ipvsadm會(huì)報(bào)錯(cuò)
/var/log/messages查看一下,原因是缺少/etc/sysconfig/ipvsadm這個(gè)文件,所以我們可以手動(dòng)給他添加一下
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
配置負(fù)載分配策略(NAT模式只要在調(diào)度器上配置,節(jié)點(diǎn)服務(wù)器不需要特殊配置)
ipvsadm -ln #查看是否有規(guī)則
ipvsadm -C #清楚現(xiàn)有規(guī)則
ipvsadm -A -t 12.0.0.10:80 -s rr #添加一個(gè)虛擬服務(wù)器
ipvsadm -a -t 12.0.0.10:80 -r 192.168.146.30:80 -m #添加節(jié)點(diǎn)服務(wù)器
ipvsadm -a -t 12.0.0.10:80 -r 192.168.146.50:80 -m
ipvsadm #啟用
4.5 測(cè)試修改客戶端的模式也為vnate1 模式,并且修改ip地址
柚子快報(bào)邀請(qǐng)碼778899分享:運(yùn)維 LVS負(fù)載均衡群集
好文推薦
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。