nginx代理mogilefs集群实现

nginx代理mogilefs集群实现

一、实验拓扑

二、实验环境

三、实验步骤

1.节点部署
	192.168.0.3 node1 [Nginx,Tracker,Storage,Mariadb]
	192.168.0.4 node2 [Tracker,Storage]
	192.168.0.5 node3 [Tracker,Storage]

2.初始化工作
	配置好三台服务器IP,hosts文件等网络环境,时间同步以及以下的rpm包安装
	注:以下操作在三个节点都执行
	#下载rpm包(附件有提供)
		MogileFS-Server-2.46-2.el7.centos.noarch.rpm
		MogileFS-Server-mogilefsd-2.46-2.el7.centos.noarch.rpm
		MogileFS-Server-mogstored-2.46-2.el7.centos.noarch.rpm
		MogileFS-Utils-2.19-1.el7.centos.noarch.rpm
		perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm
		perl-MogileFS-Client-1.14-1.el7.centos.noarch.rpm
		perl-Perlbal-1.78-1.el6.noarch.rpm
	#安装依赖环境
		yum install perl-Net-Netmask perl-IO-stringy perl-Sys-Syslog perl-IO-AIO -y
	#安装rpm包
		yum install *.rpm -y

3.node1节点部署mariadb,mogilefsd,mogstored
	3.1.node1部署Mariadb
		yum install mariadb-server -y
		vim /etc/my.cnf.d/server.cnf
		[mysqld]
		skip_name_resolve=1
		innodb_file_per_table = 1		

		#启动mariadb
		systemctl start mariadb	

		#连接mysql,进行以下操作
		mysql
		GRANT ALL ON *.* TO ‘root‘@‘192.168.0.%‘ IDENTIFIED BY ‘rootpass‘;
		GRANT ALL ON mogilefs.* TO ‘moguser‘@‘192.168.0.%‘ IDENTIFIED BY ‘moguserpass‘;
		CREATE DATABASE mogilefs;
		FLUSH PRIVILEGES;
		quit		

		#设定mogilefs数据库,生成数据表
		mogdbsetup --dbhost=192.168.0.3 --dbuser=moguser --dbpass=moguserpass  --dbname=mogilefs --dbrootpass=rootpass		

		#连接mysql,查看数据库是否生成
		mysql -u root -h192.168.0.3 -prootpass
		MariaDB [(none)]> use mogilefs;
		Reading table information for completion of table and column names
		You can turn off this feature to get a quicker startup with -A

		Database changed
		MariaDB [mogilefs]> SHOW TABLES;
		+----------------------+
		| Tables_in_mogilefs   |
		+----------------------+
		| checksum             |
		| class                |
		| device               |
		| domain               |
		| file                 |
		| file_on              |
		| file_on_corrupt      |
		| file_to_delete       |
		| file_to_delete2      |
		| file_to_delete_later |
		| file_to_queue        |
		| file_to_replicate    |
		| fsck_log             |
		| host                 |
		| server_settings      |
		| tempfile             |
		| unreachable_fids     |
		+----------------------+
		17 rows in set (0.00 sec)

	3.2node1配置mogilefsd
		vim /etc/mogilefs/mogilefsd.conf
		db_dsn = DBI:mysql:mogilefs:host=192.168.0.3
		db_user = moguser
		db_pass = moguserpass
		listen = 0.0.0.0:7001

	3.3启动mogilefsd
		[[email protected] ~]# service mogilefsd start 
		Starting mogilefsd (via systemctl):                        [  OK  ]
		[[email protected] ~]# ss -tln
		State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
		LISTEN      0      50        *:3306                  *:*                  
		LISTEN      0      128       *:22                    *:*                  
		LISTEN      0      128       *:7001                  *:*                  
		LISTEN      0      100    127.0.0.1:25                    *:*                  
		LISTEN      0      128      :::22                   :::*                  
		LISTEN      0      100     ::1:25                   :::*  

	3.4配置storage(推荐所有节点都配置)		

	    #创建存放文件的目录
		mkdir /data/mogilefs/dev1 -pv
		mkdir: created directory ‘/data’
		mkdir: created directory ‘/data/mogilefs’
		mkdir: created directory ‘/data/mogilefs/dev1’

		vim /etc/mogilefs/mogstored.conf 
			maxconns = 10000
			httplisten = 0.0.0.0:7500
			mgmtlisten = 0.0.0.0:7501
			docroot = /data/mogilefs/
	    #修改目录的权限
		chown mogilefs.mogilefs /data/mogilefs/ -R
	    
	    #启动mogstored
		[[email protected] ~]#  service mogstored start
		Starting mogstored (via systemctl):                        [  OK  ]

