日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nginx离线安装_web高可用-基于keepalived和nginx

發布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx离线安装_web高可用-基于keepalived和nginx 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.體系架構

在Keepalived + Nginx高可用負載均衡架構中,keepalived負責實現High-availability (HA) 功能控制前端機VIP(虛擬網絡地址),當有設備發生故障時,熱備服務器可以瞬間將VIP自動切換過來,實際運行中體驗只有2秒鐘切換時間,DNS服務可以負責前端VIP的負載均衡。

nginx負責控制后端web服務器的負載均衡,將客戶端的請求按照一定的算法轉發給后端Real Server處理,而Real Server將響應直接返回給客戶端。

應用架構拓撲圖

二. 優點

1.實現了可彈性化的架構,在壓力增大的時候可以臨時添加web服務器添加到這個架構里面去;

2.upstream具有負載均衡能力,可以自動判斷后端的機器,并且自動踢出不能正常提供服務的機器;

3.相對于lvs而言,正則分發和重定向更為靈活。而Keepalvied可保證單個nginx負載均衡器的有效性,避免單點故障;

4.用nginx做負載均衡,無需對后端的機器做任何改動。

5.nginx部署在docker容器里,即大量地節約開發、測試、部署的時間,又可以在出現故障時通過鏡像快速恢復業務。

三. 系統環境

兩臺負載機器安裝:centos7.2+docker+nginx+keepalived,分別命名為:NGINX_MASTER,NGINX_BACKUP。

后端web服務器,可以是提供web服務的任何架構,分別命名為:WEB_1,WEB_2。

后端數據庫機器可任意架構,只要能提供數據庫服務即可。

服務器 操作系統 IP地址 安裝軟件

NGINX_MASTER Centos 7.2 64位 10.141.1.32 docker+nginx+keepalived

NGINX_BACKUP Centos 7.2 64位 10.141.9.2 docker+nginx+keepalived

WEB_1 Centos 7.2 64位 10.141.3.73 docker+web

WEB_2 Centos 7.2 64位 10.141.26.218 docker+web

虛擬IP 10.141.1.33

四. 搭建環境

1. 主機準備

全部主機執行命令

setenforce 0 #關閉selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

systemctl stop firewalld #關閉防火墻

systemctl stop iptables #關閉iptables

2. docker安裝(全部主機執行命令)

a. 在線安裝

參考: (https://docs.docker.com/install/linux/docker-ce/centos/#uninstall-old-versions)

yum install docker

b. 離線二進制安裝:

參考:(https://www.jianshu.com/p/46b9a351f749)

3. 準備web服務器

a. 啟動服務

web1和web2執行,這里使用python啟動一個simplehttpserver

touch 123.txt #在web1執行touch 456.txt #在web2執行python -m SimpleHTTPserver #web1,web2都執行

b. 檢查

curl 10.141.3.73:8000 #返回123.txt

curl 10.141.26.218:8000 #返回456.txt

4. 安裝nginx進行負載均衡,在master和backup執行

a. 拉鏡像

docker pull nginx

b. vim nginx.conf ,增加 upstream和server

user nginx;worker_processes 1;error_log /var/log/nginx/error.log warn;pid /var/run/nginx.pid;events { worker_connections 1024;}http { include /etc/nginx/mime.types; default_type application/octet-stream; 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; upstream linuxidc { server 10.141.3.73:8000; server 10.141.26.218:8000; } server { listen 80; server_name localhost; location / { root html; index index.html index.htm; proxy_pass http://linuxidc; } } sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf;}

c. 啟動nginx

docker run -it -d -p 80:80 -v /${PWD}/nginx.conf:/etc/nginx/nginx.conf nginx

d. 驗證

curl localhost #返回123.txt 或者返回456.txt

5. 搭建keepalived進行熱備(在master和backup執行)

a. 安裝keepalived

yum install -y keepalivedsystemctl start keepalivedsystemctl enable keepalived

b. 修改配置文件/etc/keepalived/keepalived.conf

這里使用的是單播模式,解決腦裂問題,云主機(比如阿里云,騰訊云。亞信云等)需要單獨申請VIP并綁定主機,否則不能訪問VIP

! Configuration File for keepalived

global_defs {

notification_email {

acassen@firewall.loc

failover@firewall.loc

sysadmin@firewall.loc

}

notification_email_from Alexandre.Cassen@firewall.loc

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id LVS_DEVEL

vrrp_skip_check_adv_addr

#vrrp_strict #單播模式要注釋掉

vrrp_garp_interval 0

vrrp_gna_interval 0

}

vrrp_script chk_port { #檢測服務是否在運行。有很多方式,比如進程,用腳本檢測等等

script "/root/chk_server.sh" #這里通過腳本監測

interval 2 #腳本執行間隔,每2s檢測一次

weight -10 #腳本結果導致的優先級變更,檢測失敗(腳本返回非0)則優先級 -10

fall 2 #檢測連續2次失敗才算確定是真失敗。會用weight減少優先級(1-255之間)

rise 1 #檢測1次成功就算成功。但不修改優先級

}

vrrp_instance VI_1 {

state MASTER #backup主機填寫BACKUP

unicast_src_ip 10.141.1.32 #寫本機地址

unicast_peer {

10.141.9.2 #填寫另外一臺keepalived主機地址

}

interface eth0 #網卡

virtual_router_id 58 #默認51,可以換一個地址,避免沖突,主備id要一樣

priority 100 #權重,backup修改為95,檢查失敗后優先級變90,低于95會將vip轉移到slave

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

10.141.1.33 #虛擬ip

}

track_script {

chk_port

}

}

chk_server.sh腳本

counter=$(netstat -na|grep "LISTEN"|grep "80"|wc -l)

if [ "${counter}" -eq 0 ]; then

exit 0

fi

c. 驗證

systemctl restart keepalived

ip a查看master中綁定VIP,backup沒有綁定

master上執行systemctl stop keepalived,可以發現VIP漂流到backup上

curl 10.141.1.33 #返回結果為123.txt或者456.txt

總結

以上是生活随笔為你收集整理的nginx离线安装_web高可用-基于keepalived和nginx的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。