LVS高階應用-藉助防火牆標記分類報文
有時候會有一種需求,將多個不同的應用用同一個叢集進行排程。比如http 和 https是兩個叢集服務。訪問電商網站瀏覽商品的時候使用的是http連結。但是如果要購買的時候會跳轉到https連結。但是https和http不是同一個叢集服務。如果跳轉到不是同一臺主機。會話就沒辦法保持。可能這時候商品就沒了,這時候怎麼辦?我們就可以藉助防火牆打標機來分類報文,將http和https當作同一個叢集服務,來做會話保持。
方法:
#打標記方法(在Director主機):
iptables -t mangle -A PREROUTING -d $vip -p $proto --dport $port -j MARK --set-mark NUMBER
#示例:將目的ip是192.168.253.192,目的埠是80和443的資料包都打上80443的標記
iptables -t mangle -A PREROUTING -d 192.168.253.192 -p tcp -m multiport --dport 80,443 -j MARK --set-mark 80443
#基於標記定義叢集服務:
ipvsadm -A -f NUMBER [options]
#示例:新增一個叢集服務,基於防火牆標記進行劃分,排程方法為輪詢
ipvsadm -A -f 80443 -s rr
實驗環境:
RS
RS | RIP | VIP | 系統版本 | 軟體 | 提供的服務 |
---|---|---|---|---|---|
RS1 | 192.168.253.129 | 192.168.253.192 | CentOS6 | Nginx | http,https |
RS2 | 192.168.253.140 | 192.168.253.192 | CentOS7 | Nginx | http,https |
DR
DR | DIP | VIP | 系統版本 | 軟體 | 提供的服務 |
---|---|---|---|---|---|
DR | 192.168.253.128 | 192.168.253.192 | CentOS7 | ipvsadm,iptables | 四層負載均衡 |
LVS使用的模式:DR
第一步:RS1端安裝Nginx
#新增阿里景象站的epel源,不同的系統方式不一樣,RS1是CentOS6系統
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
#yum安裝Nginx
yum install nginx -y
mkdir /etc/nginx/ssl
第二步:RS2端安裝Nginx
#新增阿里景象站的epel源,不同的系統方式不一樣,RS2是CentOS7系統
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#yum安裝Nginx
yum install nginx -y
mkdir /etc/nginx/ssl
第三步:在DR伺服器上自建CA,並簽發證照
#自建CA
(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655
mkdir -pv /etc/pki/CA/{certs,crl,newcerts}
touch /etc/pki/CA/{serial,index.txt}
echo 01 > /etc/pki/CA/serial
#簽發證照,域名為www.ice.com
mkdir -pv ~/nginx
(umask 077; openssl genrsa -out ~/nginx/ssl.key 2048)
openssl req -new -key ~/nginx/ssl.key -out ~/nginx/ssl.csr -days 365
openssl ca -in ~/nginx/ssl.csr -out ~/nginx/ssl.crt
第四步:將DR簽發的證照,分發到RS1和RS2的/etc/nginx/ssl目錄中
scp ~/nginx/ssl.key root@192.168.253.140 /etc/nginx/ssl/ssl.key
scp ~/nginx/ssl.key root@192.168.253.129:/etc/nginx/ssl/ssl.key
scp ~/nginx/ssl.crt root@192.168.253.140:/etc/nginx/ssl/ssl.crt
scp ~/nginx/ssl.crt root@192.168.253.129:/etc/nginx/ssl/ssl.crt
第五步:修改RS1和RS2的nginx配置檔案,配置http和https連線
RS1端配置
mkdir -pv /var/www/html/{http,https}
echo "192.168.253.129:80">/var/www/html/http/index.html
echo "192.168.253.129:443">/var/www/html/https/index.html
nginx配置檔案
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
root /var/www/html/http;
location / {
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 443 ssl;
server_name www.ice.com;
ssl_certificate /etc/nginx/ssl/ssl.crt;
ssl_certificate_key /etc/nginx/ssl/ssl.key;
ssl_session_cache shared:SSL:1m;
}
}
RS2端配置
mkdir -pv /var/www/html/{http,https}
echo "192.168.253.140:80">/var/www/html/http/index.html
echo "192.168.253.140:443">/var/www/html/https/index.html
nginx配置檔案
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /var/www/html/http;
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
listen 443 ssl http2 default_server;
root /var/www/html/https;
ssl_certificate "/etc/nginx/ssl/ssl.crt";
ssl_certificate_key "/etc/nginx/ssl/ssl.key";
ssl_session_cache shared:SSL:1m;
}
}
第六步:在RS1和RS2上修改核心引數,設定VIP
ifconfig lo:0 192.168.253.192/32 up
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
第七步:DR:配置VIP,藉助防火牆做標記,將http和https當作同一個叢集
ifconfig ens33:0 192.168.253.192 up
iptables -F
iptables -t mangle -A PREROUTING -d 192.168.253.192 -p tcp -m multiport --dport 80,443 -j MARK --set-mark 80443
ipvsadm -A -f 80443 -s rr
ipvsadm -a -f 80443 -r 192.168.253.129 -g
ipvsadm -a -f 80443 -r 192.168.253.140 -g
第八步:測試
我們在這幾臺伺服器之外重新開了一臺伺服器,假裝使用者,ip為192.168.253.158,需要將自建的CA檔案傳送過去
##DR端操作
scp /etc/pki/CA/cacert.pem root@192.168.253.158:~/
然後修改一下/etc/hosts檔案
#假裝使用者的伺服器修改/etc/hosts
#新增一條
192.168.253.192 www.ice.com
然後可以訪問測試了
這裡可以看出。將80和443當作一個叢集服務,所以進行輪詢第一次是訪問192.168.253.140的80埠。第二次則訪問192.168.253.129的443埠。這樣一直下去。
第九步:修改DR上的ipvsadm的排程演算法。
修改排程演算法為sh,進行ip繫結,讓相同主機訪問的伺服器是同一個,這樣就可以在http切換https的時候也會在同一個伺服器達到會話保持的目的。
#DR端
ipvsadm -E -f 80443 -s sh
第十步:再次測試
我們修改了排程方法之後再次測試
現在可以看到全部都繫結在了192.168.253.140這個伺服器上了。
相關文章
- 防火牆的分類防火牆
- LVS高階應用-會話保持會話
- Iptables防火牆應用防火牆
- docker高階應用之智慧新增與修改防火牆規則薦Docker防火牆
- 華為防火牆及應用防火牆
- 譯文|藉助 Pulsar Functions 遷移到無服務應用程式Function
- waf 應用防火牆部署配置防火牆
- 藉助 AOP 為 Java Web 應用記錄效能資料JavaWeb
- 阿里雲Web應用防火牆知識,瞭解阿里雲Web應用防火牆阿里Web防火牆
- 騰訊雲Web應用防火牆有什麼用?Web應用防火牆是防禦原理介紹Web防火牆
- 什麼是Web應用防火牆?Web防火牆
- 如何藉助 NoSQL 提高 JPA 應用效能SQL
- Windows2008系統的高階防火牆Windows防火牆
- 如何開啟 Mac 應用程式防火牆Mac防火牆
- 什麼是 Web 應用防火牆(WAF)?Web防火牆
- 全新 Cloudflare Web 應用程式防火牆(WAF)CloudWeb防火牆
- 淺談下一代防火牆與Web應用防火牆的區別防火牆Web
- web應用防火牆概念及功能介紹!Web防火牆
- 高 級防火牆軟體 Vallum啟用最新版防火牆
- 如何藉助 HealthKit 打造一款健身應用?
- python中文分詞jieba的高階應用Python中文分詞Jieba
- 選用單防火牆DMZ還是雙防火牆DMZ(轉)防火牆
- 工作小記之防火牆防火牆
- 【網路安全】什麼Web應用防火牆?它與雲防火牆有什麼差異?Web防火牆
- docker上面部署nginx-waf 防火牆“modsecurity”,使用CRS規則,搭建WEB應用防火牆DockerNginx防火牆Web
- 為什麼要部署Web應用防火牆(WAF)?Web防火牆
- 小教程:如何開啟 Mac 應用程式防火牆Mac防火牆
- AWK高階應用
- Redis 高階應用Redis
- 五款實用性非常高的Linux防火牆工具!Linux防火牆
- 高階玩法之類的裝飾器的應用
- WAb防火牆與傳統防火牆防火牆
- 雲伺服器需要防火牆嗎?防火牆如何啟用設定?伺服器防火牆
- 淺談資料庫防火牆技術及應用資料庫防火牆
- 10大開源的Web應用防火牆介紹Web防火牆
- 騰訊雲WEB應用防火牆(WAF)如何修改DNS解析?Web防火牆DNS
- Web 應用防火牆:怎麼新增防護物件-域名Web防火牆物件
- 打造一款可靠的WAF(Web應用防火牆)Web防火牆