4.node2、node3节点部署mogstored操作
	4.1node2操作
    	[[email protected] ~]# mkdir /data/mogilefs/dev2 -pv
		mkdir: created directory ‘/data’
		mkdir: created directory ‘/data/mogilefs’
		mkdir: created directory ‘/data/mogilefs/dev2’

		vim /etc/mogilefs/mogstored.conf 
		maxconns = 10000
		httplisten = 0.0.0.0:7500
		mgmtlisten = 0.0.0.0:7501
		docroot = /data/mogilefs/		

		#修改目录的权限
		chown mogilefs.mogilefs /data/mogilefs/ -R		

		#启动mogstored
		[[email protected] ~]# service mogstored start
		Starting mogstored (via systemctl):                        [  OK  ]

	4.2node3操作
		[[email protected] ~]# mkdir /data/mogilefs/dev3 -pv
		mkdir: created directory ‘/data’
		mkdir: created directory ‘/data/mogilefs’
		mkdir: created directory ‘/data/mogilefs/dev3’

		vim /etc/mogilefs/mogstored.conf 
			maxconns = 10000
			httplisten = 0.0.0.0:7500
			mgmtlisten = 0.0.0.0:7501
			docroot = /data/mogilefs		

		#修改目录的权限
		chown mogilefs.mogilefs /data/mogilefs/ -R		

		#启动mogstored
		[[email protected] ~]# service mogstored start
		Starting mogstored (via systemctl):                        [  OK  ]

5.node1配置操作
	5.1.配置mogilefsd
	    #添加主机
		mogadm --trackers=192.168.0.3:7001 host add node1 --ip=192.168.0.3  --status=alive

		mogadm --trackers=192.168.0.3:7001 host add node2 --ip=192.168.0.4  --status=alive

		mogadm --trackers=192.168.0.3:7001 host add node3 --ip=192.168.0.5  --status=alive	

	    #查看主机状态
		[[email protected] ~]# mogadm host list 
			node1 [1]: alive
			  IP:       192.168.0.3:7500

			node2 [2]: alive
			  IP:       192.168.0.4:7500

			node3 [3]: alive
			  IP:       192.168.0.5:7500
			  
			  
	    #查看设备(设备为空)
			mogadm device list

			node1 [1]: alive
                            used(G)    free(G)   total(G)  weight(%)

			node2 [2]: alive
			    used(G)    free(G)   total(G)  weight(%)

			node3 [3]: alive
			    used(G)    free(G)   total(G)  weight(%)
	    #添加设备
			mogadm device add node1 1 
			mogadm device add node2 2 
			mogadm device add node3 3  

	    #再次查看设备
			[[email protected] ~]# mogadm device list
			node1 [1]: alive
			                    used(G)    free(G)   total(G)  weight(%)
			   dev1:   alive      1.389      8.602      9.990        100

			node2 [2]: alive
			                    used(G)    free(G)   total(G)  weight(%)
			   dev2:   alive      1.254      8.736      9.990        100

			node3 [3]: alive
			                    used(G)    free(G)   total(G)  weight(%)
			   dev3:   alive      1.150      8.840      9.990        100
	    #查看设备的状态
			[[email protected] ~]# mogadm check
			Checking trackers...
			  127.0.0.1:7001 ... OK

			Checking hosts...
			  [ 1] node1 ... OK
			  [ 2] node2 ... OK
			  [ 3] node3 ... OK

			Checking devices...
			  host device         size(G)    used(G)    free(G)   use%   ob state   I/O%
			  ---- ------------ ---------- ---------- ---------- ------ ---------- -----
			  [ 1] dev1             9.990      1.389      8.601  13.91%  writeable   N/A
			  [ 2] dev2             9.990      1.254      8.736  12.56%  writeable   N/A
			  [ 3] dev3             9.990      1.151      8.840  11.52%  writeable   N/A
			  ---- ------------ ---------- ---------- ---------- ------
			             total:    29.971      3.795     26.176  12.66%
			             
		#查看域(目前为空)
			[[email protected] ~]# mogadm domain list
			 domain               class                mindevcount   replpolicy   hashtype
			-------------------- -------------------- ------------- ------------ -------    
			         
		#创建域

			[[email protected] ~]# mogadm domain add images
			[[email protected] ~]#  mogadm domain add files
			[[email protected] ~]#  mogadm domain list
			 domain               class                mindevcount   replpolicy   hashtype
			-------------------- -------------------- ------------- ------------ -------
			 files                default                   2        MultipleHosts() NONE   

			 images               default                   2        MultipleHosts() NONE   

		#查看类
			[[email protected] ~]# mogadm class list  
			 domain               class                mindevcount   replpolicy   hashtype
			-------------------- -------------------- ------------- ------------ -------
			 files                default                   2        MultipleHosts() NONE   

			 images               default                   2        MultipleHosts() NONE   

		#在images域中添加一个类jpeg
			[[email protected] ~]# mogadm class add images jpeg --mindevcount=2 --replpolicy="MultipleHosts(2)"

		#再次查看类
			[[email protected] ~]#  mogadm class  list
			 domain               class                mindevcount   replpolicy   hashtype
			-------------------- -------------------- ------------- ------------ -------
			 files                default                   2        MultipleHosts() NONE   

			 images               default                   2        MultipleHosts() NONE   
			 images               jpeg                      2        MultipleHosts(2) NONE   

