在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Nginx架構拆分集群詳解

馬哥Linux運維 ? 來源:CSDN技術社區 ? 2025-06-28 16:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Nginx架構拆分集群

1、拆分數據庫至獨立服務器

1.1 為何要拆分數據庫

單臺服務器運行整個LNMP架構會導致網站訪問緩慢,當系統內存被吃滿時,很容易導致系統出現oom,從而kill掉MySQL數據庫,為了避免這種情況的發生,我們可以將數據庫服務拆分到獨立的服務器上部署。拆分數據庫可以帶來以下好處:

? 1.緩解web網站的壓力;

? 2.增強數據庫讀寫性能;

? 3.提高用戶訪問的速度;

1.2 數據庫拆分架構

04027494-50e5-11f0-b715-92fbcf53809c.png

image.png

1.3 數據庫拆分環境

系統環境 主機名稱 應用環境 外網地址 內網地址
RockyLinux9 web01.newy.net nginx+php 10.0.0.7 172.16.1.7
RockyLinux9 db01.newy.net mysql 10.0.0.51 172.16.1.51

1.4 拆分數據庫實踐

要將數據庫服務遷移到一個獨立的服務器運行,可以按照如下步驟進行操作:

? 1、首先,我們需要備份當前 Web 服務器上 MySQL 的數據。然后將備份的文件拷貝到新的數據庫服務器。

? 2、在新服務器上安裝 MySQL ,并導入剛才備份的數據,確保數據庫內容是最新的。

? 3、在新的 MySQL 服務上創建一個遠程可以訪問數據庫的用戶,并賦予對應的權限。

? 4、最后將應用程序數據庫的連接地址,指向新的數據庫服務器地址。

1、備份web服務器上的數據庫,然后將備份的文件拷貝到新的數據庫服務器上;

[root@web01 ~]# mysqldump -uroot -p'newy.net'-B wordpress zh > app-database.sql
[root@web01 ~]# scp app-database.sql root@172.16.1.51:/tmp

2、在新的數據庫服務器上安裝MySQL,然后導入數據

[root@db01 ~]# yum install mysql-server -y
[root@db01 ~]# systemctlenablemysqld --now

[root@db01 ~]# mysql -uroot < /tmp/app-database.sql

3、在新的MySQL服務上創建一個能通過遠程訪問的用戶

CREATE USER'app'@'%'IDENTIFIED BY'newy.net';
grant all privileges ON *.* TO'app'@'%';
flush privileges;

4、修改代碼指向新的數據庫

# wordpress

[root@web01 ~]# vim /code/wordpress/wp-config.php
define('DB_NAME','wordpress');
define('DB_USER','app');
define('DB_PASSWORD','newy.net');
define('DB_HOST','172.16.1.51');


# wecenter
[root@web01 zh]# grep -iR"newy.net"|grep -v cache
system/config/database.php: 'password'=>'newy.net',
[root@web01 zh]# vim /code/zh/system/config/database.php
'host'=>'172.16.1.51',
'username'=>'app',
'password'=>'newy.net',
'dbname'=>'zh',

2、擴展多臺相同的Web應用

2.1 為何要擴展多臺web節點

目前站點僅運行在一臺服務器上,那么它能夠同時處理的用戶數量是有限的。為了讓網站能夠接收更多的用戶請求,我們需要配置多臺服務器,來共同提供支撐。這樣做有幾個好處:

? 1、單臺web節點如果故障,會導致業務整體down機;

? 2、多臺web節點能保證業務的持續穩定,擴展性高;

? 3、多臺web節點能有效的提升用戶訪問網站的速度;

2.2 擴展多web節點架構

041526b6-50e5-11f0-b715-92fbcf53809c.png

image.png

2.3 擴展多web節點環境

系統環境 主機名稱 應用環境 外網地址 內網地址
RockyLinux9 web01.newy.net nginx+php 10.0.0.7 172.16.1.7
RockyLinux9 web02.newy.net nginx+php 10.0.0.8 172.16.1.8
RockyLinux9 db01.newy.net mysql 10.0.0.51 172.16.1.51

