ホームページ 運用・保守 Nginx Nginx を使用して Mogilefs 分散ストレージを置き換える方法

Nginx を使用して Mogilefs 分散ストレージを置き換える方法

May 12, 2023 pm 01:55 PM
nginx mogilefs

1. 分散ストレージ システムの概要

情報技術の継続的な発展により、情報技術は私たちに利便性をもたらすだけでなく、データ量や情報間のつながりも増大しています。情報技術が急速に発展し続けるにつれて、ますます複雑化する関連付け、増加するデータ アクセスの同時実行性、ますます高度になる I/O 要件、ますます複雑になるデータ型などの問題は、解決する必要がある緊急の問題となっています。分散ストレージ システムの出現により、上記の問題のほとんどは大幅に解決されました。

分散ストレージ システムは、データを複数の独立したデバイスに分散して保存します。従来のネットワーク ストレージ システムでは、集中管理されたストレージ サーバーを使用してすべてのデータを保存していましたが、ストレージ サーバーはシステム パフォーマンスのボトルネックとなり、信頼性とセキュリティの焦点となり、大規模ストレージ アプリケーションのニーズを満たすことができませんでした。分散ストレージ システムは、スケーラブルなシステム構造を採用し、複数のストレージ サーバーを使用してストレージ負荷を共有し、ロケーション サーバーを使用してストレージ情報を検索することで、システムの信頼性、可用性、アクセス効率が向上するだけでなく、拡張も容易です。 。

分散ストレージシステムは、インターフェースの種類によって一般分散ストレージと専用分散ストレージに分類できます。一般的な分散ストレージとは、ファイル システム インターフェイスがなく、API インターフェイスを介してアクセスする必要があることを意味します。専用分散ストレージは、分散ファイル システムとも呼ばれます。通常、ファイル システム インターフェイスがあり、直接マウントできます。一般的な分散ストレージには mogilefs、fastdfs などが含まれ、専用の分散ストレージ システムには moosefs などが含まれます。

2. mogilefs

mogilefs は、オープン ソースの分散ファイル ストレージ システムです。mogilefs は、大量の小さなファイルが保存される作業シナリオに適しています。 livejournal 開発傘下の danga interactive 会社のチームは、memcached、mogilefs、perlbal などを含む多くの有名なオープンソース プロジェクトを開発してきました。

1. Mogliefs アーキテクチャ図:

Nginx を使用して Mogilefs 分散ストレージを置き換える方法

##2. Mogliefs を構成するコンポーネント:

1.trackers(mogilefsd): mogliefs のコア コンポーネント。その主な機能は、(レプリケーション) ノード ファイルのレプリケーション、(削除) ファイルの削除、(クエリ) メタデータ クエリ、(モニター) ヘルス モニタリング、(リーパー) ストレージ障害のリセットです。等メタデータ サーバーと呼ばれることが多いですが、メタデータを保存するのではなく、mysql などのデータベースにメタデータを保存します。アーキテクチャの信頼性を確保するために、通常は複数のトラッカーが存在します。トラッカーは、メタデータ情報の処理のみを担当する並列エージェントとみなすことができます。

2. データベース: データベースはモグリフのメタデータを保存するために使用され、トラッカーがデータを管理します。したがって、通常はhaを行うことが推奨されます。

3.mogstored (ストレージ ノード): 実際のファイルが保存される場所。実際の文書のコピーを少なくとも 2 部保管するのが一般的です。

3. デモンストレーション トポロジ図の例

トラッカーと mogstored を 3 つのノードに同時にインストールし、いずれかのノードを選択して mysql をインストールします。運用環境では、MySQL を個別にデプロイし、マスター/スレーブ レプリケーションを実行することが最善です。 trackers と mogstored は異なるノードに個別にデプロイすることもできますが、実際の運用環境に応じて決定する必要があります。ここでの主な目的は、mogilef をデモンストレーションすることであり、mysql のマスター/スレーブ レプリケーションをデモンストレーションすることではありません。 mogilef をマウントしたい場合は、fuse を使用してそれを実現できます。

