Nginx代理MogileFS并實現負載均衡和高可用

Nginx代理MogileFS并實現負載均衡和高可用

MogileFS nginx 負載均衡

前言

上篇文章我們了解分布式系統和MogileFS的基本使用, 但是那樣的架構是有問題的, 本篇文章我們來了解一下如何使用nginx-mogilefs-module-master模塊來構建一個不一樣的 MogileFS Cluster

實驗拓撲

blob.png

實驗環境

主機 IP 功用
node6 172.16.1.7 Nginx,Tracker, Storage,DataBase
node7 172.16.1.8 Tracker, Storage
node8 172.16.1.9 Tracker, Storage

實驗步驟

配置MogileFS

安裝過程這里就不敘述了, 有疑問看我上一篇文章分布式系統介紹及MogileFS安裝、基本配置


配置數據庫:

[root@node6~] service mysqld start

mysql> GRANT ALL ON *.* TO root@'%' IDENTIFIED BY 'passwd' ;  #配置一個可以遠程連接的root用戶
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL ON mogilefs.* TO  mogileuser@'%' IDENTIFIED BY 'passwd';  #配置一個可管理mogilefs數據庫的用戶
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE DATABASE mogilefs;   #創建mogilefs數據庫
Query OK, 1 row affected (0.00 sec)

配置mogilefsd

[root@node6~] vim /etc/mogilefs/mogilefsd.conf   #node7, node8也要做操
db_dsn = DBI:mysql:mogilefs:host=172.16.1.7
db_user = mogileuser
db_pass = passwd
listen = 0.0.0.0:7001
conf_port = 7001

[root@node6~] service mogilefsd start
Starting mogilefsd                                         [  OK  ]



[root@node6~] mogadm host add node1 --ip=172.16.1.7 alive   #只用在node6操作
[root@node6~] mogadm host add node2 --ip=172.16.1.8 alive   #只用在node6操作
[root@node6~] mogadm host add node3 --ip=172.16.1.9 alive   #只用在node6操作
[root@node6~] mogadm host list
node1 [1]: alive
   IP:       172.16.1.7:7500

node2 [2]: alive
   IP:       172.16.1.8:7500

node3 [3]: alive
    IP:       172.16.1.9:7500

[root@node6~] scp /etc/mogilefs/mogilefsd.conf 172.16.1.8:/etc/mogilefs/    #復制配置文件給node7
[root@node6~] scp /etc/mogilefs/mogilefsd.conf 172.16.1.9:/etc/mogilefs/    #復制配置文件給node8

[root@node7~] service mogilefsd start  #node7啟動mogfilefsd
Starting mogilefsd                                         [  OK  ]

[root@node7~] service mogilefsd start  #node7啟動mogfilefsd
Starting mogilefsd                                         [  OK  ]

配置mogstored

