Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Cara menggunakan Nginx untuk menggantikan storan yang diedarkan Mogilefs

Cara menggunakan Nginx untuk menggantikan storan yang diedarkan Mogilefs

WBOY
WBOYke hadapan
2023-05-12 13:55:17879semak imbas

1 Pengenalan kepada sistem storan teragih

Dengan perkembangan teknologi maklumat yang berterusan, ia bukan sahaja membawa kemudahan kepada kami, tetapi juga meningkatkan jumlah data dan hubungan antara maklumat . Masalah seperti perkaitan yang semakin kompleks, peningkatan akses data, keperluan I/O yang lebih tinggi dan lebih tinggi, dan jenis data yang semakin kompleks telah menjadi masalah mendesak yang perlu diselesaikan apabila teknologi maklumat terus berkembang dengan pantas. Kemunculan sistem storan teragih telah menyelesaikan kebanyakan masalah di atas secara besar-besaran.

Sistem storan teragih menyimpan data secara berselerak pada berbilang peranti bebas. Sistem storan rangkaian tradisional menggunakan pelayan storan berpusat untuk menyimpan semua data Pelayan storan menjadi kesesakan prestasi sistem dan tumpuan kebolehpercayaan dan keselamatan, dan tidak dapat memenuhi keperluan aplikasi storan berskala besar. Sistem storan teragih menggunakan struktur sistem berskala, menggunakan berbilang pelayan storan untuk berkongsi beban storan, dan menggunakan pelayan lokasi untuk mencari maklumat storan Ia bukan sahaja meningkatkan kebolehpercayaan, ketersediaan dan kecekapan akses sistem, tetapi juga mudah dikembangkan .

Sistem storan teragih boleh dibahagikan kepada storan teragih am dan storan teragih khusus dari segi jenis antara muka. Storan teragih am bermakna tiada antara muka sistem fail dan perlu diakses melalui antara muka API khusus juga dipanggil sistem fail teragih Mereka biasanya mempunyai antara muka sistem fail dan boleh dipasang secara langsung. Storan teragih am termasuk mogilef, fastdfs, dsb., dan sistem storan teragih khusus termasuk moosefs, dsb.

2. mogilefs

mogilefs ialah sistem storan fail teragih sumber terbuka sesuai untuk senario yang berfungsi di mana fail kecil besar-besaran disimpan oleh danga interaktif syarikat di bawah Livejournal Development, pasukan itu telah membangunkan banyak projek sumber terbuka yang terkenal termasuk memcached, mogilefs, perlbal, dsb.

1. rajah seni bina mogilefs:

Cara menggunakan Nginx untuk menggantikan storan yang diedarkan Mogilefs

2 1.trackers(mogilefsd): Komponen teras mogliefs, fungsi utamanya ialah (replikasi) replikasi fail nod, (pemadaman) pemadaman fail, (pertanyaan) pertanyaan metadata, (monitor) pemantauan kesihatan, (reaper) kegagalan storan set semula dll. Ia sering dipanggil pelayan metadata, tetapi ia tidak menyimpan metadata Sebaliknya, ia menyimpan metadata dalam pangkalan data seperti mysql. Untuk memastikan kebolehpercayaan seni bina, biasanya terdapat beberapa penjejak. Penjejak boleh dianggap sebagai ejen sebelah menyebelah yang hanya bertanggungjawab untuk memproses maklumat metadata.

2. Pangkalan data: Pangkalan data digunakan untuk menyimpan metadata mogliefs dan penjejak mengurus data. Oleh itu ia biasanya disyorkan untuk melakukan ha.

3.mogstored (nod storan): tempat fail sebenar disimpan. Adalah biasa untuk menyimpan sekurang-kurangnya dua salinan dokumen sebenar.

3. Contoh rajah topologi demonstrasi

Pasang penjejak dan mogstored pada tiga nod pada masa yang sama, pilih salah satu nod untuk memasang mysql. Dalam persekitaran pengeluaran, yang terbaik adalah menggunakan MySQL secara berasingan dan melakukan replikasi tuan-hamba. Penjejak dan mogstored juga boleh digunakan secara berasingan pada nod yang berbeza, yang perlu ditentukan berdasarkan persekitaran pengeluaran sebenar. Tujuan utama di sini adalah untuk menunjukkan mogilefs dan bukan untuk menunjukkan replikasi master-slave mysql. Jika anda mahu mogilefs dipasang, anda boleh menggunakan fius untuk mencapainya.

Perlu diambil perhatian bahawa:

URL fail yang disimpan oleh mogilefs adalah sangat istimewa (proses penghasilan nama fail mogilefs akan diterangkan kemudian). URL fail mungkin serupa dengan 6060/ Format seperti 0000/0000/0000/00000021.jpg tidak mesra pengguna Pengguna mungkin memerlukan URL intuitif seperti image.hello.com/21.jpg. Jadi nginx biasanya digunakan untuk menggantikan mogilefs.

Cara menggunakan Nginx untuk menggantikan storan yang diedarkan Mogilefs

4. Persekitaran dan pemasangan sistem

mogilefs ialah storan teragih yang agak lama tetapi matang, memandangkan mungkin terdapat masalah keserasian pada centos7. Berikut ialah demonstrasi mengenai centos6.

OS: centos keluaran 6.6

mogilefs: 2.46

nginx: 1.10

mysql: 5.1

peruntukan ip:

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

Struktur ditunjukkan dalam rajah di atas.

1. Pasang mysql, mogilefsd dan mogstored pada nod n1 dan konfigurasikan n1 sebagai penjejak dan nod storan

Mysql dipasang terus dengan yum.

~]# yum install -y mysql mysql-server

Pasang penjejak dan komponen nod storan mogilefs Semasa pemasangan, anda mesti memasang pakej pergantungan berkaitan 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

Pakej pergantungan di atas mesti dipasang sebelum. mogilefs boleh dipasang. Pasang komponen:

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

Konfigurasikan 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

Selepas mengubah suai konfigurasi, masukkan pangkalan data untuk mencipta pengguna root yang boleh menyambung dari jauh atau gunakan mogdbsetup untuk memulakan pangkalan data:

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

Selepas permulaan selesai, anda boleh melihat perpustakaan mogilefs yang dibuat dan jadual di dalamnya dalam mysql:

Cara menggunakan Nginx untuk menggantikan storan yang diedarkan MogilefsMulakan mogilefs dan sahkan bahawa port 7001 berada dalam keadaan mendengar:

~]# 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

Cara menggunakan Nginx untuk menggantikan storan yang diedarkan 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

Cara menggunakan Nginx untuk menggantikan storan yang diedarkan Mogilefs

6.创建domain和class

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

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

Cara menggunakan Nginx untuk menggantikan storan yang diedarkan Mogilefs

~]# mogadm domain add imgs #创建名为imgs的domain
~]# mogadm domain add text #创建名为text的domain
~]# mogadm domain list #查看domain list

Cara menggunakan Nginx untuk menggantikan storan yang diedarkan 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

Cara menggunakan Nginx untuk menggantikan storan yang diedarkan 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的文件的存储情况。

Cara menggunakan Nginx untuk menggantikan storan yang diedarkan Mogilefs

Cara menggunakan Nginx untuk menggantikan storan yang diedarkan 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访问之前上传的图片:

Cara menggunakan Nginx untuk menggantikan storan yang diedarkan Mogilefs

Atas ialah kandungan terperinci Cara menggunakan Nginx untuk menggantikan storan yang diedarkan Mogilefs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam