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 dockerb. 離線二進制安裝:
參考:(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 nginxb. 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 nginxd. 驗證
curl localhost #返回123.txt 或者返回456.txt
5. 搭建keepalived進行熱備(在master和backup執行)
a. 安裝keepalived
yum install -y keepalivedsystemctl start keepalivedsystemctl enable keepalivedb. 修改配置文件/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 keepalivedip a查看master中綁定VIP,backup沒有綁定
master上執行systemctl stop keepalived,可以發現VIP漂流到backup上
curl 10.141.1.33 #返回結果為123.txt或者456.txt總結
以上是生活随笔為你收集整理的nginx离线安装_web高可用-基于keepalived和nginx的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 荣耀骁龙8+拍照旗舰曝光:看齐华为P系列
- 下一篇: 微软又双叒叕改动搜索栏:Win11新版本