6.上传文件/图片测试
        #在linu主机中找几张图片
	find / -name "*.jpg" -exec cp {} /tmp/ \;	

	#上传图片(图片格式写错了,囧)
	mogupload --tracker=192.168.0.3:7001 --domain=images --key=‘1.gpg‘ --file=‘/tmp/morning.jpg‘ --class=jpeg	

	#上传图片
	mogupload --tracker=192.168.0.3:7001 --domain=images --key=‘1.jpg‘ --file=‘/tmp/day.jpg‘ --class=jpeg	

	#查看图片的信息
	[[email protected] tmp]# mogfileinfo --tracker=192.168.0.3:7001 --domain=images --key=‘1.jpg‘ 
	- file: 1.jpg
	     class:                 jpeg
	  devcount:                    1
	    domain:               images
	       fid:                    3
	       key:                1.jpg
	    length:               961243
	 - http://192.168.0.3:7500/dev1/0/000/000/0000000003.fid

	 [[email protected] tmp]# mogfileinfo --tracker=192.168.0.3:7001 --domain=images --key=‘1.gpg‘ 
	- file: 1.gpg
	     class:                 jpeg
	  devcount:                    1
	    domain:               images
	       fid:                    2
	       key:                1.gpg
	    length:               980265
	 - 
	 
	#上传文件
	mogupload --trackers=192.168.0.3 --domain=files --key=‘/fstab.txt‘ --file=/etc/fstab 

	#查看文件
	[[email protected] tmp]# mogfileinfo --trackers=192.168.0.3 --domain=files --key=‘/fstab.txt‘
	- file: /fstab.txt
	     class:              default
	  devcount:                    1
	    domain:                files
	       fid:                    4
	       key:           /fstab.txt
	    length:                  595
	 - 
	 
	  #访问测试(在浏览器中输入)
	  http://192.168.0.3:7500/dev1/0/000/000/0000000003.fid
	  http://192.168.0.5:7500/dev3/0/000/000/0000000002.fid	

(ps:可以看出,访问的地址实在反人类,其实我们可以通过加入其他的模块解决这种办法,在下面会介绍这个模块)

	#删除文件
		mogdelete --tracker=192.168.0.3:7001 --domain=images --key=‘1.jpg‘ 
		mogdelete --tracker=192.168.0.3:7001 --domain=images --key=‘1.gpg‘ 
		mogdelete --tracker=192.168.0.3:7001 --domain=files --key=‘/fstab.txt‘

