Nginx实现MogileFS的反向代理

MogileFS简介:

MogileFS是一个开源的分布式文件存储系统,MogileFS适用于存储海量小文件的工作场景,由LiveJournal旗下的Danga Interactive公司开发,该团队开发了包括 Memcached、MogileFS、Perlbal 等多个知名的开源项目。

MogileFS的组成:

1、server:主要包括mogilefsd和mogstored两个应用程序。mogilefsd实现的是tracker,它通过数据库(通常是MySQL)来保存元数据信息,包括站点domain、class、host等;mogstored是存储节点(store node),它其实是个WebDAV服务,默认监听在7500端口。

2、utils(工具集):主要由MogileFS的一些管理工具组成,如mogadm等

3、客户端API:MogileFS的客户端API很多,如Perl、PHP、Java、Python等,用这个模块可以编写客户端程序,实现文件的备份管理功能等,不过这通常是程序员所做的工作范畴。对于普通的使用者来说前两部分是我们主要关注的。

Nginx与MogileFS的结合:

由于MogileFS是使用http协议工作的,其后端的mogstored程序相当于web服务器,如果在浏览器内直接输入保存在mogstored中的文件路径,就可以直接将文件内容显示在浏览器中,而在MogileFS的存储节点只有一个的情况下,在存储文件很多且集中时,可能不足以满足存储的需要,此时,可以增加多个MogileFS存储节点,以平衡存储压力,这种场景下可以使用Nginx作为这些存储节点的反向代理将用户请求分发到各个节点上,同时也能发挥出Nginx强大的保持会话和响应连接的能力。

实验:使用Nginx作为MogileFS的反向代理:

实验过程中三台主机均安装mogilefs的server端程序,每个节点都连接到同一个数据库进行元数据的存储操作,这样访问到每个节点都可以获取到相同的文件数据。

实验用主机:node1:172.16.103.1 (安装mogilefs的server端程序,mogilefsd和mogstored)

node2:172.16.103.2 (安装mogilefsd、mogstored、nginx)

node3:172.16.103.3 (安装mogilefsd、mogstored、mysql)

实验步骤:

一、安装配置数据库:

1、安装数据库可以选择三个主机上的哪一台都可以(实验过程中选择了node3),然后为管理员账号创建mogilefs数据库进行授权,另外还需要创建用于保存mogilefs元数据的用户账号moguser:

# yum -y install mysql-server
# service mysqld start
# mysql
mysql> GRANT ALL ON mogilefs.* TO ‘moguser‘@‘172.16.%.%‘ IDENTIFIED BY ‘mogpass‘;
mysql> GRANT ALL ON *.* TO ‘root‘@‘172.16.%.%‘ IDENTIFIED BY ‘redhat‘;
mysql> GRANT ALL ON mogilefs.* TO ‘moguser‘@‘node3.cluster.com‘ IDENTIFIED BY ‘mogpass‘;
mysql> FLUSH PRIVILEGES;

注:数据库在授权账号连接的时候由于node3是使用本地连接的,所以需要为其单独授权。

二、配置node1:

1、安装mogilefs的服务器端软件及工具软件,注意需要安装依赖的包perl-IO-AIO:

# cd mogilefs/
# yum -y install *.rpm perl-IO-AIO

2、使用mogdbsetup创建数据库:

# mogdbsetup --dbhost=172.16.103.3 --dbname=mogilefs --dbuser=moguser --dbpass=mogpass --dbrootuser=root --dbrootpass=redhat

3、编辑配置文件,使该节点的mogilefsd进程与数据库通信,图中红框部分内容是需要根据实际需要与调整的参数:

# vim /etc/mogilefs/mogilefsd.conf

4、启动服务,并查看监听的端口是否启动

# service mogilefsd start
# netstat -tnlp

5、创建该存储节点的数据目录,该目录的属主数组要修改为mogilefs用户和mogilefs组

# mkdir -pv /mogdata/data/dev1
# chown -R mogilefs.mogilefs /mogdata/

6、修改mogstored配置文件,使配置文件对应的存储数据目录与创建的目录保持一致

# vim /etc/mogilefs/mogstored.conf

7、启动服务,查看服务启动的结果:

# service mogstored start
# netstat -tnlp

8、将node1节点配置好的mogilefsd.conf和mogstored.conf配置文件复制到node2和node3上:

# cd /etc/mogilefs
# scp ./* node2:/etc/mogilefs
# scp ./* node3:/etc/mogilefs

三、在node1和node2上安装mogilefs,创建node2和node3的数据目录,并启动服务:

# cd mogilefs/
# yum -y install *.rpm perl-IO-AIO
# mkdir -pv /mogdata/data/dev2
# chown -R mogilefs.mogilefs /mogdata/
# service mogilefsd start
# service mogstored start
# netstat -tnlp

注:node2和node3上这些操作都相同,只是node3对应的创建里面的数据目录要使用/mogdata/data/dev3。所以就没有重复列出操作过程。

四、添加各个mogilefs节点至数据库中,并查看添加后的结果:

# mogadm host add  node1 --status=alive
# mogadm host add  node2 --status=alive
# mogadm host add  node3 --status=alive
# mogadm device add node1 1 --status=alive
# mogadm device add node2 2 --status=alive
# mogadm device add node3 3 --status=alive
# mogadm check

然后可以对该mogilefs集群添加domain和class:

# mogadm domain add files
# mogadm domain add images
# mogadm class add files c1
# mogadm class add images c1

此时可以向该mogilefs存储节点中上传文件:

[[email protected] mogilefs]# mogupload --trackers=172.16.103.1 --domain=files --key=‘/fstab.html‘ --file=‘/etc/fstab‘

如果要查看具体的domain中有哪些key,操作方法为:

[[email protected] mogilefs]# moglistkeys --trackers=172.16.103.2 --domain=files

如果要查看具体的某个key对应的存储文件信息,操作方法为:

[[email protected] mogilefs]# mogfileinfo --trackers=172.16.103.3 --domain=files --key=‘/fstab.html‘

五、编译安装Nginx:

Nginx要作为mogilefs的反向代理,需要在Nginx中添加mogilefs的第三方模块,系统自带的Nginx默认不带有这个模块,于是需要使用编译的方式安装Nginx,以便将该模块添加进Nginx,安装可以选择在这三台主机上的任意一个都可以,实验中安装的节点是node1:

1、解决依赖关系:

# yum -y groupinstall "Development tools" "Server Platform Development"
# yum -y install pcre-devel
# yum -y install openssl-devel

2、解压编译过程中需要用的mogilefs模块及主程序源码包,执行编译安装过程:

# tar xf nginx_mogilefs_module-1.0.4.tar.gz 
# tar xf nginx-1.6.1.tar.gz 
# cd nginx-1.6.1
# ./configure   --prefix=/usr   --sbin-path=/usr/sbin/nginx   --conf-path=/etc/nginx/nginx.conf   --ttp-log-path=/var/log/nginx/access.log   --pid-path=/var/run/nginx/nginx.pid    --lock-path=/var/loc  --with-http_flv_module   --with-http_stub_status_module   --with-http_gzip_static_module   --http-=/var/tmp/nginx/proxy/   --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/   --http-uwsgi-temp-path=/var-pcre   --with-debug   --add-module=../nginx_mogilefs_module-1.0.4
# make && make install

注:在编译的过程中添加mogilefs模块时,建议使用官方网站上提供的nginx_mogilefs_module-1.0.4

3、创建nginx启动时需要的目录并启动nginx:

# mkdir -pv /var/tmp/nginx/client
# nginx -c /etc/nginx/nginx.conf

4、修改nginx的配置文件,在配置文件的http段中添加upstream段定义内容,另外在http的server段中添加Nginx反向代理至后端mogilefs存储节点的定义:

此时,可以在浏览器内查看之前上传至mogilefs存储节点上的key:fstab.html:

如果要使用上传和下载的功能,可以在Nginx的配置文件中的server段中添加如下定义:

注:由于nginx的mogilefs模块的作者不再维护该模块的原因,所以如果要使用该模块的上传功能,需要使用nginx的0.7.1到0.8之间的版本,高版本的nginx由于API的变化而不支持PUT功能了。

# mogupload --trackers=172.16.103.1 --domain=images --key=‘/default.png‘ --file=‘/usr/share/backgrounds/default.png‘

在浏览器内输入172.16.103.1/images/default.png(IP+domain+key)可以访问到存储在mogilefs存储节点上的文件:

如果需要删除存储在mogilefs存储节点上的文件,操作方式如下:

# curl -X DELETE http://172.16.103.1/images/default.png

在浏览器内再次访问就会显示找不到资源:

Nginx反向代理mogilefs的配置过程完成。

时间: 2024-10-04 13:38:00

Nginx实现MogileFS的反向代理的相关文章

Nginx的安装及反向代理设置

