Mogilefs分布式文件系统-Keepalived+Nginx双主模型实现图片分布式存储、访问

一、分布式文件系统:

分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。计算机通过文件系统管理、存储数据,单纯通过增加硬盘个数来扩展计算机文件系统的存储容量的方式,在容量大小、容量增长速度、数据备份、数据安全等方面的表现都差强人意。

分布式文件系统可以有效解决数据的存储和管理难题:将固定于某个地点的某个文件系统,扩展到任意多个地点/多个文件系统,众多的节点组成一个文件系统网络。每个节点可以分布在不同的地点,通过网络进行节点间的通信和数据传输。人们在使用分布式文件系统时,无需关心数据是存储在哪个节点上、或者是从哪个节点从获取的,只需要像使用本地文件系统一样管理和存储文件系统中的数据。

二、常见的分布式文件系统:


GFS

(Google File System)

Google公司为了满足本公司需求而开发的基于Linux的专有分布式文件系统。

HDFS

(Hadoop Distributed File System)

Hadoop 实现的一个分布式文件系统

TFS

(Taobao File System)

是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,它构筑在普通的Linux机器 集群上,可为外部提供高可靠和高并发的存储访问,主要针对海量的非结构化数据,TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,满足了淘宝对小文件存储的需求

GlusterFS

(Gluster File System)

主要应用在集群系统中,具有很好的可扩展性,通过网络互联成一个并行的网络文件系统;与Hadoop HDFS不同的是:GlusterFS使用了弹性哈希算法来定位文件存储的位置。 由于使用了弹性哈希算法,GlusterFS不需要专门的Meta-Data Server来保存元数据,因此可以避免因为元数据服务器宕机导致的整个集群不可用。也正是因为不需要元数据服务器,所以GlusterFS在多个挂载点同时进行数据读写的时候,其整体性能很突出。
ceph C++编写的代码,支持Fuse,并且没有单点故障依赖, 于是下载安装, 由于 ceph 使用 btrfs 文件系统, 而btrfs 文件系统需要 Linux 2.6.34 以上的内核才支持。
MooseFS mooseFS是一款网络分布式文件系统。它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源。
MogileFS  perl语言研发的; 性能好;海量图片存储
FastDFS c语言研发 

三、MogileFS介绍


 第1个部分: 是server端,包括mogilefsd和mogstored两个程序。前者即是mogilefsd的tracker,它将一些全局信息保存在数据库 里,例如站点domain,class,host等,默认监听在7001端口。后者即是存储节点(store node),它其实是个HTTP Daemon,默认侦听在7500端口,接受客户端的文件备份请求。在安装完后,要运行mogadm工具将所有的store node注册到mogilefsd的数据库里,

mogilefsd会对这些节点进行管理和监控。

 第2个部分:是utils(工具集),主要是MogileFS的一些管理工具,例如mogadm等。
 第3个部分:是客户端API,目前只有Perl API(MogileFS.pm)、PHP,用这个模块可以编写客户端程序,实现文件的备份管理功能,提供MogileFS.pm。

 
 四、Keepalived+Nginx双主模型实现图片分布式存储、访问
  

   ip地址   主机名      安装包
172.16.16.3 ①  master1  keepalived+nginx
172.16.16.4 ② master2  keepalived+nginx
172.16.16.2 ③ mogilefs1  mogilefs相关软件包
172.16.16.8 ④ mogilefs2  mogilefs相关软件包
172.16.116.233 ⑤ mysql  mariadb-server

① mster1

####keepalived相关配置
[[email protected] ~]# yum install -y keepalived
[[email protected] ~]# vim /etc/keepalived/keepalived.conf 

! Configuration File for keepalived

global_defs {
   notification_email {
        [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111aaaa2222
    }
    virtual_ipaddress {
        172.16.16.40/16
    }
}

vrrp_instance VI_2 {
    state BACKUP
    interface eth0
    virtual_router_id 52
    priority 99
    advert_int 1
    authentication {
       auth_type PASS
       auth_pass 2222aaaa1111
    }
    virtual_ipaddress {
       172.16.16.41/16
    }
}

####nginx编译安装及配置
[[email protected] ~]# tar xf nginx_mogilefs_module-1.0.2.tar.gz
[[email protected] ~]# yum install openssl-devel pcre-devel
[[email protected] ~]# groupadd -r nginx
[[email protected] ~]# useradd -r -g nginx nginx
[[email protected] ~]# tar xf nginx-1.8.0.tar.gz 
[[email protected] ~]# cd nginx-1.8.0
[[email protected] ~]# ./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=/root/nginx_mogilefs_module-1.0.2

[[email protected] ~]# make && make install
[[email protected] ~]# mkdir -p /var/tmp/nginx/{client,proxy,fcgi,uwsgi,scgi}
[[email protected] ~]# nginx -t

② mseter2

####keepalived相关配置
[[email protected] ~]# yum install -y keepalived
[[email protected] ~]# vim /etc/keepalived/keepalived.conf 

! Configuration File for keepalived

global_defs {
   notification_email {
        [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111aaaa2222
    }
    virtual_ipaddress {
        172.16.16.40/16
    }
}

vrrp_instance VI_2 {
    state MASTER
    interface eth0
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
       auth_type PASS
       auth_pass 2222aaaa1111
    }
    virtual_ipaddress {
       172.16.16.41/16
    }
}

#####nginx编译过程同master1

测试如下列图所示:

③ mogilefs1

#### 
[[email protected] ~]# mogdbsetup --dbhost=172.16.116.233 --dbuser=mfs --dbpass=mfspass --dbrootpass=123456

### 配置tracker
[[email protected] ~]# vim /etc/mogilefs/mogilefsd.conf 
daemonize = 1
pidfile = /var/run/mogilefsd/mogilefsd.pid
db_dsn = DBI:mysql:mogilefs:host=172.16.116.233
db_user = mfs
db_pass = mfspass
listen = 172.16.16.2:7001
conf_port = 7001
query_jobs = 10
delete_jobs = 1
replicate_jobs = 5
reaper_jobs = 1

####配置存储节点
[[email protected] ~]# vim /etc/mogilefs/mogstored.conf 
maxconns = 10000
httplisten = 0.0.0.0:7500
mgmtlisten = 0.0.0.0:7501
docroot = /mogstore

#####脚本创建逻辑分区作为数据存储使用
#!/bin/bash
pvcreate /dev/sda5
vgcreate myvg /dev/sda5
lvcreate -L 8G -n mogstore myvg
mkdir -p /mogstore
mke2fs -t ext4 /dev/myvg/mogstore
echo "/dev/myvg/mogstore    /mogstore     ext4    defaults    0 0" >> /etc/fstab
mount -a
mount

#### 创建数据存放位置 
[[email protected] ~]# mkdir /mogstore/dev1
[[email protected] ~]# chown -R mogilefs.mogilefs /mogstore/dev1/

####启动服务
[[email protected]  ~]# service mogilefsd start
[[email protected]  ~]# service mogstored start
Starting mogstored                [  OK  ]

[[email protected] ~]# ss -tanlp
State      Recv-Q Send-Q  Local Address:Port     Peer Address:Port 
LISTEN     0      128   172.16.16.2:7001         *:*     
 users:(("mogilefsd",1247,6))
LISTEN     0      128     *:7500              *:*     
 users:(("mogstored",1366,4))
LISTEN     0      128     *:7501              *:*     
 users:(("mogstored",1366,9))
 
 
### 配置host
[[email protected] ~]# mogadm host add 172.16.16.2 --ip=172.16.16.2 --status=alive
[[email protected] ~]# mogadm host add 172.16.16.8 --ip=172.16.16.8 --status=alive
[[email protected] ~]# mogadm host list
172.16.16.2 [1]: alive
  IP:       172.16.16.2:7500

172.16.16.8 [2]: alive
  IP:       172.16.16.8:7500

###配置device
[[email protected] ~]# mogadm device add 172.16.16.2 1
[[email protected] ~]# mogadm device add 172.16.16.8 2

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

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

④ mogilefs2

[[email protected] ~]# mkdir /mogstore/dev2
[[email protected] ~]# chown -R mogilefs.mogilefs /mogstore/dev2/

⑤ mysql

#### 安装mysql 
[[email protected] ~]# yum install mariadb-server 
[[email protected] ~]# vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
innodb_file_per_table=1
skip_name_resolve=1
log_bin=mysql-bin

#### 授权一个用户可以远程登录mysql数据库并管理mogilefs数据库
MariaDB [(none)]> grant all on *.* to ‘mfs‘@‘172.16.%.%‘ identified by ‘mfspass‘;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.01 sec)

nginx的反代还是有问题~~~先这样吧,测试没问题继续上传;放在博客草稿里内容都丢了!!未完待续~~~!!!