2.4 擴展多web節點實踐

基于現有的web01節點,快速擴展一臺web02的節點,數據庫統一使用db01
1、安裝LNP環境
2、將web01節點的Nginx、PHP配置文件拷貝至web02節點
3、將web01節點的代碼拷貝至web02節點
4、啟動服務,而后使用客戶端進行驗證服務;

1、安裝LNP環境(創建用戶、安裝軟件)

[root@web02 ~]# groupadd -g666 www
[root@web02 ~]# useradd -u666 -g666 www

[root@web02 ~]# scp -rp root@172.16.1.7:/etc/yum.repos.d/nginx.repo /etc/yum.repos.d/
[root@web02 ~]# yum install -y nginx php php-fpm php-cli 
php-common php-devel php-embedded php-gd php-mcrypt php-bcmath php-mbstring php-pdo php-xml 
php-mysqlnd php-opcache php-pecl-zip php-pecl-redis php-pecl-mongodb

2、使用 scp 或 rsync 將web01的nginx、php配置文件拷貝到web02

[root@web02 ~]# scp -rp root@172.16.1.7:/etc/nginx /etc/
[root@web02 ~]# scp -rp root@172.16.1.7:/etc/php-fpm.d /etc/
[root@web02 ~]# scp -rp root@172.16.1.7:/etc/php.ini /etc/

3、使用 scp 或 rsync 將web01的代碼拷貝到web02服務器上

[root@web01 ~]# tar czf code.tar.gz /code
[root@web01 ~]# scp code.tar.gz root@172.16.1.8:/tmp

[root@web02 ~]# tar xf /tmp/code.tar.gz -C /

4、啟動nginx與php-fpm并加入開機自啟

[root@web02 ~]# systemctlenablenginx php-fpm --now

3、拆分靜態資源至獨立服務器

3.1 為何要拆分靜態資源

當前后端有多臺web節點,會導致用戶上傳的圖片、視頻附件等內容僅上傳到了一臺web服務器,那么其他的web服務器則無法訪問到該圖片。為了解決這個問題,我們可以使用NFS共享存儲。這么做有幾個好處:

? 1、保證了多臺web節點靜態資源一致。

? 2、有效節省多臺web節點的存儲空間。

? 3、后期通過自動化更新代碼,只需要考慮更新代碼的變動,而無需考慮靜態資源。

3.2 拆分靜態資源架構

042cbae2-50e5-11f0-b715-92fbcf53809c.png

image.png

3.3 增加共享存儲環境

系統環境 主機名稱 應用環境 外網地址 內網地址
RockyLinux9 web01.newy.net nginx+php 10.0.0.7 172.16.1.7
RockyLinux9 web02.newy.net nginx+php 10.0.0.8 172.16.1.8
RockyLinux9 nfs.newy.net nfs 10.0.0.22 172.16.1.22
RockyLinux9 db01.newy.net mysql 10.0.0.51 172.16.1.51

3.4 增加共享存儲實踐

配置共享存儲實現思路;

? 1、首先增加一臺獨立的服務器,然后安裝好對應的NFS,并對外共享目錄;

? 2、找到應用存儲靜態資源的路徑,而后將靜態資源全部同步到NFS存儲中;

? 3、將應用站點的靜態目錄,掛載到NFS存儲對應的目錄上;

1、安裝NFS

[root@nfs ~]# yum install nfs-utils -y

[root@nfs ~]#cat/etc/exports
/data/blog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/zh 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

[root@nfs ~]#mkdir/data/{blog,zh} -p
[root@nfs ~]#chown-R www.www /data/
[root@nfs ~]# systemctl restart nfs-server

2、將靜態資源文件同步到共享存儲中

[root@web01 ~]# scp -rp /code/wordpress/wp-content/uploads/* root@172.16.1.22:/data/blog

3、各個節點掛載對應的存儲

[root@web01 ~]# mount -t nfs 172.16.1.22:/data/blog /code/wordpress/wp-content/uploads/
[root@web02 ~]# mount -t nfs 172.16.1.22:/data/blog /code/wordpress/wp-content/uploads/