因为项目的缘故,接触到了Nginx的安装和反向代理设置,和大家分享下. 一.Nginx的下载.安装cd /homewget http://nginx.org/download/nginx-1.0.5.tar.gztar -zxvf nginx-1.0.5.tar.gzcd nginx-1.0.5./configuremakemake install 二.反向代理设置编辑Nginx的配置文件vi /usr/local/nginx/conf/nginx.conf,替换server { }的{ }中的

nginx和tomcat实现反向代理、负载均衡和session共享

这类的文章非常多,nginx和tomcat实现反向代理.负载均衡实现非常easy,能够參照http://blog.csdn.net/liuzhigang1237/article/details/8880752 但tomcat借助memcache实现session共享非常麻烦(和jar的版本号有关),这里做个记录. 我的tomcat的版本号是7.0.53,须要加入的jar是: couchbase-client-1.2.0 javolution-5.4.3.1 Memcached-Java-Clie

Nginx负载均衡,反向代理,再从防火墙做转发后,css样式与端口丢失!

Nginx负载均衡,反向代理,再从防火墙做转发后,报错,用外网IP+端口访问,结果css样式与端口都丢失!!!!!内网IP+端口访问,正常! 解决思路:用chrome的network标签,分析项目的路径与端口!将配置文件中无用的干掉! 亲测改好的配置文件,注意注释信息!!!! vi conf/nginx.conf worker_processes  auto; worker_rlimit_nofile 10000; events {     worker_connections  2048;  

Debian/Ubuntu下Nginx的安装、反向代理和负载均衡的基本配置

源码安装 去Nginx官网下载最新稳定版,这里用的是nginx-1.6.3版. 下载完成后解压缩,进入该目录执行: ./configure 如果你的机器上没有安装PCER库.zlib库等,这一步会出错. sudo apt-get install libpcre3-dev zlibc zlib-bin 然后执行: sudo make sudo make install 完成后,nginx会默认安装在/usr/local/nginx目录下. 反向代理的基本配置 nginx默认使用的配置文件在/use

CentOS中实现Nginx负载均衡和反向代理

一.安装必要软件 负载均衡服务器:IP设置为192.168.1.10 Web服务器1:安装Apache或者Nginx,IP设置为192.168.1.11: Web服务器2:安装Apache或者Nginx,IP设置为192.168.1.12. 二.配置负载均衡服务器 1.在Nginx的conf目录下新建extra文件夹,并在其下边编辑生成一个配置文件,比如t_servers.conf upstream test_servers { server 192.168.1.11:80 weight=5;

nginx或httpd实现反向代理tomcat并实现会话保持(二)

实例一:手动添加一个应用程序: 创建一个webapp的目录 [[email protected] myweb]# mkdir webapp [[email protected] webapp]# mkdir logs [[email protected] myweb]# cd webapp/ [[email protected] webapp]# mkdir./{classes,lib,META-INF,WEB-INF,Root} 在Root目录下创建自定义的index.jsp文件 [[emai

Nginx负载均衡及反向代理

Nginx 负载均衡 什么是nginx负载均衡? Nginx作为一个强大的web服务器管理软件,自身带有负载均衡和反向代理的功能,那么他和lvs之间有什么区别呢? LVS负载:是基于4层的负载均衡, 优点: 1抗负载能力强 2配置性低 3工作稳定 4无流量 5基本支持所有应用负载均衡,如WEB,数据库 Nginx负载:基于7层的负载均衡 特点: 1nginx工作在网络7层,他可以针对http本身做分发策略,如域名,目录结构等 2nginx对网络依赖小 3配置简单,测试方便 4nginx同样能承受

nginx(六)反向代理(proxy)与负载均衡(upstream)以及健康状态监测。

j**ngx_http_proxy_module模块配置(http或https协议)** proxy_pass uri;应用上下文:location,if in location,limit_except location  / {        proxy_set_header Host $http_host;        proxy_pass      #将所有请求都反向代理至本地的http协议的8080端口         index index.html index.htm; } 注:

nginx常用配置系列-反向代理

接上篇,反向代理的原理与用途很多地方有讲,用文字说再多可能也表达不清楚,下面贴一张拓扑图,介绍下什么叫反向代理 以上图有两种情景 1. 访问者的客户端是 local ,要访问baidu的服务器,baidu的前台服务器本身不处理具体的业务,只是根据访问的数据类型,或者业务类型等(就是一些特定的规则,比如URL正则),将不同类的请求转发到不同的后端服务器,例如server1是静态资源的,server2是处理账户系统的等 2. 后端的每个server提供的服务完全相同,baidu的前台服务器根据后端每