[root@node6~] mkdir /data/mogilefs/dev1 -pv
   mkdir: created directory `/data'
   mkdir: created directory `/data/mogilefs'
   mkdir: created directory `/data/mogilefs/dev1'
[root@node6~] vim /etc/mogilefs/mogstored.conf
   maxconns = 10000
   httplisten = 0.0.0.0:7500
   mgmtlisten = 0.0.0.0:7501
   docroot = /data/mogilefs/

[root@node6 ~]# chown mogilefs.mogilefs /data/mogilefs/ -R
[root@node6~] service mogstored start
Starting mogstored                                         [  OK  ]


##node7, node8都要做上述操作

[root@node6 ~]# mogadm device add node1 1
[root@node6 ~]# mogadm device add node2 2
[root@node6 ~]# mogadm device add node3 3

#查看設備信息
[root@node6~] mogadm device list
node1 [1]: alive
                   used(G)    free(G)   total(G)  weight(%)
  dev1:   alive      2.069     72.365     74.435        100

node2 [2]: alive
                   used(G)    free(G)   total(G)  weight(%)
  dev2:   alive      1.958     72.477     74.435        100

node3 [3]: alive
                   used(G)    free(G)   total(G)  weight(%)
  dev3:   alive      1.954     72.480     74.435        100

創建域

[root@node6 ~]# mogadm domain add files
[root@node6 ~]# mogadm domain add images

[root@node6~] mogadm domain list
domain               class                mindevcount   replpolicy   hashtype
-------------------- -------------------- ------------- ------------ -------
files                default                   2        MultipleHosts() NONE  
images               default                   2        MultipleHosts() NONE  

上傳文件并測試

[root@node6~] mogupload --trackers=172.16.1.7 --domain=images --key='pal5q.jpg' --file=1.jpg 
[root@node6~] mogfileinfo --trackers=172.16.1.7 --domain=images --key='pal5q.jpg'
- file: pal5q.jpg
    class:              default
 devcount:                    2
   domain:               images
      fid:                    5
      key:            pal5q.jpg
   length:               103139
- http://172.16.1.8:7500/dev2/0/000/000/0000000005.fid
- http://172.16.1.7:7500/dev1/0/000/000/0000000005.fid

blob.png

配置Nginx

編譯安裝Nginx

#Nginx和模塊自行下載
[root@node6 ~] yum groupinstall "Development Tools" "Server Platform Developments"  #安裝開發包組
[root@node6/usr/local/nginx-1.9.15] yum install pcre-devel openssl-devel -y #安裝需要的軟件包
[root@node6~] tar xf nginx-1.9.15.tar.gz -C /usr/local/
[root@node6~] tar xf nginx_mogilefs_module-1.0.4.tar.gz -C /usr/local/
[root@node6~] cd /usr/local/nginx-1.9.15/

[root@node6/usr/local/nginx-1.9.15] ./configure \
>   --prefix=/usr \
>   --sbin-path=/usr/sbin/nginx \
>   --conf-path=/etc/nginx/nginx.conf \
>   --error-log-path=/var/log/nginx/error.log \
>   --http-log-path=/var/log/nginx/access.log \
>   --pid-path=/var/run/nginx/nginx.pid  \
>   --lock-path=/var/lock/nginx.lock \
>   --user=nginx \
>   --group=nginx \
>   --with-http_ssl_module \
>   --with-http_flv_module \
>   --with-http_stub_status_module \
>   --with-http_gzip_static_module \
>   --with-pcre \
>   --with-debug \
>   --add-module=/usr/local/nginx_mogilefs_module-1.0.4/

[root@node6/usr/local/nginx-1.9.15] make && make install

配置Nginx

[root@node6~] vim /etc/nginx/nginx.conf

user  nobody;
worker_processes  1;
events {
   worker_connections  1024;
}

http {
   include       mime.types;
   default_type  application/octet-stream;

   sendfile        on;

   keepalive_timeout  65;
   upstream trackers {
   server 172.16.1.7:7001;
   server 172.16.1.8:7001;
   server 172.16.1.9:7001;
   }


   server {
       listen       80;
       server_name  localhost;



       location / {
           root   html;
           index  index.html index.htm;
       }

     location  /images/ {
         mogilefs_tracker trackers;
         mogilefs_domain images;
         mogilefs_methods GET;
         mogilefs_noverify on;

         mogilefs_pass {
                 proxy_pass $mogilefs_path;
                 proxy_hide_header Content-Type;
                 proxy_buffering off;
         }
     }
       error_page   500 502 503 504  /50x.html;
       location = /50x.html {
           root   html;
       }

   }


}

啟動并測試

[root@node6~] /usr/sbin/nginx   #啟動nginx

我們直接通過key值就能夠訪問到圖片, 停止后端任意主機都可以繼續訪問

blob.png

總結

通過這個實驗, 我們可以將通過MogileFS實現的分布式存儲中的文件通過鍵值進行獲取, 也就是說, 我們也可以在站點中直接引用, 如果是Tengine的話, 還能夠通過Check_status看到更為詳細的信息

作者水平很低, 如果有錯誤及時指出, 如果你覺得本文寫的好請點一波贊~(≧▽≦)/~ 
作者: AnyISaIln QQ: 1449472454 
感謝: MageEdu

原創文章,作者:Net18-AnyISalIn,如若轉載,請注明出處:http://www.www58058.com/16001

(0)
Net18-AnyISalInNet18-AnyISalIn
上一篇 2016-05-04
下一篇 2016-05-05

相關推薦

  • lvs基礎知識

    簡介  Cluster是什么?    Cluster其實就是組織多個主機構建高實現性能、高可靠、多并發、大容量的同一功能的系統。  常見的集群類型:   (1) Load Balancing: 負載均衡集群   (2) High Avaiability: 高可用集群   (3) …

    Linux干貨 2015-06-23
  • 從需求和安全角度開始linux(一)-20151211

    突然想從需求和安全的角度來展開各種命令。因為我覺得linux中所有的常用命令基本都是需求和安全的產物。 當我打開一個CLI(command line interface)界面的linux操作系統時: 一、我希望能夠看到里面有什么,因此有了ls的命令。      ls – list&nbs…

    Linux干貨 2015-12-15
  • Web服務,http協議。

    一·web   1。web是一種網站服務器,C/S架構,比較流行的Apache,Nginx,IIS。客戶能夠去服務器請求資        資源。   2.使用http協議,服務器html或者xml格式文件,客戶瀏覽器訪問資源(url)。   3.過程包括服務器套接字監聽直到和客戶套接字建立…

    Linux干貨 2015-07-04
  • grep常見應用實例

      在我們實際應用中,正則表達式的應用是非常廣泛的,今天我就大家分享幾個比較常見的正則表達式的應用實例,不周之處,還望高人多多指點!   一:使用正則表達式搜索郵箱地址 二:使用正則表達式搜索手機號 三:使用正則表達式搜索身份證號 四:使用正則表達式取網絡配置文件中的IP地址的過程解析   一:使用正則表達式搜索郵箱地址: [r…

    系統運維 2016-08-08
  • linux網絡管理

    Linux網絡配置 摘要:Linux 對網絡的管理分為 靜態指定和動態管理。 靜態指定 靜態指定ip一般有命令              ifconfig       &…

    Linux干貨 2016-04-05
  • LVM 邏輯卷管理

    一、概述: LVM: logical Volumn Manager  LVM是建立在硬盤和分區之上的一個邏輯層??梢詫⒍鄠€物理分區整合起來,無需停機,可以對文件系統的大小進行調整。同時,還提供快照功能 二、概念及實現過程: PE :每一個物理卷PV被劃分為稱為PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的…

    Linux干貨 2015-10-05
欧美性久久久久