简单地介绍Excel中的数组公式为进一步的研究和应用打下基础(excel数组公式)
986
2022-05-29
FastDFS部署
一、FastDFS tracker storage 的工作原理及流程
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS服务端有两个角色:-(tracker)和存储节点(storage)。-主要做调度工作,在访问上起负载均衡的作用。 存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key value pair)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。
-和存储节点都可以由一台或多台服务器构成。-和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中-中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。
为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。
当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。
FastDFS中的文件标识分为两个部分:卷名和文件名,二者缺一不可。
FastDFS file upload
上传文件交互过程:
1. client询问tracker上传到的storage,不需要附加参数;
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件上传。
FastDFS file download
下载文件交互过程:
1. client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件下载。
group0/M00/00/02/Cs8b8lFJIIyAH841AAAbpQt7xVI4715674
组名:group0 磁盘: M00 目录:00/02 文件名:Cs8b8lFJIIyAH841AAAbpQt7xVI4715674
文件名包含的信息: 采用Base64编码, 包含的字段包括 : 源storage server Ip 地址 文件创建时间 文件大小 文件CRC32效验码 随机数
需要说明的是,client为使用FastDFS服务的调用方,client也应该是一台服务器,它对tracker和storage的调用均为服务器间的调用。
二、FastDFS 同步机制说明
tracker server会在内存中保存storage分组及各个组下的storage server,并将连接过自己的storage server及其分组保存到文件中,以便下次重启服务时能直接从本地磁盘中获得storage相关信息。storage server会在内存中记录本组的所有服务器,并将服务器信息记录到文件中。tracker server和storage server之间相互同步storage server列表:
1. 如果一个组内增加了新的storage
server或者storage server的状态发生了改变,tracker server都会将storage server列表同步给该组内的所有storage server。以新增storage server为例,因为新加入的storage
server主动连接tracker server,tracker server发现有新的storage server加入,就会将该组内所有的storage server返回给新加入的storage server,并重新将该组的storage server列表返回给该组内的其他storage server;
2. 如果新增加一台tracker server,storage server连接该tracker server,发现该tracker server返回的本组storage server列表比本机记录的要少,就会将该tracker server上没有的storage server同步给该tracker server。同一组内的storage server之间是对等的,文件上传、删除等操作可以在任意一台storage server上进行。文件同步只在同组内的storage server之间进行,采用push方式,即源服务器同步给目标服务器。以文件上传为例,假设一个组内有3台storage server A、B和C,文件F上传到服务器B,由B将文件F同步到其余的两台服务器A和C。我们不妨把文件F上传到服务器B的操作为源头操作,在服务器B上的F文件为源头数据;文件F被同步到服务器A和C的操作为备份操作,在A和C上的F文件为备份数据。同步规则总结如下:
1. 只在本组内的storage server之间进行同步;
2. 源头数据才需要同步,备份数据不需要再次同步,否则就构成环路了;
3. 上述第二条规则有个例外,就是新增加一台storage server时,由已有的一台storage server将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器。storage server有7个状态,如下:
# FDFS_STORAGE_STATUS_INIT :初始化,尚未得到同步已有数据的源服务器
# FDFS_STORAGE_STATUS_WAIT_SYNC :等待同步,已得到同步已有数据的源服务器
# FDFS_STORAGE_STATUS_SYNCING :同步中
# FDFS_STORAGE_STATUS_DELETED :已删除,该服务器从本组中摘除(注:本状态的功能尚未实现)
# FDFS_STORAGE_STATUS_OFFLINE :离线
# FDFS_STORAGE_STATUS_ONLINE :在线,尚不能提供服务
# FDFS_STORAGE_STATUS_ACTIVE :在线,可以提供服务
当storage
server的状态为FDFS_STORAGE_STATUS_ONLINE时,当该storage server向tracker server发起一次heart beat时,tracker server将其状态更改为FDFS_STORAGE_STATUS_ACTIVE。
组内新增加一台storage server A时,由系统自动完成已有数据同步,处理逻辑如下:
1. storage server A连接tracker server,tracker server将storage server A的状态设置为FDFS_STORAGE_STATUS_INIT。storage server A询问追加同步的源服务器和追加同步截至时间点,如果该组内只有storage server A或该组内已成功上传的文件数为0,则没有数据需要同步,storage server A就可以提供在线服务,此时tracker将其状态设置为FDFS_STORAGE_STATUS_ONLINE,否则tracker server将其状态设置为FDFS_STORAGE_STATUS_WAIT_SYNC,进入第二步的处理;
2. 假设tracker server分配向storage server A同步已有数据的源storage server为B。同组的storage server和tracker server通讯得知新增了storage server A,将启动同步线程,并向tracker server询问向storage server A追加同步的源服务器和截至时间点。storage server B将把截至时间点之前的所有数据同步给storage server A;而其余的storage server从截至时间点之后进行正常同步,只把源头数据同步给storage server A。到了截至时间点之后,storage server B对storage server A的同步将由追加同步切换为正常同步,只同步源头数据;
3. storage server B向storage server A同步完所有数据,暂时没有数据要同步时,storage server B请求tracker server将storage server A的状态设置为FDFS_STORAGE_STATUS_ONLINE;
4 当storage server A向tracker server发起heart beat时,tracker server将其状态更改为FDFS_STORAGE_STATUS_ACTIVE。
三、部署
1.部署fastdfs
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
tar –zxvf V1.0.7
tar –zxvf V5.05
cp -r libfastcommon-1.0.7 /usr/local/libfastcommom
cd /usr/local/libfastcommom/
yum install gcc -y
./make.sh
./make.sh install
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
find / -name libfdfsclient.so
cp -r fastdfs-5.05/ /usr/local/fastdfs
cd /usr/local/fastdfs
./make.sh
./make.sh install
ll /etc/fdfs/
cd /etc/fdfs
2.配置文件设置
cp tracker.conf.sample tracker.conf
cp storage.conf.sample storage.conf
cp client.conf.sample client.conf
vim /etc/fdfs/tracker.conf (见附件1)
一般只需改动以下几个参数即可:
disabled=false #启用配置文件
port=22122 #设置tracker的端口号
base_path=/home/tracker/ #设置tracker的数据文件和日志目录(需预先创建)
http.server_port=8030 #设置http端口号
vim /etc/fdfs/ storage.conf (见附件2)
一般只需改动以下几个参数即可:
disabled=false #启用配置文件
group_name=group1#组名,根据实际情况修改
port=23000#设置storage的端口号
base_path=/fdfs/storage#设置storage的日志目录(需预先创建)
store_path_count=1#存储路径个数,需要和store_path个数匹配
store_path0=/fdfs/storage#存储路径
tracker_server=172.16.1.202:22122 #tracker服务器的IP地址和端口号
http.server_port=8080 #设置http端口号
3.启动
mkdir -p /home/fastdfs/tracker
启动tracker tracker.conf
fdfs_trackerd /etc/fdfs/tracker.conf
mkdir /home/fastdfs/storage
启动tracker storage.conf
fdfs_storaged /etc/fdfs/storage.conf
四、安装nginx及nginx插件
1.部署nginx插件
cd /usr/local/fastdfs/conf
cp http.conf /etc/fdfs/
cp mime.types /etc/fdfs/
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
vi fastdfs-nginx-module/src/config
第四行改为:
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
cp /root/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
vi /etc/fdfs/mod_fastdfs.conf (见附件3)
2.编译安装nginx
cd /root
tar -zxvf nginx-1.7.10.tar.gz
cd nginx-1.7.10
yum install gcc gcc-c++ pcre-devel zlib-devel openssl-devel -y
./configure --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-md5=/usr/lib --with-sha1=/usr/lib --with-http_gzip_static_module --add-module=/root/fastdfs-nginx-module/src&& make&&make install
vi /usr/local/nginx/conf/
修改端口号为8030(任意)
加入一组location
location ~/group[1-3]/M00{
root /home/fastdfs/data;
ngx_fastdfs_module;
}
cd /root
vi / nginx (见附件4)
chmod a+x nginx
cp nginx /etc/init.d
chkconfig --add nginx
chkconfig nginx on
service nginx start
netstat -antup |grep 8030
3.配置软连接
ln -s /home/fastdfs/storage/data /home/fastdfs/storage/data/M00
4.启动nginx
service nginx restart
tail -400f /usr/local/nginx/logs/error.log
五、测试
echo "hello ccit" >test.txt
/usr/bin/fdfs_test /etc/fdfs/client.conf upload test.txt
浏览器访问:
http://192.168.10.17:8030/group1/M00/00/00/wKgKEVgRURyAM-kKAAAAC-QpJeQ227.txt
六、常用命令
上传文件:/usr/local/bin/fdfs_upload_file
下载文件:/usr/local/bin/fdfs_download_file
删除文件:/usr/local/bin/fdfs_delete_file
启动、停止命令
启动:
fdfs_trackerd /etc/fdfs/tracker.conf
fdfs_storaged /etc/fdfs/storage.conf
停止:
ps -aux|grep fdfs
kill -9 进程号
华为云APP 云市场
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。