次の点に注意してください: mogilefs によって保存されるファイル URL は非常に特殊です (mogilefs のファイル名の生成プロセスについては後で説明します)。ファイル URL は 6060/ に似ている可能性があります。0000/0000/0000/00000021.jpg のような形式はユーザー フレンドリーではないため、ユーザーは image.hello.com/21.jpg のような直感的な URL を必要とする場合があります。したがって、通常、nginx は mogilef の代わりに使用されます。

Nginx を使用して Mogilefs 分散ストレージを置き換える方法

4. システム環境とインストール

mogilefs は、互換性の問題がある可能性があることを考慮すると、比較的古いですが成熟した分散ストレージです。 centos7. ここではcentos6でのデモを行います。

オペレーティング システム: centos リリース 6.6

mogilefs: 2.46

nginx: 1.10

mysql: 5.1

ip 割り当て:

n1:192.168.29.111、n2:192.168.29.112、n3:192.168.29.113、n4:192.168.29.114

構造は上の図に示されています。

1. mysql、mogilefsd、および mogstored を n1 ノードにインストールし、n1 をトラッカーおよびストレージ ノードとして構成します

Mysql は yum を使用して直接インストールされます。

~]# yum install -y mysql mysql-server
ログイン後にコピー

mogilefs のトラッカーとストレージ ノード コンポーネントをインストールします。インストール中に、perl 関連の依存関係パッケージをインストールする必要があります。依存関係パッケージは次のとおりです:

perl-danga-socket-1.61-1.el6.rf.noarch.rpm
perl-io-stringy-2.110-1.2.el6.rfx.noarch.rpmperl-net-netmask-1.9015-8.el6.noarch.rpm
perlbal-1.78-1.el6.noarch.rpmperl-perlbal-1.78-1.el6.noarch.rpm
perlbal-doc-1.78-1.el6.noarch.rpmperl-io-aio-3.71-2.el6.x86_64.rpm
ログイン後にコピー

上記の依存関係パッケージは、mogilefs の前にインストールする必要がありますインストールすることができます。コンポーネントのインストール:

yum install -y mogilefs-server-mogstored-2.46-2.el6.noarch.rpm mogilefs-server-mogilefsd-2.46-2.el6.noarch.rpm mogilefs-server-2.46-2.el6.noarch.rpm
ログイン後にコピー

mogilefs-server-mogilefsd の構成:

~]# vim /etc/mogilefs/mogilefsd.conf #mogilfs trackers的主配置文件
ログイン後にコピー
# enable daemon mode to work in background and use syslog
daemonize = 1 #是否以守护进程的方式运行。
# where to store the pid of the daemon (must be the same in the init script)
pidfile = /var/run/mogilefsd/mogilefsd.pid #pid文件路径
# database connection information
db_dsn = dbi:mysql:mogilefs:host=192.168.29.111 #数据库的地址
db_user = moguser #配置数据库的用户名及密码
db_pass = 123456
# ip:port to listen on for mogilefs client requests
listen = 0.0.0.0:7001 #监听的地址与端口
# optional, if you don't define the port above.
conf_port = 7001 #默认端口
# number of query workers to start by default.
query_jobs = 10 #查询进程数量
# number of delete workers to start by default.
delete_jobs = 1 
# number of replicate workers to start by default.
replicate_jobs = 5
# number of reaper workers to start by default.
# (you don't usually need to increase this)
reaper_jobs = 1
# number of fsck workers to start by default.
# (these can cause a lot of load when fsck'ing)
#fsck_jobs = 1
# minimum amount of space to reserve in megabytes
# default: 100
# consider setting this to be larger than the largest file you
# would normally be uploading.
#min_free_space = 200
# number of seconds to wait for a storage node to respond.
# default: 2
# keep this low, so busy storage nodes are quickly ignored.
#node_timeout = 2
# number of seconds to wait to connect to a storage node.
# default: 2
# keep this low so overloaded nodes get skipped.
#conn_timeout = 2
# allow replication to use the secondary node get port,
# if you have apache or similar configured for get's
#repl_use_get_port = 1
ログイン後にコピー

構成を変更した後、データベースに入ってリモート接続できる root ユーザーを作成するか、mogdbsetup を使用してデータベースを初期化します。