时间: 2024-10-03 13:02:57

Mogilefs分布式文件系统-Keepalived+Nginx双主模型实现图片分布式存储、访问的相关文章

keepalived+nginx 双主模型实现高可用服务

一.keepalived的工作原理 keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗协议. 虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个虚拟路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为mas

keepalived+lvs-dr+nginx双主模型

前言 本文主要介绍,使用keepalived+lvs实现负载均衡及高可用功能,后端webserver使用nginx,keepalived使用双主模型. keepalived基于VRRP实现: VRRP的工作过程为: (1)  虚拟路由器中的路由器根据优先级选举出 Master.Master 路由器通过发送免费 ARP 报文,将自己的虚拟 MAC 地址通知给与它连接的设备或者主机,从而承担报文转发任务: (2)  Master 路由器周期性发送 VRRP 报文,以公布其配置信息(优先级等)和工作状

【 Linux 】Keepalived实现双主模型高可用集群

要求:    1. 两台web服务器安装wordpress,数据库通过nfs共享    2. 使用keepalived实现双主模型 环境:    主机:        系统:CentOS6.7 x64        1. node1: 192.168.2.11  node2: 192.168.2.12 vip: 192.168.2.200        service iptables stop        selinux: disabled 一.两台主机分别配置lamp架构,并使用nfs实现

Keepalived单双主模型配置

Keepalived单双主模型配置 Keepalived单主配置实例: 一.安装keepalived包 [[email protected] ~]# hostnamectl set-hostname keepalived-1 [[email protected] ~]# yum install keepalived.x86_64 主配置文件:/etc/keepalived/keepalived.conf主程序文件:/usr/sbin/keepalived 二.进行配置主配置文件: 主keepal

keepalived基于双主模型实现nginx的高可用(2)

Keepalived: keepalived是基于vrrp协议实现的一个高可用集群解决方案,可以利用keepalived来解决单点故障问题,使用keepalived实现的高可用集群方案中,一般有两台服务器,一个是MASTER(主服务器),另一个是BACKUP(备用服务器),这个集群中对外提供一个虚拟IP,MASTER服务器会定时发送特定信息给BACKUP服务器,当BACKUP服务器接收不到MASTER发送的消息时,BACKUP服务器会接管虚拟IP,继续提供服务. 当keepalived基于主备模

基于keepalived实现双主模型高可用lvs

实验环境,使用的操作系统CentOS6.5: Director: node1:IP 172.16.103.2 安装keepalived VIP:172.16.103.20 node2:IP 172.16.103.3 安装keepalived VIP:172.16.103.30 RS: RS1:IP 172.16.103.1 提供httpd服务 RS2:IP 172.16.103.4 提供httpd服务 实验效果: 前端的两台Director运行keepalived,自动生成各自的一组lvs规则,

Keepalived+nginx双主互备模型实现

Keepalived双主互备模型实现 实验拓扑概述 本次实验所涉及的系统发行版本为:CentOS6.6-64bit:内核版本:2.6.32-504.el6.x86_64 (nod1)Nginx代理1:配置有nginx服务,向外部宣称一个公网ip接收外部客户端请求,网卡eth0桥接模式,配置有内网ip172.16.13.11:eth1(1.1.1.2/24)仅主机模式,模拟与出口路由器通信接口,nod1为VIP1的MASTER时,VIP(1.1.1.100/32)配置于eth1的别名eth1:1上

LVS+Keepalived双主模型的实现

拓扑结构: Client LVS1 LVS2 RS1 RS2 192.168.2.1 DIP 192.168.2.128 VIP 192.168.2.198 DIP 192.168.2.129 VIP 192.168.2.199 192.168.2.130 192.168.2.131 实现双主模型我们需要配置两个虚拟路由器组,也就是每台主机需要配置两段 vrrp_instance,每个虚拟接口配置虚拟IP,LVS1与LVS2的同一组virtual_router_id内互为主备,这里如果不明白可以

Apache+lvs高可用+keepalive(主从+双主模型)

Apache+lvs高可用+keepalive(主从+双主模型)???? keepalive实验准备环境: httpd-2.2.15-39.el6.centos.x86_64 keepalived-1.2.13-1.el6.x86_64.rpm ? ? ???? 实验拓扑图: ? ? ? ? LVS+Keepalived 实现高可用的前端负载均衡器 ? node15: 1.安装httpd [[email protected] ~]# yum intsall -y httpd 2.配置httpd