
mogileFS:Key-Value型元文件系统,不支持FUSE,应用程序访问它时需要API,主要用在web领域处理海量小,效率相比mooseFS高很多。
fastDFS:国人在mogileFS的基础上进行改进的key-value型文件系统,同样不支持FUSE,提供比mogileFS更好的性能。
mooseFS:支持FUSE,相对比较轻量级,对master服务器有单点依赖,用perl编写,性能相对较差,国内用的人比较多
glusterFS:支持FUSE,比mooseFS庞大
ceph:支持FUSE,客户端已经进入了linux-2634内核,也就是说可以像ext3/rasierFS一样,选择ceph为文件系统。彻底的分布式,没有单点依赖,用C编写,性能较好。基于不成熟的btrfs,其本身也非常不成熟。
lustre:Oracle公司的企业级产品,非常庞大,对内核和ext3深度依赖
NFS:老牌网络文件系统,具体不了解,反正NFS最近几年没发展,肯定不能用。
鉴于fastDFS是国人开发,也有国内的一些大公司在使用,so…
普通的文件架构其实一两年内也是没有问题的,但有句话叫未雨绸缪,于是决定折腾折腾。
源码下载:
寻求帮助:
一、安装libevent
fastDFS需要安装libevent比较新的版本,将本机的比较低的版本卸载了。
rpm -qa libevent
libevent-1413-1el6x86_64
rpm -e --nodeps libevent
安装一个最新稳定版
wget
tar zxvf libevent-2018-stabletargz
cd libevent-2018-stable
/configure
make && make install
为libevent创建软链接到/lib库下,64位系统对应/lib64
ln -s /usr/local/lib/libevent /lib/
ln -s /usr/local/lib/libevent /lib64/
二、安装FastDFS
wget
tar zxvf FastDFS_v306targz
cd FastDFS
/makesh
/makesh install
三、配置FastDFS
环境:
tracker server
19216815
storage server
192168151
192168152
1、配置并启动 tracker server
①配置 trackerconf
mkdir /data/fastdfs
vim /etc/fdfs/trackerconf
base_path=/data/fastdfs
②启动 tracker
/usr/local/bin/fdfs_trackerd /etc/fdfs/trackerconf
③开机启动
vim /etc/rclocal
/usr/local/bin/fdfs_trackerd /etc/fdfs/trackerconf
2、配置并启动 storage server
①配置 trackerconf
mkdir /data/fastdfs
mkdir /data/images
vim /etc/fdfs/storageconf
base_path=/data/fastdfs
store_path0=/data/images
tracker_server=19216815:22122
②启动 tracker
/usr/local/bin/fdfs_storage /etc/fdfs/storageconf
③开机启动
vim /etc/rclocal
/usr/local/bin/fdfs_storage /etc/fdfs/storageconf
3、为storage节点安装fastdfs-nginx-module模块
①安装模块
安装Nginx详见:
需重新编译Nginx
wget
tar zxvf fastdfs-nginx-module_v110targz
wget
tar zxvf nginx-120targz
cd nginx-120
/configure --prefix=/usr/local/nginx --add-module=/fastdfs-nginx-module/src
make && make install
cd
②配置
编辑nginxconf
vim /usr/local/nginx/conf/nginxconf
server {
listen 80;
server_name localhost;
location /M00 {
alias /data/images/data;
ngx_fastdfs_module;
}
}
给 storage 的存储目录做一个软连接
ln -s /data/images/data/ /data/images/data/M00
拷贝mod_fastdfsconf 到 /etc/fdfs/
cp fastdfs-nginx-module/src/mod_fastdfsconf /etc/fdfs/
vim /etc/fdfs/mod_fastdfsconf
base_path=/data/fastdfs
tracker_server=19216815:22122
store_path0=/data/images
启动nginx
/usr/local/nginx/sbin/nginx
四、使用FastDFS
1、上传文件
FastDFS安装包中,自带了客户端程序,通过程序可以进行文件上传。在使用这个客户端程序之前,首先需要配置clientconf,然后再进行文件上传及下载。
在tracker上修改客户端配置文件clientconf
vim /etc/fdfs/clientconf
base_path=/data/fastdfs
tracker_server=19216815:22122
vim ahtml
This Is FastDFS Test
上传文件
/usr/local/bin/fdfs_test /etc/fdfs/clientconf upload ahtml
This is FastDFS client test program v306
Copyright (C) 2008, Happy Fish / YuQing
FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit
Please visit the FastDFS Home Page /
for more detail
[2012-04-29 12:42:53] INFO - base_path=/data/tracker, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0
tracker_query_storage_store_list_without_group:
server 1 group_name=group1, ip_addr=192168151, port=23000
server 2 group_name=group1, ip_addr=192168152, port=23000
group_name=group1, ip_addr=192168151, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90html
source ip address: 192168151
file timestamp=2012-04-29 12:42:53
file size=14
file crc32=674197143
file url:
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90_bightml
source ip address: 192168151
file timestamp=2012-04-29 12:42:53
file size=14
file crc32=674197143
file url:
上传成功
试试用
访问看看吧。
看了几天了,还是有些地方不是很明白,暂时搁置,不能再浪费时间了。1、什么是NFS?
全称是 network file system 网络文件系统
什么是文件系统?
存取和组织文件的一种方法
什么是网络文件系统
通过网络存取和组织文件得一种方法机制
2、为什么要用共享存储
前端所有的应用服务器接受到用户上传的、文件、视频,都会通一的放到后端的存储上。
为什么要共享?
所有节点服务器都需要将内容存到存储上,要取的统一来取。
3、共享存储的种类
单点存储系统就是NFS,中小型企业,阿里云服务的NFS服务,OSS对象存储
NFS性能不太高
大型企业会用分布式存储FastDFS、GlsterFS、Mfs
4、NFS的工作原理
NFS网络文件系统
启动NFS 服务,而且还有启动很多端口。
NFS功能,需要很多服务。每个服务都有端口,而且经常变化。
如何让客户端找到这些端口呢?就需要一个经纪人(rpc服务)
NFS服务:
1、NFS服务(有很多进程和端口) 把自己的端口告诉RPC
2、RPC服务(对外固定端口111)
客户端请求NFS服务,先找RPC 111,查到NFS的端口,发送给客户。
[上传失败(image-1da904-1555779833017)]
[上传失败(image-b0cdd-1555779833017)]
[上传失败(image-a1d9be-1555779833017)]
[上传失败(image-dcd4de-1555779833017)]
[上传失败(image-6c3472-1555779833017)]
5、安装
服务端和客户端都要安装
yum install nfs-utils rpcbind -y
rpm -qa nfs-utils rpbind
先起rpcbind 后起nfs不然注册不了
[root@nfs01 ~]# rpm -qa nfs-utils rpcbind ####
nfs-utils-130-061el7x86_64
rpcbind-020-47el7x86_64
rpcinfo -p 127001 #####查看有没有注册端口
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
启动NFS
systemctl start nfs
systemctl enable nfs
[root@nfs01 ~]# netstat -lntup|egrep "rpc|nfs"
tcp 0 0 0000:20048 0000: LISTEN 9516/rpcmountd
tcp 0 0 0000:59204 0000: LISTEN 9463/rpcstatd
tcp6 0 0 :::20048 ::: LISTEN 9516/rpcmountd
tcp6 0 0 :::14450 ::: LISTEN 9463/rpcstatd
udp 0 0 0000:44521 0000: 9463/rpcstatd
udp 0 0 0000:20048 0000: 9516/rpcmountd
udp 0 0 0000:695 0000: 9424/rpcbind
udp 0 0 127001:735 0000: 9463/rpcstatd
udp6 0 0 :::20048 ::: 9516/rpcmountd
udp6 0 0 :::695 ::: 9424/rpcbind
udp6 0 0 :::4835 ::: 9463/rpcstatd
6、配置nfs
NFS配置文件 /etc/exports
[root@nfs01 ~]# man exports
EXAMPLE
/ master(rw) trusty(rw,no_root_squash)
/projects projlocaldomain(rw)
/usr localdomain(ro) @trusted(rw)
/home/joe pc001(rw,all_squash,anonuid=150,anongid=100)
/pub (ro,insecure,all_squash)
/srv/>/bin - 重要的二进制 (binary) 应用程序
/boot - 启动 (boot) 配置文件
/dev - 设备 (device) 文件
/etc - 配置文件、启动脚本等 (etc)
/home - 本地用户主 (home) 目录
/lib - 系统库 (libraries) 文件
/lost+found - 在根 (/) 目录下提供一个遗失+查找(lost+found) 系统
/media - 挂载可移动介质 (media),诸如 CD、数码相机等
/mnt - 挂载 (mounted) 文件系统
/opt - 提供一个供可选的 (optional) 应用程序安装目录
/proc - 特殊的动态目录,用以维护系统信息和状态,包括当前运行中进程 (processes) 信息
/root - root (root) 用户主文件夹,读作“slash-root”
/sbin - 重要的系统二进制 (system binaries) 文件
/sys - 系统 (system) 文件
/tmp - 临时(temporary)文件
/usr - 包含绝大部分所有用户(users)都能访问的应用程序和文件
/var - 经常变化的(variable)文件,诸如日志或数据库等
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器
vim /usr/local/etc/keepalived/keepalivedconf
Centos 7
解决办法:
解决办法:
1删除系统自带数据库
8重启两台服务器 并配置复制账户
包含两部分 一部分为lib 一部分为fastDFS
3配置
实验机器IP: 1921683206 1921683207
系统环境:centos 7
(如果 /usr/local/bin/ 文件夹内没有 redis-server 那几个文件,就从 /usr/local/redis-401/src/ 中拷贝过去,命令:cp redis-server redis-cli redis-sentinel redis-benchmark redis-check-aof redis-check-rdb /usr/local/bin/)
配置 vmovercommit_memory 为1,这可以避免数据被截断
使用 ps -ef|grep redis 查看是否都启动成功,IP和端口号都正确
--permanent(必须开集群总线端口,集群总线端口=端口号+10000,例:7000的集群总线端口是17000。这个集群总线端口不开放,集群的时候外部服务器的节点添加不进来)
#彻底关闭防火墙
================================================================================== ====================== 1~9都是要在两台服务器中 *** 作的 =========================== ==================================================================================
说明成功了。
如果是出现 Waiting for the cluster to join 一直有 “”出现,说明另一台服务器的端口策略没通,一直在等那边的节点加入集群,那么恭喜你,要悲剧了
CLUSTER NOTES
如果集群要设置密码,集群启动后要在各个节点下设置:
/etc/snmp/snmpdconf/etc/snmp/snmpdconf
分别解压两个文件包
修改
编译
配置插件
cd /home/data/bin/fastdfs-nginx-module/src vim mod_fastdfsconf
复制fastdfs文件
配置nginx
vim /usr/local/nginx/conf/nginxconf
在web中增加配置
启动
在已经安装过 Nginx 的服务器上安装配置 fastdfs-nginx-module 模块?我们直接进入 Nginx 的存放目录,进行配置后编译,就不需要执行最后安装make install这一步了,接着重启就行了。储存节点故障。
1、FastDFS的存储节点出现故障,可能会导致源文件丢失,这时需要及时维修或更换故障节点,并进行数据恢复。
2、客户端上传出现异常,可能会导致源文件未能正常上传到FastDFS服务器中。
3、FastDFS所在的存储空间已满,可能会导致上传的源文件被丢失,需要及时扩容存储空间,以防止数据丢失。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)