mysql> grant all on mogilefs.* to 'moguser'@'192.168.29.%' identified by '123456'; #创建用户moguser,拥有管理mogilefs库的所有权限,并允许192.168.29.*的用户远程连接。
mysql> flush privileges;
mysql> quit
ログイン後にコピー
~]# mogdbsetup --dbhost=127.0.0.1 --dbuser=moguser --dbpass=123456
ログイン後にコピー

初期化が完了すると、作成された mogilefs ライブラリとその内部のテーブルが mysql で確認できます。

Nginx を使用して Mogilefs 分散ストレージを置き換える方法

mogilefs を起動し、ポート 7001 を確認します。リスニング状態です:

~]# service mogilefsd start
starting mogilefsd      [ ok ]
~]# ss -lnt
ログイン後にコピー

注:可以在n2、n3节点都安装trackers服务,从而消除单点故障风险也能平均i/o压力。

3.在n1上配置storage node

storage node配置文件路径为/etc/mogilefs/mogstored.conf:

~]# vim /etc/mogilefs/mogstored.conf
maxconns = 10000 #最大并发连接数
httplisten = 0.0.0.0:7500 #mogilefs数据的传输是通过http协议实现的,这里是监听的地址和端口
mgmtlisten = 0.0.0.0:7501 #健康监测的监听地址和端口
docroot = /mogliefs/mogdata #数据的存储路径,目录的属组和属主必须是mogilefs
ログイン後にコピー

创建数据存储目录并修改属组和属主为mogilefs:

~]# mkdir -pv /mogliefs/mogdata
~]# chown -r mogilefs.mogilefs /mogliefs/
ログイン後にコピー

启动mogstored,查看进程是否正常启动端口是否监听:

~]# service mogstored start
~]# ss -lnt #监听端口为7500、7501
ログイン後にコピー
ログイン後にコピー

4.按照n1的步骤在节点n2、n3上安装mogilefs,并将n1上的配置文件复制到n2、n3。

~]# scp /etc/mogilefs/*.conf root@192.168.29.112:/etc/mogilefs/
~]# scp /etc/mogilefs/*.conf root@192.168.29.113:/etc/mogilefs/
ログイン後にコピー

启动mogstored服务并确认监听:

~]# service mogstored start
~]# ss -lnt #监听端口为7500、7501
ログイン後にコピー
ログイン後にコピー

5.用在n1上用mogadm命令将所有节点整合成集群。

添加存储节点,并检查:

1 ~]# mogadm host add 192.168.29.111 --ip=192.168.29.111 --port=7500 --status=alive
2 ~]# mogadm host add 192.168.29.112 --ip=192.168.29.112 --port=7500 --status=alive
3 ~]# mogadm host add 192.168.29.113 --ip=192.168.29.113 --port=7500 --status=alive
ログイン後にコピー
~]# mogadm check
ログイン後にコピー

Nginx を使用して Mogilefs 分散ストレージを置き換える方法

若想让mogilefs集群中的存储被识别成不同设备,需要在创建的/mogliefs/mogdata目录下再创建名为dev*的目录,使每个节点被当做存储设备使用。mogilefs是将冗余存储在不同设备中的,每一个节点都应该被识别为不同的设备。

在n1、n2、n3上的/mogliefs/mogdata/目录下分别创建dev1,dev2,dev3目录,并在trackers上添加设备:

1 ~]# mogadm device add 192.168.29.111 1
2 ~]# mogadm device add 192.168.29.112 2
3 ~]# mogadm device add 192.168.29.113 3
ログイン後にコピー

Nginx を使用して Mogilefs 分散ストレージを置き換える方法

6.创建domain和class

在mogilefs中,在多个节点上为了方便文件副本管理,通常在设备中不会以文件为单位进行管理,而是以class(类)做管理,复制删除等操作都是以class为最小单位进行的。每个class中可以放很多文件,class的容积也不是固定的。

在mogilefs的存储空间中,所有数据文件都在同一平面,所以不能有同名的情况发生,这样会影响mogilefs的灵活性,所以引入了domain(名称空间)的概念。domain包含class,在不同的domain中可以有相同的文件名。

Nginx を使用して Mogilefs 分散ストレージを置き換える方法

~]# mogadm domain add imgs #创建名为imgs的domain
~]# mogadm domain add text #创建名为text的domain
~]# mogadm domain list #查看domain list
ログイン後にコピー