4、問題思考

4.1 如何快速擴展新節點

如果我們添加了一臺C應用服務器,如何能實現快速擴展?

? 1.準備LNP環境,(手動 | Ansible)

? 2.拷貝任意A或B上的配置文件,代碼

? 3.掛載NFS存儲

4.2 多節點該如何訪問

現在有多個WEB服務器,該如何進行訪問?
1、DNS輪詢

? (1)需要所有的web節點具備公網IP地址

? (2)公網獨立IP需要費用,而且不便宜。

? (3)所有的web節點有公網IP,不安全。

? (4)DNS只有輪詢機制,沒有 健康檢查功能。

2、負載均衡

? (1)所有的web節點不需要有公網IP,能節省成本、并保證安全

? (2)能夠對后端的web節點進行健康檢查機制;

? (3)負載均衡有多種調度算法來滿足企業不同需求;

04401c2c-50e5-11f0-b715-92fbcf53809c.png

image.png

4.3 Nginx負載均衡配置

wordpress的配置

[root@proxy01 ~]#cat/etc/nginx/conf.d/proxy_blog.newy.net.conf

upstream blog {
  server 172.16.1.7:80;
  server 172.16.1.8:80;
}


server {
  listen 80;
  server_name blog.newy.net;
 
  location / {
    proxy_pass http://blog;
    proxy_set_header Host$http_host;
  proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
  }
}

zh的配置

[root@proxy01 ~]#cat/etc/nginx/conf.d/proxy_zh.newy.net.conf

upstream zh {
  server 172.16.1.7:80;
  server 172.16.1.8:80;
}


server {
  listen 80;
  server_name zh.newy.net;
 
  location / {
    proxy_pass http://zh;
    proxy_set_header Host$http_host;
  proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
  }

}

6.Nginx負載均衡會話共享

6.1 什么是會話保持

當用戶登陸一個網站服務器,網站服務器會將用戶的登陸信息存儲下來(存儲下來的內容叫Session),以保證我們能夠一直處于”登陸在線“狀態。

6.2 為什么需要會話保持

由于我們使用的是負載均衡輪詢機制,會導致用戶請求分散在不同的節點,從而造成會話無法保持。
假設用戶A,通過負載均衡登陸了網站,此時會話信息存儲在A節點,那么當它一刷新,負載均衡會將請求分發給B節點,那么B節點沒有用戶A的登陸信息,就會提示用戶A登陸,當A用戶點擊登陸時又會將請求分發給C節點,從而造成用戶A無法實現會話保持。

6.3 如何實現會話保持

? 1、粘性session:指Ngnix每次都將同一用戶的所有請求轉發至同一臺服務器上,及Nginx的 IP_hash。

? 2、session復制:每次session發生變化,就廣播給集群中的服務器,使所有的服務器上的session相同。

? 3、session持久化:將session存儲至數據庫中,像操作數據一樣操作session。

? 4、session共享:將session至內存數據庫中,使用redis,memcached實現。

? 5、Cookies植入: 使用負載均衡來實現,例如Haproxy;(在nginx中暫不實現)

6.4 會話保持場景演示

6.4.1 配置web節點

1.首先安裝并配置phpmyadmin

[root@web01 ~]# wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.zip
[root@web01 ~]# unzip phpMyAdmin-5.2.1-all-languages.zip -d /code/
[root@web01 ~]#ln-s /code/phpMyAdmin-5.2.1-all-languages/ /code/phpmyadmin

2.修改phpmyadmin連接遠程的數據庫

[root@web01 code]#cd/code/phpmyadmin
[root@web01 phpmyadmin]#cpconfig.sample.inc.php config.inc.php
[root@web01 phpmyadmin]# vim config.inc.php
/* Server parameters */
$cfg['Servers'][$i]['host'] ='172.16.1.51';

3.在多臺web上準備phpmyadmin的nginx配置文件*

