下文給大家?guī)鞮VS-NAT負(fù)載均衡群集部署的原理、模式分析及工作模式介紹,希望能夠給大家在實(shí)際運(yùn)用中帶來一定的幫助,負(fù)載均衡涉及的東西比較多,理論也不多,網(wǎng)上有很多書籍,今天我們就用創(chuàng)新互聯(lián)在行業(yè)內(nèi)累計(jì)的經(jīng)驗(yàn)來做一個(gè)解答。
高坪網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,高坪網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為高坪1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個(gè)售后服務(wù)好的高坪做網(wǎng)站的公司定做!LVS(Linux Virtual Server)即Linux虛擬云服務(wù)器,是由章文嵩博士主導(dǎo)的開源負(fù)載均衡項(xiàng)目,目前LVS已經(jīng)被集成到Linux內(nèi)核模塊中。該項(xiàng)目在Linux內(nèi)核中實(shí)現(xiàn)了基于IP的數(shù)據(jù)請求負(fù)載均衡調(diào)度方案,其體系結(jié)構(gòu)如圖1所示,終端互聯(lián)網(wǎng)用戶從外部訪問公司的外部負(fù)載均衡服務(wù)器,終端用戶的Web請求會(huì)發(fā)送給LVS調(diào)度器,調(diào)度器根據(jù)自己預(yù)設(shè)的算法決定將該請求發(fā)送給后端的某臺(tái)Web服務(wù)器,比如,輪詢算法可以將外部的請求平均分發(fā)給后端的所有服務(wù)器,終端用戶訪問LVS調(diào)度器雖然會(huì)被轉(zhuǎn)發(fā)到后端真實(shí)的服務(wù)器,但如果真實(shí)服務(wù)器連接的是相同的存儲(chǔ),提供的服務(wù)也是相同的服務(wù),最終用戶不管是訪問哪臺(tái)真實(shí)服務(wù)器,得到的服務(wù)內(nèi)容都是一樣的,整個(gè)集群對用戶而言都是透明的。最后根據(jù)LVS工作模式的不同,真實(shí)服務(wù)器會(huì)選擇不同的方式將用戶需要的數(shù)據(jù)發(fā)送到終端用戶,LVS工作模式分為NAT模式、TUN模式、以及DR模式。
**Cluster,集群,群集**
由多臺(tái)主機(jī)構(gòu)成,但對外只表現(xiàn)為一個(gè)整體
在互聯(lián)網(wǎng)應(yīng)用中,隨著站點(diǎn)對硬件性能,響應(yīng)速度,服務(wù)穩(wěn)定性,數(shù)據(jù)可靠性等要求越來越高,單臺(tái)服務(wù)器力不從心
** 解決方法**
使用價(jià)格昂貴的小型機(jī),大型機(jī)
使用普通服務(wù)器構(gòu)建服務(wù)群集
根據(jù)群集所針對的目標(biāo)差異,可分為三種類型
負(fù)載均衡群集
高性能運(yùn)算群集
**負(fù)載均衡群集(Load,Balance Cluster)**
以提高應(yīng)用系統(tǒng)的響應(yīng)能力,盡可能處理更多的訪問請求,減少延遲為目標(biāo),獲得高并發(fā),高負(fù)載LB的整體性能
LB的負(fù)載分配依賴主節(jié)點(diǎn)的分流算法
**高可用群集**
以提高應(yīng)用系統(tǒng)的可靠性,盡可能地減少中斷時(shí)間為目標(biāo),確保服務(wù)的連續(xù)性達(dá)到高可用
HA的容錯(cuò)效果
HA的工作方式包括雙工和主從模式
**高性能運(yùn)算群集**
以提高應(yīng)用系統(tǒng)的CPU運(yùn)算速度,擴(kuò)展硬件資源和分析能力為目標(biāo),獲得相當(dāng)于大型,超級(jí)計(jì)算機(jī)的高性能運(yùn)算HPC能力
高性能運(yùn)算群集的高性能依賴于分布式運(yùn)算,并行計(jì)算,通過專用硬件和軟件將多個(gè)服務(wù)器的CPU,內(nèi)存等資源整合在一起,實(shí)現(xiàn)只有,大型,超級(jí)計(jì)算機(jī)才具備的計(jì)算能力
負(fù)載均衡群集是目前企業(yè)用的最多的群集類型
群集的負(fù)載調(diào)度技術(shù)有三種工作模式
**地址轉(zhuǎn)換**
**IP隧道**
**直接路由**
**簡稱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ī)的訪問出口
服務(wù)器節(jié)點(diǎn)使用私有IP地址,與負(fù)載調(diào)度器位于銅一個(gè)物理網(wǎng)絡(luò),安全性要優(yōu)于其他兩種方式
**簡稱TUM模式**,采用開放式的網(wǎng)絡(luò)結(jié)構(gòu),負(fù)載調(diào)度器僅作為客戶機(jī)的訪問入口,各節(jié)點(diǎn)通過各自的網(wǎng)絡(luò)連接直接回應(yīng)客戶機(jī),而不再經(jīng)過負(fù)載調(diào)度器
服務(wù)器節(jié)點(diǎn)分散在互聯(lián)網(wǎng)中的不同位置,具有獨(dú)立的公網(wǎng)IP地址,通過專用IP隧道與負(fù)載調(diào)度器相互通信。所有環(huán)境都是公網(wǎng)環(huán)境
直接路由
**簡稱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隧道
在局域網(wǎng)中
**輪詢 (Round Robin)**
將收到的訪問請求安裝順序輪流分配給群集中的個(gè)節(jié)點(diǎn)(真實(shí)服務(wù)器),均等地對待每一臺(tái)服務(wù)器,而不管服務(wù)器實(shí)際的連接數(shù)和系統(tǒng)負(fù)載
**加權(quán)輪詢 (Weighted Round Robin**)
根據(jù)真實(shí)服務(wù)器的處理能力輪流分配收到的訪問請求,調(diào)度器可以自動(dòng)查詢各節(jié)點(diǎn)的負(fù)載情況,并動(dòng)態(tài)調(diào)整其權(quán)重
保證處理能力強(qiáng)的服務(wù)器承擔(dān)更多的訪問流量
**最少連接 (Least Connections)**
根據(jù)真實(shí)服務(wù)器已建立的連接輸進(jìn)行分配,將收到的訪問請求優(yōu)先分配給連接數(shù)最少的節(jié)點(diǎn)
**加權(quán)最少連接 (Weighted Least Connections)**
在服務(wù)器節(jié)點(diǎn)的性能差異較大情況下,可以為真實(shí)服務(wù)器自動(dòng)調(diào)整
權(quán)重
權(quán)重較高的節(jié)點(diǎn)將承擔(dān)更大比例活動(dòng)連接負(fù)載
我們需要五臺(tái)虛擬機(jī)
1 作為負(fù)載均衡調(diào)度器 外網(wǎng)地址:12.0.0.1 內(nèi)網(wǎng):192.168.200.1
4 網(wǎng)站服務(wù)器apache 節(jié)點(diǎn):192.168.200.110
5 網(wǎng)站服務(wù)器 節(jié)點(diǎn): 192.168.200.120
6 nfs共享存儲(chǔ) 節(jié)點(diǎn):192.168.200.130
7 客戶端 12.0.0.12
[root@localhost ~]# yum install nfs-utils rpcbind -y
[root@localhost ~]# yum install httpd -y
[root@localhost ~]# yum install ipvsadm -y
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 #配置ens33網(wǎng)卡
BOOTPROTO=static #靜態(tài)
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=66a1e3d6-5c57-42ab-9996-b942b049ef85
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.200.130 #IP地址
NETMASK=255.255.255.0 #子網(wǎng)掩碼
GATEWAY=192.168.200.1 #網(wǎng)關(guān)
[root@localhost ~]# systemctl stop firewalld.service
s[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start nfs.service
[root@localhost ~]# systemctl status nfs.service
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
Active: active (exited) since 二 2019-11-26 1
[root@localhost ~]# systemctl start rpcbind.service
[root@localhost ~]# systemctl status rpcbind.service
● rpcbind.service - RPC bind service
Loaded: loaded (/usr/lib/systemd/system/rpcbind.service
[root@localhost ~]# vim /etc/exports
/usr/share *(ro,sync) #只讀,同步 所有服務(wù)器都可以去訪問
/opt/accp 192.168.200.0/24(rw,sync) #共享給200段可以訪問,可讀,可寫,同步
/opt/benet 192.168.200.0/24(rw,sync)
[root@localhost ~]# cd /opt/
[root@localhost opt]# mkdir benet accp
[root@localhost opt]# chmod 777 accp/ benet/ #給可讀可寫可執(zhí)行
[root@localhost opt]# ls -l
總用量 0
drwxrwxrwx. 2 root root 6 11月 26 17:13 accp
drwxrwxrwx. 2 root root 6 11月 26 17:13 benet
drwxr-xr-x. 2 root root 6 3月 26 2015 rh
[root@localhost opt]# exportfs -rv
exporting 192.168.200.0/24:/opt/benet
exporting 192.168.200.0/24:/opt/accp
exporting *:/usr/share
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=c3f0a196-6819-4702-9b54-7cad18402591
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.200.110
NETMASK=255.255.255.0
GATEWAY=192.168.200.1
[root@localhost ~]# systemctl restart network
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start httpd.service
[root@localhost ~]# netstat -ntap | grep 80
tcp6 0 0 :::80 :::* LISTEN 100863/httpd
[root@localhost ~]# ping 192.168.200.130
PING 192.168.200.130 (192.168.200.130) 56(84) bytes of data.
64 bytes from 192.168.200.130: icmp_seq=1 ttl=64 time=0.724 ms
64 bytes from 192.168.200.130: icmp_seq=2 ttl=64 time=0.356 ms
[root@localhost ~]# showmount -e 192.168.200.130 #測試6服務(wù)器的共享目錄
Export list for 192.168.200.130:
/usr/share *
/opt/benet 192.168.200.0/24
/opt/accp 192.168.200.0/24
[root@localhost ~]# mount.nfs 192.168.200.130:/opt/accp /var/www/html/ #掛載
[root@localhost ~]# df -h
問件系統(tǒng) 容量 已用 可用 已用% 掛載點(diǎn)
/dev/mapper/centos-root 20G 3.4G 17G 17% /
devtmpfs 897M 0 897M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 9.6M 903M 2% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 6.0G 179M 5.9G 3% /boot
/dev/mapper/centos-home 10G 37M 10G 1% /home
tmpfs 183M 40K 183M 1% /run/user/0
tmpfs 183M 4.0K 183M 1% /run/user/42
192.168.200.130:/opt/accp 20G 3.8G 17G 19% /var/www/html
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# echo "THII IS ACCP WEB" > index.html
#6服務(wù)器去測試
[root@localhost opt]# cd accp/
[root@localhost accp]# ls
index.html
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=a6cf69fe-eb42-4a99-9239-0da4cdeae0c7
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.200.120
NATMASK=255.255.255.0
GATEWAT=192.168.200.1
[root@localhost ~]# systemctl restart network
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# mount.nfs 192.168.200.130:/opt/benet /var/www/html/
[root@localhost ~]# df -h
問件系統(tǒng) 容量 已用 可用 已用% 掛載點(diǎn)
/dev/mapper/centos-root 20G 4.3G 16G 22% /
devtmpfs 897M 0 897M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 9.5M 903M 2% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 6.0G 179M 5.9G 3% /boot
/dev/mapper/centos-home 10G 36M 10G 1% /home
tmpfs 183M 44K 183M 1% /run/user/0
192.168.200.130:/opt/benet 20G 3.8G 17G 19% /var/www/html
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# echo "this is benet web" > index.html
[root@localhost html]# systemctl start httpd.service
#6去測試
[root@localhost accp]# cd ../
[root@localhost opt]# cd benet/
[root@localhost benet]# ls
index.html
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=12.0.0.1
NETMASK=255.255.255.0
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=849aa04e-1874-490f-8cb0-b2fde4b9a6f8
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.200.1
NETMASK=255.255.255.0
[root@localhost ~]# systemctl restart network #重啟網(wǎng)絡(luò)服務(wù)
vim /etc/sysctl.conf #修改配置文件
net.ipv4.ip_forward=1 #加一條
[root@localhost ~]# sysctl -p #生效路由轉(zhuǎn)發(fā)
net.ipv4.ip_forward = 1
[root@localhost ~]# iptables -t nat -F #清除NAT表
[root@localhost ~]# iptables -F #清除轉(zhuǎn)發(fā)表
[root@localhost ~]# iptables -t nat -A POSTROUTING -o ens36 -s 192.168.200.0/24 -j SNAT --to-source 12.0.0.1
#在nat表中-A在POSTROUTING列中-o指定出口-s指定源地址 -j做nat 轉(zhuǎn)換成12.0.0.1
[root@localhost html]# ping 12.0.0.12
PING 12.0.0.12 (12.0.0.12) 56(84) bytes of data.
64 bytes from 12.0.0.12: icmp_seq=1 ttl=127 time=0.815 ms
64 bytes from 12.0.0.12: icmp_seq=2 ttl=127 time=0.752 ms
64 bytes from 12.0.0.12: icmp_seq=3 ttl=127 time=0.727 ms
64 bytes from 12.0.0.12: icmp_seq=4 ttl=127 time=0.712 ms
[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# cat /proc/net/ip_vs #查看LVS內(nèi)核版本
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@localhost ~]# ipvsadm --save > /etc/sysconfig/ipvsadm
[root@localhost ~]# systemctl start ipvsadm.service
[root@localhost ~]# systemctl status ipvsadm.service
● ipvsadm.service - Initialise the Linux Virtual Server
Loaded: loaded (/usr/lib/systemd/system/ipvsadm.service; disabled; vendor preset: disabled)
Active: active (exited) since 二 2019-11-26 17:59:41 CST; 9s ago
[root@localhost ~]# cd /opt/
[root@localhost opt]# vim nat.sh
#!/bin/bash
ipvsadm -C #清除緩存
ipvsadm -A -t 12.0.0.1:80 -s rr #添加虛擬服務(wù)器,-A -t指定端口 -s指定算法輪詢
ipvsadm -a -t 12.0.0.1:80 -r 192.168.200.110:80 -m #-a -t指定端口 -r指定真實(shí)節(jié)點(diǎn)服務(wù)器 -m指定NAT
ipvsadm -a -t 12.0.0.1:80 -r 192.168.200.120:80 -m
ipvsadm
[root@localhost opt]# source nat.sh #啟動(dòng)腳本
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP localhost.localdomain:http rr
-> 192.168.200.110:http Masq 1 0 0
-> 192.168.200.120:http Masq 1 0 0
[root@localhost opt]# iptables -F #清除轉(zhuǎn)發(fā)表
[root@localhost opt]# iptables -t nat -F #清除轉(zhuǎn)發(fā)表
[root@localhost opt]# iptables -t nat -A POSTROUTING -o ens36 -s 192.168.200.0/24 -j SNAT --to-source 12.0.0.1
#在nat表中-A在POSTROUTING列中-o指定出口-s指定源地址 -j做nat 轉(zhuǎn)換成12.0.0.1
看了以上關(guān)于LVS-NAT負(fù)載均衡群集部署的原理、模式分析及工作模式介紹,如果大家還有什么地方需要了解的可以在創(chuàng)新互聯(lián)行業(yè)資訊里查找自己感興趣的或者找我們的專業(yè)技術(shù)工程師解答的,創(chuàng)新互聯(lián)技術(shù)工程師在行業(yè)內(nèi)擁有十幾年的經(jīng)驗(yàn)了。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。