1、基于 CentOS 7 構(gòu)建 LVS-DR 群集。
2、配置nginx負(fù)載均衡。
一、 LVS-DR 群集
1、LVS-DR工作原理
LVS-DR(Linux Virtual Server Director Server)
名稱 | 縮寫 | 說明 |
虛擬IP地址(Virtual IP Address) |
VIP | Director用于向客戶端計算機提供服務(wù)的IP地址 |
真實IP地址(Real Server IP Address) | RIP | 在集群下面節(jié)點上使用IP地址 |
Director的IP地址(Director IP Address) | DIP | Director用于連接內(nèi)外網(wǎng)絡(luò)的IP地址 |
客戶端主機IP地址(Client IP Address) | CIP | 客戶端用戶計算機請求集群服務(wù)器的IP地址,該地址用作發(fā)送集群的請求的源IP地址?? |
首先,來自客戶端計算機?CIP?的請求被發(fā)送到?Director?的?VIP?。
接著,Director?使用相同的?VIP?目的?IP?地址將 請求發(fā)送到集群節(jié)點或真實服務(wù)器。
然后,集群某個節(jié)點將回復(fù)該數(shù)據(jù)包,并將該數(shù)據(jù)包直接發(fā)送到客戶端計算機(不經(jīng)過director?),并且以此回復(fù)數(shù)據(jù)包使用的目的?VIP?地址作為源?IP?地址。
因此,實際上 是客戶計算機被“?欺騙?”?了,客戶計算機始終認(rèn)為它正與同一臺計算機對話,而實際上它正在發(fā)送請求數(shù) 據(jù)包給一臺計算機(LB?),并從另一臺計算機(?RS?)接收回復(fù)的數(shù)據(jù)包。?
2、LVS-DR模式的特點
(1)所有集群節(jié)點?RS?必須和?Director?在相同的物理網(wǎng)段(即同一個局域網(wǎng)中);
(2)所有客戶端入站(而不是出站)請求由?Director?首先接收,并轉(zhuǎn)發(fā)給集群節(jié)點?RS?;
(3)集群節(jié)點?RS?通常來說最好帶外部?IP?,而不使用?Director?及某固定機器作為默認(rèn)網(wǎng)關(guān),以便將數(shù)據(jù)包直 接回復(fù)給客戶端計算機,且不會產(chǎn)生回包的瓶頸;
(4)所有集群節(jié)點?RS?上必須在?lo?網(wǎng)卡上綁定?VIP?地址,以便驗證通過目的?IP?非?RS?的數(shù)據(jù)包;
(5)由于所有集群節(jié)點?RS?上必須在?lo?網(wǎng)卡上綁定?VIP?地址,因此,帶來?arp?問題,即集群節(jié)點?RS?默認(rèn)會相 應(yīng)發(fā)往Director VIP?的數(shù)據(jù)包。因此要對所有集群節(jié)點?RS?做?ARP?抑制處理,把響應(yīng)?VIP?的請求交給?LVS Director;
(6)很多操作系統(tǒng)都可以用在集群內(nèi)部的?RS?真實服務(wù)器上只要該操作系統(tǒng)能夠?qū)崿F(xiàn)?ARP?隱藏,如: Windows,?linux?,?unix?;
(7)?LVS/DR?模式不需要開啟調(diào)度器轉(zhuǎn)發(fā)功能,這點和?LVS/NAT?模式是不同的。
(8)?LVS/DR Director?(服務(wù)器數(shù)量?100?臺)可以比?LVS-NAT Director?(服務(wù)器數(shù)量?10-20?臺)承受更多的 并發(fā)請求和轉(zhuǎn)發(fā)更多的服務(wù)器數(shù)量。
3、部署LVS-DR集群
主機 | IP地址 |
DR服務(wù)器 | 192.168.186.100 |
web服務(wù)器1 | 192.168.186.103 |
web服務(wù)器2 | 192.168.186.102 |
客戶端 | 192.168.206.100 |
vip(虛擬換回) | 192.168.186.200 |
(1)配置負(fù)載調(diào)度器(192.168.186.100)?
#關(guān)閉防火墻
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
#安裝ipvsadm工具
[root@localhost ~]# yum install ipvsadm -y
#配置虛擬IP地址(VIP:192.168.186.200)
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]# vim ifcfg-ens33:0
#刪除UUID,dns與網(wǎng)關(guān),注意子網(wǎng)
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.186.200
NETMASK=255.255.255.255
#重啟網(wǎng)絡(luò)服務(wù)、啟動網(wǎng)卡
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifup ifcfg-ens33:0
##調(diào)整/proc響應(yīng)參數(shù) 對于 DR 群集模式來說,由于 LVS 負(fù)載調(diào)度器和各節(jié)點需要共用 VIP 地址,應(yīng)該關(guān)閉 Linux 內(nèi)核的重定向參數(shù)響應(yīng)服務(wù)器不是一臺路由器,那么它不會發(fā)送重定向,所以可以關(guān)閉該功能
[root@localhost network-scripts]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
#刷新配置
[root@localhost network-scripts]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
#加載模塊
[root@localhost network-scripts]# modprobe ip_vs
[root@localhost network-scripts]# 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
#配置負(fù)載分配策略,并啟動服務(wù)
[root@localhost network-scripts]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@localhost network-scripts]# systemctl start ipvsadm
#手工執(zhí)行配置添加LVS服務(wù)并增加兩臺RS
##添加真實服務(wù)器-a
##指定VIP地址及TCP端口-t
##指定RIP地址及TCP端口 -r
##指定DR模式-g
[root@localhost network-scripts]# ipvsadm -C
[root@localhost network-scripts]# ipvsadm --set 30 5 60
[root@localhost network-scripts]# ipvsadm -A -t 192.168.186.200:80 -s rr
[root@localhost network-scripts]# ipvsadm -a -t 192.168.186.200:80 -r 192.168.186.103:80 -g
[root@localhost network-scripts]# ipvsadm -a -t 192.168.186.200:80 -r 192.168.186.102:80 -g
#保存設(shè)置
[root@localhost network-scripts]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.186.200:80 wlc
-> 192.168.186.103:80 Route 1 0 0
-> 192.168.186.102:80 Route 1 0 0
?(2)第一臺web節(jié)點服務(wù)器(192.168.186.103)
#關(guān)閉防火墻
[root@web1 ~]# systemctl stop firewalld
[root@web1 ~]# setenforce 0
#安裝httpd,開啟服務(wù)
[root@web1 ~]# yum install httpd -y
[root@web1 ~]# systemctl start httpd
#創(chuàng)建一個站點文件并寫入內(nèi)容
[root@web1 ~]# echo "this is 192.168.186.103" > /var/www/html/index.html
#添加環(huán)回網(wǎng)卡,修改環(huán)回網(wǎng)卡名,IP地址,子網(wǎng)掩碼
[root@web1 ~]# cd /etc/sysconfig/network-scripts/
[root@web1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@web1 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.186.200
NETMASK=255.255.255.255
NETWORK=127.0.0.0
#重啟網(wǎng)絡(luò)
[root@web1 network-scripts]# systemctl restart network
##添加路由
[root@web1 network-scripts]# ifup lo:0
[root@web1 network-scripts]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 192.168.186.200 netmask 255.255.255.255
loop txqueuelen 1000 (Local Loopback)
[root@web1 network-scripts]# route add -host 192.168.169.200 dev lo:0
##調(diào)整proc相應(yīng)參數(shù)
[root@web1 network-scripts]vim /etc/sysctl.conf
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
[root@web1 network-scripts]sysctl -p
(3)第二臺web節(jié)點服務(wù)器(192.168.186.102)?
#關(guān)閉防火墻
[root@web2 ~]# systemctl stop firewalld
[root@web2 ~]# setenforce 0
#安裝httpd,開啟服務(wù)
[root@web2 ~]# yum install httpd -y
[root@web2 ~]# systemctl start httpd
#創(chuàng)建站點文件
[root@web2 ~]# echo "this is 192.168.186.102" > /var/www/html/index.html
#添加環(huán)回網(wǎng)卡,修改環(huán)回網(wǎng)卡名,IP地址,子網(wǎng)掩碼
[root@web2 ~]# cd /etc/sysconfig/network-scripts/
[root@web2 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@web2 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.185.200
NETMASK=255.255.255.255
NETWORK=127.0.0.0
#設(shè)置路由
[root@web2 network-scripts]# route add -host 192.168.186.200 dev lo:0
[root@web2 network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.186.2 0.0.0.0 UG 100 0 0 ens33
192.168.186.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.186.200 0.0.0.0 255.255.255.255 UH 0 0 0 lo
#開機執(zhí)行命令
[root@web2 network-scripts]# vim /etc/rc.d/rc.local
/usr/sbin/route add -host 192.168.59.188 dev lo:0
#調(diào)整 proc 響應(yīng)參數(shù)
[root@web2 network-scripts]# vim /etc/sysctl.conf
[root@web2 network-scripts]# sysctl -p
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
(4)客戶端測試
?(5)測試
?
?二、nginx負(fù)載均衡
1、反向代理工作過程
?從圖 6-2可知,若用戶A?、用戶B?、用戶C?同時對反向代理服務(wù)器發(fā)送請求,反向代理服務(wù)器則根據(jù)其內(nèi)部的具體配置,將用戶的請求分發(fā)給后端服務(wù)器進行處理,并將后端服務(wù)器處理后的響應(yīng)結(jié)果作為自己的響應(yīng)結(jié)果返回給用戶。?反向代理服務(wù)器的整個處理過程,用戶并不知情 。因此,從上述對代理和反向代理的介紹可以總結(jié)出兩者的特性,主要有以下幾點:
(1)安全性:?正向代理的客戶端能夠在隱藏自身信息的同時訪問任意網(wǎng)站,這給網(wǎng)絡(luò)安?全帶來了極大的威脅。因?此,?在使用時必須采取安全措施以確保僅為經(jīng)過授權(quán)的客?戶端用戶提供服務(wù) 而反向代理的客戶端用戶只能通過外網(wǎng)來訪問代理服務(wù)器,并且用戶并不知道自己訪問的是一個代理服務(wù)器,好處就是反向代理將真正的處理放在內(nèi)網(wǎng)中,有效地提高了網(wǎng)絡(luò)安全性。
(2)功能性 :?正?向代理的主要用途是為在防火墻內(nèi)的局域網(wǎng)用戶提供訪問?Int?rnet途徑 而反向代理的主要用途是將防火墻后的服務(wù)器提供給?Internet?用戶訪問,還可以為多個后端服務(wù)器提供負(fù)載均衡功能、緩存功能等。
?2、反向代理服務(wù)配置
主機 | IP地址 |
反向代理服務(wù)器 | 192.168.186.100 |
web服務(wù)器1 | 192.168.186.101 |
web服務(wù)器2 | 192.168.186.102 |
(1)安裝Nginx?
#配置虛擬機ip,網(wǎng)卡等
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
#安裝C語言編譯庫和依賴包,使用gcc
[root@localhost ~]# yum install gcc gcc-c++ -y
[root@localhost ~]# yum install pcre-devel openssl-devel -y
#解壓,執(zhí)行安裝即可
[root@localhost ~]# tar zxvf nginx-1.22.0.tar.gz
[root@localhost nginx-1.22.0]# ./configure --prefix=/usr/local/nginx
[root@localhost nginx-1.22.0]# make
[root@localhost nginx-1.22.0]# make install
#啟動nginx及配置nginx開機啟動
[root@localhost nginx-1.22.0]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx
#編寫一個腳本稱謂系統(tǒng)服務(wù)
[root@localhost sbin]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload #重啟nginx
ExecStop=/usr/local/nginx/sbin/nginx -s stop #停止
ExecQuit=/usr/local/nginx/sbin/nginx -s quit #優(yōu)雅停止nginx
PrivateTmp=true
[Install]
WantedBy=multi-user.target
#重新加載系統(tǒng)服務(wù)
[root@localhost sbin]# systemctl daemon-reload
#啟動服務(wù)
[root@localhost sbin]# systemctl status nginx
?(2)配置反向代理
[root@localhost sbin]# vim /etc/nginx/conf.d/vhost.conf
#配置域名為www.wangp.com的虛擬主機
server {
listen 80;
server_name www.wangp.com;
#域名www.wangp.com的請求全部轉(zhuǎn)發(fā)到Web服務(wù)器192.168.186.101
location / {
proxy_pass http://192.168.186.101;
}
}
#配置域名為www.openlab.com的虛擬主機
server {
listen 80;
server_name www.openlab.com;
#域名www.openlab.com的請求全部轉(zhuǎn)發(fā)到Web服務(wù)器192.168.186.102
location / {
proxy_pass http://192.168.186.102;
}
}
(3)配置hosts文件
編輯?C:?\?Window?s\Sys?t?em32\drivers?\etc 目錄下的?hosts?文件,實現(xiàn)網(wǎng)站的域名訪問
?
?(4)在web1服務(wù)器和web2服務(wù)器編寫index.html
[root@web1 ~]# mkdir /www/
[root@web1 ~]# echo "Welcome to web1 server:192.168.186.101" > /www/index.html
[root@web1 ~]# cd /www/
[root@web1 www]# ls
index.html
[root@web1 www]# cat index.html
Welcome to web1 server:192.168.186.101
[root@web2 ~]# mkdir /www/
[root@web2 ~]# echo "Welcome to web2 server:192.168.186.102" > /www/index.html
[root@web2 ~]# cd /www/
[root@web2 www]# ls
index.html
[root@web2 www]# cat index.html
Welcome to web2 server:192.168.186.102
3、負(fù)載均衡
? ? ? ?負(fù)載均衡( load?balance?)就是將負(fù)載分?jǐn)偟蕉鄠€操作單元上執(zhí)行,從而提高服務(wù)的可用性和響應(yīng)速度,帶給用戶更好的體驗。
? ? ? ?圖6-5演示了負(fù)載均衡服務(wù)器地工作方式,其中客戶端用戶A和B同時請求了域名為test. ng.?test?的網(wǎng)站,負(fù)載均衡服務(wù)器?(192.?168. 78.?)會根據(jù)具體配置進行不同的分配。
????????這里假設(shè)用戶 的請求被分配到?Web?服務(wù)器?1(192.?168. 78.?128?)中處理,用戶?的請求被 分配到另一個閑置的 Web?服務(wù)器?2(192.?168. 78.?200?)中處理?通過負(fù)載均衡,可以將一臺 服務(wù)器的工作擴展到多臺服務(wù)器中執(zhí)行,提高整個網(wǎng)站的負(fù)載能力文章來源:http://www.zghlxwxcb.cn/news/detail-646382.html
4、負(fù)載均衡地配置
(1)準(zhǔn)備服務(wù)器
主機 | IP地址 |
負(fù)載均衡服務(wù)器 | 192.168.186.100 |
web服務(wù)器1 | 192.168.186.101 |
web服務(wù)器2 | 192.168.186.102 |
(2)配置一般輪詢負(fù)載均衡
#配置域名為www.openlab1.com的虛擬主機
[root@localhost ~]# vim /etc/nginx/conf.d/nginx.conf
server{
listen 80;
server_name www.openlab1.com;
location /{
proxy_pass http://web_server;
}
}
#配置負(fù)載均衡服務(wù)器組
upstream web_server{
server 192.168.186.101;
server 192.168.186.102;
}
(3)在web1服務(wù)器和web2服務(wù)器編寫index.html
[root@web1 ~]# echo "Welcome to web1 server:192.168.186.101" > /root/index.html
[root@web1 ~]# echo "Welcome to web2 server:192.168.186.102" > /root/index.html
(4)配置hosts文件
文章來源地址http://www.zghlxwxcb.cn/news/detail-646382.html
?(5)測試
到了這里,關(guān)于WEB集群——LVS-DR 群集、nginx負(fù)載均衡的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!