[root@web01 phpmyadmin]#cat/etc/nginx/conf.d/phpmyadmin.newy.net.conf
server {
  listen 80;
  server_name admin.newy.net;
  root /code/phpmyadmin;

  location / {
    index index.php index.html;
  }

  location ~ .php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }
}


#重啟Nginx服務
[root@web01 ~]# systemctl restart nginx

6.4.2 配置負載均衡

1.編寫一份proxy負載均衡的配置文件,將請求調度到后端web節點

[root@proxy01 ~]#cat/etc/nginx/conf.d/proxy_php.com.conf
upstream php {
    server 172.16.1.7:80;
    server 172.16.1.8:80;
}
server {
    listen 80;
    server_name php.newy.net;
    location / {
        proxy_pass http://php;
        proxy_set_header Host$http_host;
    }
}

2.檢查語法并重載nginx

[root@proxy01 conf.d]# nginx -t
[root@proxy01 conf.d]# systemctl restart nginx

6.4.3 配置Redis服務

1.安裝redis內存數據庫

[root@db01 ~]# yum install redis -y

2.配置redis監聽在本地的內網網卡上

[root@db01 ~]# sed -i'/^bind/c bind 127.0.0.1 172.16.1.51'/etc/redis.conf

3.啟動redis

[root@db01 ~]# systemctl start redis
[root@db01 ~]# systemctlenableredis

6.4.4 配置php連接Redis

1.修改/etc/php.ini文件。[所有節點都需要操作]

[root@web ~]# vim /etc/php.ini
session.save_handler = redis
session.save_path ="tcp://172.16.1.41:6379"
;session.save_path ="tcp://172.16.1.41:6379?auth=123"#如果redis存在密碼,則使用該方式

2.注釋php-fpm.d/www.conf里面的兩條內容,否則session內容會一直寫入/var/lib/php/session目錄中,從而造成會話共享失敗。[所有節點都需要操作]

[root@web ~]# vim /etc/php-fpm.d/www.conf
;php_value[session.save_handler] = files
;php_value[session.save_path]  = /var/lib/php/session

3.重啟php-fpm服務。[所有節點都需要操作]

[root@web ~]# php-fpm -t
[root@web ~]# systemctl restart php-fpm

鏈接:https://blog.csdn.net/Sunfeiyanghtml/article/details/140270815

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    13

    文章

    9752

    瀏覽量

    87556
  • 數據庫
    +關注

    關注

    7

    文章

    3908

    瀏覽量

    65967
  • nginx
    +關注

    關注

    0

    文章

    169

    瀏覽量

    12540