Nginx を使用して Mogilefs 分散ストレージを置き換える方法

可以自定义class的属性,格式为:mogadm class add [opts]

~]# mogadm class add imgs png --mindevcount=3 --hashtype=md5 #在domain imgs中定义名为png的class,在不同设备中复制3份,并用md5做校验
~]# mogadm class add imgs jpg --mindevcount=3 --hashtype=md5 #在domain imgs中定义名为jpg的class,在不同设备中复制3份,并用md5做校验
~]# mogadm domain list
ログイン後にコピー

Nginx を使用して Mogilefs 分散ストレージを置き換える方法

7.使用mogilefs做上传下载测试

mogilefs可以用自建的api接口进行交互,其中有很多用于管理存储数据的命令。例如上传数据命令为mogupload,查看数据命令为mogfileinfo等。

例:测试将文件/test/123.png上传至mogilefs集群(文件事先在本地准备好):

~]# mogupload --trackers=192.168.29.111 --domain=imgs --class=png --key='/111.png' --file='/test/123.png' #通过ip为192.168.29.111的trackers将123.png文件上传,并保存至domain为imgs,class为png的空间中,并重命名为111.png
~]# mogfileinfo --trackers=192.168.29.111 --domain=imgs --class=png --key='/111.png' #查看domain为imgs,class为png中key为111.png的文件的存储情况。
ログイン後にコピー

Nginx を使用して Mogilefs 分散ストレージを置き換える方法

Nginx を使用して Mogilefs 分散ストレージを置き換える方法

至此,mogilefs分布式储存集群就搭建完成了,但若想要使客户端能与之通信,就需要在接口上进行编程,这样就很麻烦了,好在我们能用nginx做反代进行通信。下面来演示nginx反代mogilefs的步骤。

5.nginx反代mogilefs

1.打开n2,n3的mogilefsd服务,将3个节点全部设置为trackers(保证配置文件与n1相同):

~]# service mogilefsd start
ログイン後にコピー

2.在n4节点编译安装nginx

安装依赖包:

~]# yum install gcc gcc-c++ perl pcre-devel openssl openssl-devel
ログイン後にコピー

下载nginx编译安装包nginx-1.10.3.tar.gz与nginx_mogilefs模块nginx_mogilefs_module-1.0.4.tar.gz并展开:

~]# ls
nginx-1.10.3   nginx_mogilefs_module-1.0.4
nginx-1.10.3.tar.gz nginx_mogilefs_module-1.0.4.tar.gz
ログイン後にコピー
~]# cd nginx-1.10.3
./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 \
> --http-client-body-temp-path=/var/tmp/nginx/client/ \
> --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
> --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
> --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
> --http-scgi-temp-path=/var/tmp/nginx/scgi \
> --with-pcre \
> --with-debug \
> --add-module=../nginx_mogilefs_module-1.0.4/ #一定记得添加mogilefs模块所在的路径,不可少。
ログイン後にコピー
~]# make & make install
ログイン後にコピー

  添加nginx用户并启动nginx:

~]# useradd -s /sbin/nologin -m nginx
~]# /usr/sbin/nginx
ログイン後にコピー

3.配置nginx

单trackers示例:

location /imgs/ {
   mogilefs_tracker 192.168.29.111:7001; #单trackers示例
   mogilefs_domain imgs; #指定domain
   mogilefs_class png jpg; #指定class

   mogilefs_pass { #传输相关配置
    proxy_pass $mogilefs_path;
    proxy_hide_header content-type;
    proxy_buffering off;
   }
  }
ログイン後にコピー

多trackers示例:

在nginx配置中的http配置段添加调度模块:

1 upstream mogsvr {
2   server 192.168.29.111:7001;
3   server 192.168.29.112:7001;
4   server 192.168.29.113:7001;
5   }
ログイン後にコピー

在nginx配置中的server配置段添:

location /imgs/ {
    mogilefs_tracker mogsvr;
   mogilefs_domain imgs;
   mogilefs_class png jpg;

   mogilefs_pass {
    proxy_pass $mogilefs_path;
    proxy_hide_header content-type;
    proxy_buffering off;
   }
  }
ログイン後にコピー

重新启动nginx,并通过nginx访问之前上传的图片:

Nginx を使用して Mogilefs 分散ストレージを置き換える方法

以上がNginx を使用して Mogilefs 分散ストレージを置き換える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Dockerコンテナの名前を確認する方法 Dockerコンテナの名前を確認する方法 Apr 15, 2025 pm 12:21 PM

すべてのコンテナ(Docker PS)をリストする手順に従って、Dockerコンテナ名を照会できます。コンテナリストをフィルタリングします(GREPコマンドを使用)。コンテナ名(「名前」列にあります)を取得します。

nginxでクラウドサーバードメイン名を構成する方法 nginxでクラウドサーバードメイン名を構成する方法 Apr 14, 2025 pm 12:18 PM

クラウドサーバーでnginxドメイン名を構成する方法:クラウドサーバーのパブリックIPアドレスを指すレコードを作成します。 NGINX構成ファイルに仮想ホストブロックを追加し、リスニングポート、ドメイン名、およびWebサイトルートディレクトリを指定します。 nginxを再起動して変更を適用します。ドメイン名のテスト構成にアクセスします。その他のメモ:SSL証明書をインストールしてHTTPSを有効にし、ファイアウォールがポート80トラフィックを許可し、DNS解像度が有効になることを確認します。

Nginxが開始されるかどうかを確認する方法 Nginxが開始されるかどうかを確認する方法 Apr 14, 2025 pm 01:03 PM

nginxが開始されるかどうかを確認する方法:1。コマンドラインを使用します:SystemCTLステータスnginx(Linux/unix)、netstat -ano | FindStr 80(Windows); 2。ポート80が開いているかどうかを確認します。 3.システムログのnginx起動メッセージを確認します。 4. Nagios、Zabbix、Icingaなどのサードパーティツールを使用します。

Windowsでnginxを構成する方法 Windowsでnginxを構成する方法 Apr 14, 2025 pm 12:57 PM

Windowsでnginxを構成する方法は? nginxをインストールし、仮想ホスト構成を作成します。メイン構成ファイルを変更し、仮想ホスト構成を含めます。 nginxを起動またはリロードします。構成をテストし、Webサイトを表示します。 SSLを選択的に有効にし、SSL証明書を構成します。ファイアウォールを選択的に設定して、ポート80および443のトラフィックを許可します。

Nginxバージョンを確認する方法 Nginxバージョンを確認する方法 Apr 14, 2025 am 11:57 AM

nginxバージョンを照会できるメソッドは次のとおりです。nginx-vコマンドを使用します。 nginx.confファイルでバージョンディレクティブを表示します。 nginxエラーページを開き、ページタイトルを表示します。

Dockerによってコンテナを起動する方法 Dockerによってコンテナを起動する方法 Apr 15, 2025 pm 12:27 PM

Docker Containerの起動手順:コンテナ画像を引く:「Docker Pull [Mirror Name]」を実行します。コンテナの作成:「docker create [options] [mirror name] [コマンドとパラメーター]」を使用します。コンテナを起動します:「docker start [container name or id]」を実行します。コンテナのステータスを確認してください:コンテナが「Docker PS」で実行されていることを確認します。

nginxサーバーを開始する方法 nginxサーバーを開始する方法 Apr 14, 2025 pm 12:27 PM

NGINXサーバーを起動するには、異なるオペレーティングシステムに従って異なる手順が必要です。Linux/UNIXシステム:NGINXパッケージをインストールします(たとえば、APT-GetまたはYumを使用)。 SystemCtlを使用して、NGINXサービスを開始します(たとえば、Sudo SystemCtl Start NGinx)。 Windowsシステム:Windowsバイナリファイルをダウンロードしてインストールします。 nginx.exe実行可能ファイルを使用してnginxを開始します(たとえば、nginx.exe -c conf \ nginx.conf)。どのオペレーティングシステムを使用しても、サーバーIPにアクセスできます

Docker用のコンテナを作成する方法 Docker用のコンテナを作成する方法 Apr 15, 2025 pm 12:18 PM

Dockerでコンテナを作成します。1。画像を引く:Docker Pull [ミラー名]2。コンテナを作成:Docker Run [Options] [Mirror Name] [コマンド]3。コンテナを起動:Docker Start [Container Name]

See all articles