教你快速構(gòu)建一個(gè)基于nginx的web集群項(xiàng)目
一 ·項(xiàng)目環(huán)境
centos7/8服務(wù)器8臺、nginx 1.21.1、ab、nfs4、
zabbix、keepalived 2.1.5 、ansible,bind
二· 項(xiàng)目描述
構(gòu)建一個(gè)基于nginx的4/7層負(fù)載均衡的web集群項(xiàng)目
模擬企業(yè)的業(yè)務(wù)環(huán)境達(dá)到構(gòu)建一個(gè)高并發(fā),高可用的web集群。
通過壓力測試來檢驗(yàn)整個(gè)集群的性能,找出瓶頸,不斷的去優(yōu)化。
三· 項(xiàng)目步驟
1.安裝
安裝部署ansible服務(wù),和其他的服務(wù)器之間建立免密通道,編寫playbook去安裝部署nginx和zabbix
2.配置
通過ansible上去部署nginx和zabbix,配置好nginx長連接,并發(fā)數(shù),和worker的進(jìn)程數(shù),限制速度以及zabbix的相關(guān)配置等,上傳網(wǎng)站內(nèi)容(搭建一個(gè)WordPress的博客系統(tǒng)或者flask接口網(wǎng)站等)
3.實(shí)現(xiàn)負(fù)載均衡
使用2臺服務(wù)器做雙vip的負(fù)載均衡器,使用nginx的4/7層負(fù)載均衡功能實(shí)現(xiàn),調(diào)度算法使用加權(quán)輪詢
4.搭建服務(wù)器
搭建nfs服務(wù)器,保障網(wǎng)站的數(shù)據(jù)一致性,并且設(shè)置后端的real-server/backend server開機(jī)自動掛載
5.壓力測試
在客戶機(jī)上使用ab軟件進(jìn)行壓力測試
6.監(jiān)控
在zabbix/prometheus監(jiān)控平臺上添加相關(guān)的服務(wù)器和監(jiān)控項(xiàng),監(jiān)控整個(gè)web集群的性能 --》zabbix
7.高可用
使用keepalived軟件給負(fù)載均衡器做高可用,防止單點(diǎn)故障 --》keepalived
8.域名解析
搭建一個(gè)dns服務(wù)器,給整個(gè)web集群進(jìn)行域名解析,通過dns域名解析負(fù)載均衡將2個(gè)vip綁定到一個(gè)域名給用戶訪問使用,從而將流量導(dǎo)入到不同的負(fù)載均衡器上
9.提升性能
嘗試去優(yōu)化整個(gè)web集群,提升性能:內(nèi)核參數(shù),nginx參數(shù)的優(yōu)化,考慮加緩存等措施
10.使用ansible編寫playbook
嘗試全部使用ansible編寫playbook安裝所有的軟件: nginx,zabbix,keepalived,ab,nfs等
四· 項(xiàng)目總結(jié)
1.慢慢理解了集群的概念,從1臺到多臺
2.對高性能和高可用有了一定的認(rèn)識,對系統(tǒng)的性能指標(biāo)參數(shù)有了一定的認(rèn)識,對腦裂現(xiàn)象有了一定的了解和如何避免
3.對一鍵部署和安裝有了一定的了解,非常的方便和快捷,今后嘗試更加好的自動化操作 --》ansible
4.對壓力測試下整個(gè)集群的瓶頸有了一個(gè)整體的概念
5.對系統(tǒng)的優(yōu)化有了一些認(rèn)識,感覺非常的有必要,在不增加成本的情況下提升性能
6.對監(jiān)控也有了一點(diǎn)接觸,監(jiān)控是非常基礎(chǔ)的運(yùn)維工作,可以提前看到問題,做好預(yù)警。
7.對今后學(xué)習(xí)大規(guī)模的集群打下基礎(chǔ),整體規(guī)劃的能力得到提升
8.troubleshooting的能力得到了提升
9.對很多基礎(chǔ)功能的軟件的配合有了一定的了解,例如:zabbix,keepalived,ansible,nginx,nfs,ab,bind等
10.對dns負(fù)載均衡,4/7層負(fù)載均衡有了一定了解
五·搭建WEB注意
1.web網(wǎng)站的內(nèi)容,需要你確定: 博客,接口網(wǎng)站,測試頁面等
數(shù)據(jù)的一致性問題: NFS,san,云存儲,NAS等
2.內(nèi)核參數(shù)的優(yōu)化:
[root@docker ~]# sysctl -p
net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 net.ipv4.conf.all.promote_secondaries = 1 net.ipv4.conf.default.promote_secondaries = 1 net.ipv6.neigh.default.gc_thresh3 = 4096 net.ipv4.neigh.default.gc_thresh3 = 4096 kernel.softlockup_panic = 1 net.ipv6.conf.all.disable_ipv6 = 0 net.ipv6.conf.default.disable_ipv6 = 0 net.ipv6.conf.lo.disable_ipv6 = 0 kernel.shmmax = 68719476736 kernel.printk = 5 kernel.sysrq = 1 kernel.numa_balancing = 0 [root@docker ~]# ulimit unlimited [root@docker ~]# ulimit -a core file size (blocks, -c) unlimited data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 14826 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 100001 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 14826 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited [root@docker ~]# ab -c 2000 -n 100000 http://192.168.0.92/
到此這篇關(guān)于構(gòu)建一個(gè)基于nginx的web集群項(xiàng)目的文章就介紹到這了,更多相關(guān)nginx web集群項(xiàng)目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx偽靜態(tài)配置和常用Rewrite偽靜態(tài)規(guī)則集錦
偽靜態(tài)是一種可以把文件后綴改成任何可能的一種方法,如果我想把php文件偽靜態(tài)成html文件,這種相當(dāng)簡單的,下面我來介紹nginx 偽靜態(tài)配置方法有需要了解的朋友可參考。2014-06-06Nginx+RTMP+nginx-http-flv-module環(huán)境搭建
本文主要介紹了Nginx+RTMP+nginx-http-flv-module環(huán)境搭建,搭建方式可用于直播、視頻會議等場景,同時(shí)支持HTTP-FLV,方便在瀏覽器中進(jìn)行播放2024-03-03nginx實(shí)現(xiàn)單主機(jī)多域名映射的項(xiàng)目實(shí)踐
本文主要介紹了nginx實(shí)現(xiàn)單主機(jī)多域名映射的項(xiàng)目實(shí)踐,配置不同的子域名映射到不同的內(nèi)部服務(wù)端口,具有一定的參考價(jià)值,感興趣的可以了解一下2025-02-02ubuntu16.04下徹底卸載nginx的相關(guān)命令
nginx是一款自由的、開源的、高性能的HTTP服務(wù)器和反向代理服務(wù)器;這篇文章主要介紹了ubuntu16.04下徹底卸載nginx的相關(guān)命令,需要的朋友可以參考下2018-12-12Nginx實(shí)現(xiàn)灰度發(fā)布的常見方法小結(jié)
Nginx 就像是一個(gè)智能的交通指揮員,它位于用戶請求和后端服務(wù)之間,負(fù)責(zé)對請求進(jìn)行分發(fā)和管理,在灰度發(fā)布中,Nginx 可以根據(jù)我們設(shè)定的規(guī)則,這篇文章給大家介紹了Nginx實(shí)現(xiàn)灰度發(fā)布的常見方法小結(jié),需要的朋友可以參考下2024-07-07fastdfs+nginx集群搭建的實(shí)現(xiàn)
這篇文章主要介紹了fastdfs+nginx集群搭建的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10Nginx+Keepalived實(shí)現(xiàn)雙機(jī)熱備
這篇文章主要介紹了Nginx+Keepalived實(shí)現(xiàn)雙機(jī)熱備,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06nginx配置訪問圖片路徑以及html靜態(tài)頁面的調(diào)取方法
這篇文章主要介紹了詳解nginx配置訪問圖片路徑以及html靜態(tài)頁面的調(diào)取方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。2016-12-12