天天看點

怎麼搭建短視訊系統?全套負載均衡方案

短視訊系統跟直播系統有一樣的特點,面向的使用者群體數量較大,聚集時間點集中。比如午飯時間,晚上休閑時間。是以做好系統的負載特别重要,既能提高系統的穩定性和可用性,從側面來講也能提高使用者的體驗和使用者留存。

怎麼搭建短視訊系統?全套負載均衡方案

負載均衡的表述性解釋咱不再說明,自行谷歌或百度即可。這裡主要介紹兩種負載均衡的方案。
方案一:使用營運商成熟的方案,比如阿裡雲的負載均衡SLB,騰訊雲的負載均衡CLB。這些成熟的方案穩定性高,運維成本低。隻需要日常維護後端服務即可,不過除非你是一定量級的大客戶,否則無法個性定制。
方案二:自建負載均衡,該方案需要有基礎的運維能力。需要運維人員持續跟蹤,可以自由擴充定制。前期數量級小的話,建議走這種方案。後期數量級大的話,還是走方案一比較穩妥一些。
這裡介紹下方案二自建負載均衡的方式。按照最小方案來舉例說明,均用1核1G5M帶寬的伺服器。注意:後期上線需要根據自身業務的情況進行配置擴充,這裡是做示範舉例用最低配置即可。
一、首先需要準備相關資料,如下:           

1.系統域名

2.Nginx負載伺服器 1台(用于前台分發)。

3.Web 後端伺服器 2台(配置PHP環境,放置管理背景和接口)

4.Mysql 資料庫伺服器 1台(配置資料庫)

5.Redis 緩存伺服器 1台(配置緩存)

6.Session 共享伺服器 1台(共享資料Session)

7.以上伺服器必須存在一個内網中,響應速度等體驗會好一些。

二、其次将各個伺服器按照原始系統的搭建方式進行依次搭建。這裡重點說明下Nginx負載伺服器和Session緩存伺服器的搭建和配置方式。

1.Nginx負載伺服器的搭建,假設入口域名是yunbaozhibo.com

1.1安裝pcre(依次操作)

擷取pcre編譯安裝包,在在pcre.org/上可以擷取目前最新的版本。

   解壓縮pcre-xx.tar.gz包

  進入解壓縮目錄,執行./configure

執行安裝make & make install

1.2 安裝openssl(依次操作)

 擷取openssl編譯安裝包,在openssl.org/source/上可以擷取目前最新的版本。

解壓縮openssl-xx.tar.gz包

  進入解壓縮目錄,執行./config

  執行安裝make & make install

1.3安裝zlib(依次操作)

擷取zlib編譯安裝包, zlib.net/上可以擷取目前最新的版本

解壓縮zlibxxx.zip包。注:這裡的tar包應該是有問題,沒法指令解壓,隻能換zip包

進入解壓縮目錄,執行./configure

1.4安裝Nginx

擷取nginx,在nginx.org/en/download.html上可以擷取目前最新的版本

  解壓縮nginx-xx.tar.gz包

進入解壓縮目錄,執行./configure  這裡會自動關聯上邊的三個元件

1.5配置相關資訊

安裝完成後,nginx在/usr/local/nginx中, nginx.conf在該檔案下的conf中 nginx啟動在sbin中。

配置nginx.conf檔案

在http{}中的server{}前添加

upstream    yunbaozhibo.com{

            ip_hash;   #第一次配置負載用ip_hash來處理session,後期修改為session複制

            server  192.168.7.11:80; #這裡是web伺服器的内網ip

            server   192.168.7.22:80; #這裡是web伺服器的内網ip

            #這裡最好加一個簡單的後備server,web全挂後跳轉到他,友情提示下伺服器正在維護。

}

在http{}中的server{}中的location /{}添加

proxy_pass yunbaozhibo.com;

proxy_set_header Host $host;

proxy_set_header  X-Real-IP  $remote_addr;

proxy_set_header  X_Forwarded-For $proxy_add_x_forwarded_for;

配置完後,啟動nginx              /usr/local/nginx/sbin/nginx

2.Session伺服器的配置,假設Session的伺服器ip為192.168.7.2。Redis端口為1122

這裡的Session伺服器是使用Redis來緩存共享Session的。

2.1正常安裝并啟動Redis服務

2.2 找到web伺服器中的php.ini檔案,修改如下

找到;session.save_handler = files

改為session.save_habdler = redis

找到;session.save_path = “/tmp”

改為session.save_path = “tcp://192.168.7.2:1122”