운영 및 유지보수 엔진스 Nginx를 사용하여 Mogilefs 분산 스토리지를 대체하는 방법

Nginx를 사용하여 Mogilefs 분산 스토리지를 대체하는 방법

May 12, 2023 pm 01:55 PM
nginx mogilefs

1. 분산형 스토리지 시스템 소개

정보 기술의 지속적인 발전으로 우리에게 편리함을 가져다 주는 동시에 데이터의 양은 지속적으로 증가하고 정보 간의 연결은 점점 더 복잡해지고 있습니다. 데이터의 양이 증가함에 따라 I/O에 대한 요구 사항이 점점 더 높아지고 데이터 유형이 점점 더 복잡해지고 있습니다. 이러한 문제는 정보 기술로서 시급히 해결해야 할 문제이기도 합니다. 계속해서 빠른 속도로 발전하고 있습니다. 분산형 스토리지 시스템의 출현으로 위의 문제가 대부분 해결되었습니다.

분산 스토리지 시스템은 데이터를 여러 개의 독립된 장치에 분산하여 저장합니다. 기존 네트워크 스토리지 시스템은 중앙 집중식 스토리지 서버를 사용하여 모든 데이터를 저장합니다. 스토리지 서버는 시스템 성능의 병목 현상이 되고 안정성과 보안이 중점을 두게 되므로 대규모 스토리지 애플리케이션의 요구 사항을 충족할 수 없습니다. 분산 스토리지 시스템은 확장 가능한 시스템 구조를 채택하고 여러 스토리지 서버를 사용하여 스토리지 부하를 공유하며 위치 서버를 사용하여 스토리지 정보를 찾습니다. 시스템의 신뢰성, 가용성 및 액세스 효율성을 향상시킬 뿐만 아니라 확장도 쉽습니다. .

분산 스토리지 시스템은 인터페이스 유형에 따라 일반 분산 스토리지와 전용 분산 스토리지로 나눌 수 있습니다. 일반 분산 스토리지는 파일 시스템 인터페이스가 없으며 API 인터페이스를 통해 액세스해야 함을 의미합니다. 전용 분산 스토리지는 일반적으로 분산 파일 시스템이라고도 하며 직접 마운트할 수 있습니다. 일반 분산 스토리지에는 mogilefs, fastdfs 등이 포함되며 전용 분산 스토리지 시스템에는 moosefs 등이 포함됩니다.

2. mogilefs

mogilefs는 대규모의 작은 파일이 저장되는 작업 시나리오에 적합합니다. 팀은 memcached를 포함한 제품을 개발했습니다. , mogilefs 및 perlbal 및 기타 많은 잘 알려진 오픈 소스 프로젝트.

1.mogilefs 아키텍처 다이어그램:

Nginx를 사용하여 Mogilefs 분산 스토리지를 대체하는 방법

2. mogliefs를 구성하는 구성 요소:

1.trackers(mogilefsd): mogilefs의 핵심 구성 요소, 주요 기능은 (복제) 노드 파일 복제입니다. , (삭제) ) 파일 삭제, (쿼리) 메타데이터 쿼리, (모니터) 헬스 모니터링, (리퍼) 스토리지 장애 재설정 등 흔히 메타데이터 서버라고 부르지만 메타데이터를 저장하지 않고 대신 mysql과 같은 데이터베이스에 메타데이터를 저장한다. 아키텍처의 신뢰성을 보장하기 위해 일반적으로 여러 개의 추적기가 있습니다. 추적기는 메타데이터 정보 처리만 담당하는 병렬 에이전트로 간주될 수 있습니다.

2. 데이터베이스: 데이터베이스는 모글리프의 메타데이터를 저장하는 데 사용되며, 트래커는 데이터를 관리합니다. 그러므로 일반적으로 하(ha)를 하는 것이 좋습니다.

3.mogstored(저장 노드): 실제 파일이 저장되는 곳입니다. 실제 문서의 사본을 최소 2개 이상 보관하는 것이 일반적입니다.

3. 샘플 데모 토폴로지 다이어그램

3개의 노드에 동시에 트래커와 mogstored를 설치하고, mysql을 설치할 노드 중 하나를 선택합니다. 프로덕션 환경에서는 MySQL을 별도로 배포하고 마스터-슬레이브 복제를 수행하는 것이 가장 좋습니다. tracker와 mogstored는 실제 생산 환경에 따라 결정해야 하는 서로 다른 노드에 별도로 배포할 수도 있습니다. 여기서 주요 목적은 mysql 마스터-슬레이브 복제를 보여주기 위한 것이 아니라 mogilef를 보여주기 위한 것입니다. mogilef를 마운트하려면 퓨즈를 사용하여 마운트할 수 있습니다.

주의해야 할 점: mogilefs에 저장된 파일 URL은 매우 특별합니다(mogilefs 파일 이름 생성 프로세스는 나중에 설명됩니다). 예를 들어, 사진을 저장할 때 파일 URL은 6060/과 유사할 수 있습니다. 0000/0000/0000/00000021. jpg와 같은 형식은 사용자에게 매우 친숙하지 않습니다. 사용자에게는 image.hello.com/21.jpg와 같은 직관적인 URL이 필요할 수 있습니다. 따라서 nginx는 일반적으로 mogilef를 대체하는 데 사용됩니다.

Nginx를 사용하여 Mogilefs 분산 스토리지를 대체하는 방법

4. 시스템 환경 및 설치

mogilefs는 상대적으로 오래되었지만 성숙한 분산 저장소로, centos7에서 호환성 문제가 발생할 수 있다는 점을 고려하여 다음은 centos6에 대한 데모입니다.

OS: centos 릴리스 6.6

mogilefs: 2.46

nginx: 1.10

mysql: 5.1

ip 할당:

n1:192.168.29.111, , n3:192.168.29.113, n4: 192.168.29.114

의 구조는 위 그림과 같습니다.

1. n1 노드에 mysql, mogilefsd, mogstored를 설치하고 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
로그인 후 복사

구성을 수정한 후 데이터베이스를 입력하여 원격으로 연결할 수 있는 루트 사용자를 생성하거나 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
로그인 후 복사

에서 확인할 수 있습니다. 초기화가 완료된 후 mysql 생성된 mogilefs 라이브러리와 그 안의 테이블:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Nginx에서 클라우드 서버 도메인 이름을 구성하는 방법 Nginx에서 클라우드 서버 도메인 이름을 구성하는 방법 Apr 14, 2025 pm 12:18 PM

클라우드 서버에서 nginx 도메인 이름을 구성하는 방법 : 클라우드 서버의 공개 IP 주소를 가리키는 레코드를 만듭니다. Nginx 구성 파일에 가상 호스트 블록을 추가하여 청취 포트, 도메인 이름 및 웹 사이트 루트 디렉토리를 지정합니다. Nginx를 다시 시작하여 변경 사항을 적용하십시오. 도메인 이름 테스트 구성에 액세스하십시오. 기타 참고 : HTTPS를 활성화하려면 SSL 인증서를 설치하고 방화벽에서 포트 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와 같은 타사 도구를 사용하십시오.

Docker에서 거울을 만드는 방법 Docker에서 거울을 만드는 방법 Apr 15, 2025 am 11:27 AM

Docker 이미지 생성 단계 : 빌드 지침이 포함 된 Dockerfile을 작성하십시오. Docker 빌드 명령을 사용하여 터미널에 이미지를 빌드하십시오. Docker 태그 명령을 사용하여 이미지를 태그하고 이름과 태그를 지정하십시오.

nginx 버전을 확인하는 방법 nginx 버전을 확인하는 방법 Apr 14, 2025 am 11:57 AM

nginx 버전을 쿼리 할 수있는 메소드는 다음과 같습니다. nginx -v 명령을 사용하십시오. nginx.conf 파일에서 버전 지시문을 봅니다. nginx 오류 페이지를 열고 페이지 제목을 봅니다.

nginx 서버를 시작하는 방법 nginx 서버를 시작하는 방법 Apr 14, 2025 pm 12:27 PM

Nginx 서버를 시작하려면 다른 운영 체제에 따라 다른 단계가 필요합니다. Linux/Unix System : Nginx 패키지 설치 (예 : APT-Get 또는 Yum 사용). SystemCTL을 사용하여 nginx 서비스를 시작하십시오 (예 : Sudo SystemCtl start nginx). Windows 시스템 : Windows 바이너리 파일을 다운로드하여 설치합니다. nginx.exe 실행 파일을 사용하여 nginx를 시작하십시오 (예 : nginx.exe -c conf \ nginx.conf). 어떤 운영 체제를 사용하든 서버 IP에 액세스 할 수 있습니다.

nginx가 시작되었는지 확인하는 방법은 무엇입니까? nginx가 시작되었는지 확인하는 방법은 무엇입니까? Apr 14, 2025 pm 12:48 PM

Linux에서는 다음 명령을 사용하여 nginx가 시작되었는지 확인하십시오. SystemCTL 상태 Nginx 판사 명령 출력에 따라 : "active : running"이 표시되면 Nginx가 시작됩니다. "Active : 비활성 (죽음)"이 표시되면 Nginx가 중지됩니다.

Linux에서 Nginx를 시작하는 방법 Linux에서 Nginx를 시작하는 방법 Apr 14, 2025 pm 12:51 PM

Linux에서 Nginx를 시작하는 단계 : Nginx가 설치되어 있는지 확인하십시오. systemctl start nginx를 사용하여 nginx 서비스를 시작하십시오. SystemCTL을 사용하여 NGINX를 사용하여 시스템 시작시 NGINX의 자동 시작을 활성화하십시오. SystemCTL 상태 nginx를 사용하여 시작이 성공했는지 확인하십시오. 기본 환영 페이지를 보려면 웹 브라우저의 http : // localhost를 방문하십시오.

Windows에서 nginx를 구성하는 방법 Windows에서 nginx를 구성하는 방법 Apr 14, 2025 pm 12:57 PM

Windows에서 Nginx를 구성하는 방법은 무엇입니까? nginx를 설치하고 가상 호스트 구성을 만듭니다. 기본 구성 파일을 수정하고 가상 호스트 구성을 포함하십시오. 시작 또는 새로 고침 Nginx. 구성을 테스트하고 웹 사이트를보십시오. SSL을 선택적으로 활성화하고 SSL 인증서를 구성하십시오. 포트 80 및 443 트래픽을 허용하도록 방화벽을 선택적으로 설정하십시오.

See all articles