原文標題:零宕機!Nginx集群化部署與高可用架構設計

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    nginx重啟命令linux步驟是什么?

    ./nginx -s reload 即可   方法二:查找當前nginx進程號,然后輸入命令:kill -HUP 進程號 實現重啟nginx服務   Nginx的整體
    發表于 07-10 16:40

    nginx重啟命令linux步驟是什么?

    ./nginx -s reload 即可   方法二:查找當前nginx進程號,然后輸入命令:kill -HUP 進程號 實現重啟nginx服務   Nginx的整體
    發表于 07-11 17:13

    Linux高級架構師資料分享

    )6.nginx cache加速 ITEL(全新更新)7.COLLBER(全新更新)8.GATEONE(全新更新)9.MHA集群(全新更新)10.WAF安全技術(全新更新)11.ZABBIX
    發表于 07-16 16:40

    模擬集群和數字集群之間的區別和特點

    方式、話音編碼技術、調制技術等。當然,實現數字通信后,還需要采用一些新技術來配合,如同步技術、檢錯糾錯技術以及分集技術等。這些較新的技術在各種移動通信中一般都被采用或選用。  數字通信技術是數字集群
    發表于 12-22 15:10

    詳解219 nginx

    219 nginx的詳細介紹
    發表于 04-15 11:26

    kafka架構集群搭建

    kafka入門+集群搭建
    發表于 04-29 17:06

    高性能負載均衡Tomcat集群的實現

    Nginx+Tomcat搭建高性能負載均衡集群
    發表于 08-21 14:31

    copy模式的DRDS集群

    層多活解決方案。DRDS按照之前說的業務數據拆分的維度,阿里云DRDS有兩種集群分別支持買家維度與賣家維度:unit 模式的DRDS集群:多地用戶分別在本地域讀寫本地域的數據,且本地域的數據會和中心數據做雙向同步。copy 模式
    發表于 11-16 09:23

    服務器集群系統實現方案詳解

    服務器集群系統實現方案詳解 一、集群的基本概念     有一種常見的方法可以大幅提高服務器的安全性,這就是集
    發表于 01-27 17:03 ?786次閱讀

    構建實戰:Nginx+IIS構筑Web服務器集群負載均衡

    構建實戰:Nginx+IIS構筑Web服務器集群負載均衡
    發表于 09-05 10:56 ?4次下載
    構建實戰:<b class='flag-5'>Nginx</b>+IIS構筑Web服務器<b class='flag-5'>集群</b>負載均衡

    Nginx如何和現有監控系統集成

    搭建了Nginx集群后,需要繼續深入研究的就是日常Nginx監控。
    的頭像 發表于 08-22 09:58 ?1112次閱讀

    Nginx如何監控

    搭建了Nginx集群后,需要繼續深入研究的就是日常Nginx監控。
    的頭像 發表于 08-22 10:03 ?1587次閱讀

    Nginx_LNMP架構拆分

    由于單臺服務器運行LNMP架構會導致網站訪問緩慢,當內存被吃滿時,容易導致系統出現oom,從而kill掉MySQL數據庫,所以需要將web和數據庫進行獨立部署。
    的頭像 發表于 05-22 17:44 ?883次閱讀
    <b class='flag-5'>Nginx</b>_LNMP<b class='flag-5'>架構</b><b class='flag-5'>拆分</b>

    Nginx搭建流行架構LNMP的步驟

    LNMP是一套技術的組合,L=Linux、N=Nginx、M=MySQL(MyriDB)、P=PHP(Python)
    的頭像 發表于 05-22 18:19 ?1216次閱讀
    <b class='flag-5'>Nginx</b>搭建流行<b class='flag-5'>架構</b>LNMP的步驟

    搭建Keepalived+Lvs+Nginx高可用集群負載均衡

    Server)實現高可用負載均衡 附:LVS的負載均衡算法 八、搭建Keepalived+Lvs+Nginx高可用集群負載均衡 一、Nginx安裝 1、去官網http://nginx
    的頭像 發表于 06-25 15:39 ?3618次閱讀
    搭建Keepalived+Lvs+<b class='flag-5'>Nginx</b>高可用<b class='flag-5'>集群</b>負載均衡
    主站蜘蛛池模板: 色哥网站 | 久久riav二区三区 | 天堂网www中文在线资源 | 欧美成人午夜片一一在线观看 | 抽搐一进一出gif免费男男 | 亚洲va久久久噜噜噜久久狠狠 | 久久网站免费观看 | 欧美一区二区三区综合色视频 | 男人的天堂视频在线 | jzzjlzz亚洲乱熟在线播放 | 中文字幕一区二区视频 | 不卡无毒免费毛片视频观看 | 免费看大黄 | 日本三级香港三级人妇网站 | 欧美精品四虎在线观看 | bt天堂在线www种子搜索 | 久久草在线视频国产一 | 中文字幕精品一区影音先锋 | www.乱| 欧美性色黄大片四虎影视 | 日本高清视频色wwwwww色 | 国产成人午夜精品影院游乐网 | 欧美簧片| 性欧美在线 | 日本人亚洲人成人 | 男女那啥的视频免费 | www.a级片 | 1024手机在线观看视频 | 视频一区二区中文字幕 | 免费人成在线观看网站 | www.色婷婷 | 国产午夜毛片v一区二区三区 | 国产三及 | 亚洲综合香蕉 | 福利视频免费观看 | 色片在线 | 亚洲国产高清人在线 | 日本aaaa视频| 日韩在线影院 | 国产成 人 综合 亚洲网 | 天天色天天射天天操 |