7.配置nginx
	nginx 的mogilefs模块的官方文档地址:http://www.grid.net.ru/nginx/mogilefs.en.html

	#下载nginx_mogilefs模块
	wget http://www.grid.net.ru/nginx/download/nginx_mogilefs_module-1.0.4.tar.gz

	tar xvf nginx_mogilefs_module-1.0.4.tar.gz 
	mv nginx_mogilefs_module-1.0.4 /usr/local/	cd /usr/local/src
	wget 
	 
	#安装nginx依赖环境包
	yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
	useradd -r nginx
	tar xvf nginx-1.10.3.tar.gz 
	cd nginx-1.10.3

	#编译安装
	./configure --with-pcre  --user=nginx --group=nginx  --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module  --with-http_realip_module --add-module=/usr/local/nginx_mogilefs_module-1.0.4

	make && make install

	#编译之后出现报错
	make[1]: *** [objs/addon/nginx_mogilefs_module-1.0.4/ngx_http_mogilefs_module.o] Error 1
	make[1]: Leaving directory `/usr/local/src/nginx-1.10.3‘
	make: *** [build] Error 2

	解决办法:
		vim  objs/Makefile
		#把-Werror删除掉

	#再次安装,成功
	make && make install

	#配置nginx环境变量
	vi /etc/profile.d/nginx.sh
	export PATH="$PATH:/usr/local/nginx/sbin"

	#重新加载
	. /etc/profile.d/nginx.sh

	#查看环境变量
	[[email protected] ~]# echo $PATH
	/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/nginx/sbin
 
	#接下来,编辑nginx配置文件
	cd /usr/local/nginx/conf/
	vi nginx.conf
	#加入的配置段
	upstream trackers {
        server 192.168.0.3:7001 weight=1;
        server 192.168.0.4:7001 weight=1;
        server 192.168.0.5:7001 weight=1;
        check interval=1000 rise=2 fall=5 timeout=1000;
	}

	   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;
                }
	    }

	#检查并启动nginx
	nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
	nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
	[[email protected] conf]# nginx 

	#上传图片
	mogupload --trackers=192.168.0.3 --domain=images --key=‘1.jpg‘ --file=‘/tmp/day.jpg‘ --class=jpeg

	#浏览器访问测试
	http://192.168.0.3/images/1.jpg

8.将三个节点都配置成tracker	

    #将mogilefsd.conf文件拷贝到其他的节点
	[[email protected] conf]# scp /etc/mogilefs/mogilefsd.conf node2:/etc/mogilefs/
	mogilefsd.conf                                            100% 1465     1.4KB/s   00:00 
	   
	[[email protected] conf]# scp /etc/mogilefs/mogilefsd.conf node3:/etc/mogilefs/
	[email protected]‘s password: 
	mogilefsd.conf                                            100% 1465     1.4KB/s   00:00    

	#启动node2、node3的mogilefsd
	[[email protected] ~]# service mogilefsd start
	Starting mogilefsd (via systemctl):                        [  OK  ]

	[[email protected] ~]# service mogilefsd start
	Starting mogilefsd (via systemctl):                        [  OK  ]	

	#测试是否成为tracker
	[[email protected] conf]# moglistkeys --trackers=192.168.0.3:7001 --domain=images 
	1.jpg
	[[email protected] conf]# moglistkeys --trackers=192.168.0.4:7001 --domain=images 
	1.jpg
	[[email protected] conf]# moglistkeys --trackers=192.168.0.5:7001 --domain=images 
	1.jpg

	三个节点都可以查看内容列表,由此证明三个节点都是tracker。
时间: 2024-10-08 19:14:56

nginx代理mogilefs集群实现的相关文章

Docker Compose 一键部署Nginx代理Tomcat集群

Docker Compose 一键部署Nginx代理Tomcat集群 目录结构 [[email protected] ~]# tree compose_nginx_tomcat/ compose_nginx_tomcat/ ├── docker-compose.yml ├── mysql │   ├── conf │   │   └── my.cnf │   └── data ├── nginx │   ├── Dockerfile │   ├── nginx-1.12.1.tar.gz │  

nginx反向代理tomcat集群达到负载均衡,同时使用proxy_cache做web缓存

Nginx最早是作为一款优秀的反向代理软件,以高并发下的卓越性能被越来越多的用户所用户,国内最早研究nginx的是张宴,该大牛的博客地址:http://zyan.cc/ .但是随着需求的发展,nginx的功能已经不再单单是反向代理,现在已经更倾向作为web容器. Nginx从0.7.48版本开始,支持了类似Squid的缓存功能.Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成,前者用于反向代理时,对后端内容源服务器进行缓存,后者主要用于对

使用nginx反向代理tomcat集群

一.反向代理的概念 正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器).为了从原始服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转交并且将获得的内容返回给客户端.正向代理的情况下客户端必须要进行一些特别的设置才能使用. 反向代理正好相反.对于客户端来说,反向代理就好像目标服务器.并且客户端不需要进行任何设置.客户端向反向代理发送请求,接着反向代理判断请求走向何处,并将请求转交给客户端,使得这些内容就好似他自己一样,一次客户端并不会感知到反

nginx整合tomcat集群并做session共享----测试案例

最近出于好奇心,研究了一下tomcat集群配置,并整合nginx,实现负载均衡,session共享,写篇记录,防止遗忘.---------菜鸡的自我修炼. 说明:博主采用一个web项目同时部署到两台tomcat下,(tomcat-A,tomca-B),使用nginx做反向代理,按照设置的权值,将请求分发到后台的tomcatA/tomcat-B,并且实现session共享. 配置好本地域名指向:修改host文件:添加 127.0.0.1  www.domain.com.cn 新建项目:tiny-d

nginx负载均衡集群

nginx负载均衡集群  0.前言:nginx 负载均衡,属于网络7层模型中的应用层,说白了就是一个代理,要用 upstrem 模块实现,代理则用proxy模块 1.可以针对域名做转发,lvs只能针对ip(牵扯到ip和内核的改动) 2.优势: (a)非常灵活地配置负载均衡 (b)可以根据域名去转发  应用情景:不同域名对应不同机器 或者 域名下有二级目录,不同目录可以针对不同的real server(不需要配置公网 IP) 实验环境: director主机: 192.168.131.132 re

Nginx高可用集群实战

一.简介  上一篇博文介绍了keepalived的高可用集群,其实使用nginx做前端代理,负载均衡照样可以实现双主或主备模式的高可用集群比起keepalived基于lvs的dr配置更为简单易学,下面是本人所理解的nginx高可用集群.此实验拓扑图类似keepalived拓扑,把图中keepalived字样换成nginx即可,我就不画了,有意者可重画. 实验拓扑图:       二.nginx主备模式高可用     配置nginx的upstream模块,让其反代到后端主机,后端主机配置和keep

Nginx负载均衡集群介绍

第1章 集群介绍 1.1 集群简介 1.1.1 什么是集群 简单说,集群就是一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器,这些服务器之间可以彼此通信,协同向用户提供应用程序,系统资源和数据,并以单一系统的模式加以管理.当用户客户机请求集群系统时,集群给用户的感觉就是一台服务器干一件事. 1.2 集群的优势特点 高性能(performance) 一些国家重要的计算密集型应用(如天气预报,核试验模拟等

企业网站架构之Nginx+tomcat+memcached集群

nginx+tomcat+memcached应用 系统环境:RHEL6.4  x64   iptables -F   and selinux is disabled 主机角色:node1 :192.168.0.24 :lnmp环境 tomcat memcached node2 :192.168.0.99 : tomcat memcached 软件下载:在lnmp环境上测试tomcat,使用nginx简单发布jsp jdk-6u32-linux-x64.bin apache-tomcat-7.0.

nginx+双tomcat集群负载均衡(一台机器)

nginx简介 Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日.其将源代码以类BSD许可证的形式发布,因它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名. 下面是采用一台机器nginx+双tomcat集群负载均衡方案.当更新项目时可以停止