上传下载分布式部署FASTDFS安装与配置
2015-12-17 14:48
441 查看
FASTDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题
FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用
vmware
可以从官网上下载,也可以下下载破解版的,本测试采用的是vmware11
Linux系统采用的是Centos6.5
在创建虚拟机的时候可能会遇到Vt-x处于禁用状态,无法创建,这时需进入bios启动,将IntelVirtual
Technology开启即可。
选择NAT模式
窗口下方有子网ip192.168.128.0
子网掩码255.255.255.0
查看NAT设置的网关192.168.128.2
修改网络配置文件ifcfg-eth0
进入文件目录:
命令:cd/etc/sysconfig/sysconfig-scripts
编辑文件
vi ifcfg-eth0
加入:
IPADDR=192.168.128.10
//VMnet8同网段即可
NETMASK=255.255.255.0
//子网掩码
GATEWAY=192.168.128.2
//网关
ARPCHECK=no
更改:
ONBOOT=yes
//激活网卡
BOOTPROTO=static
//static静态dhcp动态none
增加dns
vi /etc/resolv.conf
添加
nameserver
8.8.8.8
nameserver
8.8.4.4
修改主机名
vi /etc/sysconfig/network
修改hostname为你心仪的主机名
vi /etc/hosts
修改127.0.0.1后的localhost.localdomain为主机名
重启网卡:
命令:service
network restart
注:centos6.5网卡默认开启了ARPCHECK,需要加入ARPCHECK=no,否则会报:
Determining if ip address192.168.128.10 is already in use
解压libevent-2.0.22-stable.tar.gz
tar -zxvf libevent-2.022-stable.tar.gz
//解压
mv libevent-2.022-stable
libevent
//重命名
编译安装libevent
cd libevent
//进入libevent主目录
./configure -prefix=/usr
//生成makefile文件为编译做准bei
发现错Error: no acceptable C compiler
found in $PATH,这是没有安装gcc套件
yuminstall gcc
//安装gcc套件
安装gcc时候发现有报错Loaded
plugins: fastestmirror Loading mirror speeds fromcached hostfile,这是因为yum开启了镜像下载,fastestmirror插件会根据响应速度来判断下载地址,因为地域等原因,下载不下来。解决方法:
方法一:yum--disableplugin=fastestmirror
update
方法二:vi/etc/yum/pluginconf.d/fastestmirror.conf
更改为enable=0
再次运行yum–y
install gcc,问题解决,开始下载,直至complete
回过头来在次运行
./configure
-prefix=/usr //可以不指定prefix,
默认安径/usr/local/bin,
/usr/local/lib
make && make install && make clean
//编译
安装删除临时文件
ln -s /usr/lib/libevent*
/lib64/ //创建安装文件的软连接
将fastDFS-4.06.tar.gz
解压,并进入解压后的目录,执行编译
安装
./make.sh
//编译
编译的时候需要gcc
,perl脚本,gcc前文已安装
,此时还需要安装perl
yum–y install perl
./make.sh install
//安装
,路径如下图
如果没有报错,则应该是安装成功了,这是进入/etc/fdfs
就可以看到配置文件了,如下图
克隆操作需要先关闭虚拟机,
在vmware我的计算机区域右键虚拟机,点击管理,点击下一步,下一步,选择完全克隆,等待完成
克隆完成后需要稍加稍加配置才能使用,因为其mac地址跟被克隆的机器一样。
修改mac地址:
vi/etc/udev/rules.d/70-persistent-net.rules //编辑网卡设备
内容如下:
# PCIdevice0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="00:0c:29:16:f4:f0",ATTR{type}=="1",KERNEL=="eth*", NAME="eth0"
# PCI device0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*", ATTR{address}=="00:0c:29:52:45:97",ATTR{type}=="1",KERNEL=="eth*", NAME="eth1"
注释第一个网卡,放开第二个网卡,并修改eth1位eth0,并记录mac地址(ATTR{address})
修改网络配置信息
Vi
/etc/sysconfig/network-scripts/ifcfg-eth0
修改mac地址为记录的mac地址,ipaddr修改为同网段的ip
保存
注:1和2的步骤还可以这样做
删除步骤一中的文件70-persistent-net.rules,删除步骤2中ifcfg-eth0的HADDR配置 重启机
上面的配置,无论是配置tracker,还是storage,都是一样的,区别的就是接下来的配置
vi /etc/fdfs/tracker.conf
//编辑tracker的配置文件
//上传文件的信息和日志信息存放目录,需提前建好
,其他配置自行配置
/etc/fdfs/tracker.conf
其他命令:
停止tracker命令:/usr/local/bin/stop.sh
/usr/local/bin/fdfs_trackerd
重启tracker命令:/usr/local/bin/restart.sh
/usr/local/bin/fdfs_trackerd
删除一个storage节点:
/usr/local/bin/fdfs_monitor/etc/fdfs/storage.conf delete group1
192.168.128.221
//查看端口号及监听情况
端口默认22122
如下图:
vi/etc/sysconfig/iptables
添加(不同linux命令稍有不同,参考iptables中命令):
-AINPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
/etc/rc.d/rc.local
//编辑配置文件
加入命令:
/usr/local/bin/fdfs_trackerd
/etc/fdfs/tracker.conf restart
这样,就完成开机即启动tracker服务端了
//编辑配置文件
配置信息:
disabled=false //启用配置文件
false启用;true不启用
group_name=group1
//组名,根据实际情况修改
多台服务器可配置不同的组,各组之间是独立的,互不影响
port=23000
//设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
base_path=/opt/fastdfs_storage_info //设置storage的日志目录(需预先创建)
store_path_count=1
//存储路径个数,需要和下面store_path*个数匹配
store_path0=/opt/fastdfs_storage_data //存储路径
tracker_server=192.168.224.20:22122 //tracker服务器的IP端口号,可配置多个tracker_server
http.server_port=8888 //storage
端口号
保存修改
更对配置信息查看配置文件的注释信息
/etc/fdfs/storage.conf
//启动
注:此时可能会出现光标一直顿住,没有切换到新的命令行,这是没启动成功
有可能是tracker端防火墙没有设置22122端口可访问的原因,或者直接关闭防火墙:
serviceiptables stop(即时生效,重启失效)
chkconfig iptables off (重启机器后生效)
/etc/fdfs/storage.conf
//将打印注册信息
信息特别多,不再展示
//编辑配置文件
加入命令:
/usr/local/bin/fdfs_storaged
/etc/fdfs/storage.conf
restart
这样,就完成开机即启动storage服务端了
注:如果tracker服务端的防火墙没有关闭,或者没设置22122端口可访问,就加入到开机启动,下次开机可能会导致此服务器启动不起来。
/etc/fdfs/client.conf
base_path=/opt/fastdfs_tracker
//存放路径
tracker_server=192.168.128.220:22122
//tracker服务器IP地址和端口号
http.tracker_server_port=8080
#include
http.conf //双#变成单#
/usr/local/bin/fdfs_test
/etc/fdfs/client.conf
upload
/usr/test.txt
返回如下信息则上传成功:
可以在/opt/fastdfs_storage_datam(此路径为配置storage.conf时候配置的)目录下找到上传的文件。因为fastfds4.05以后删除了内置的web
http服务,所以通过日志中的file url 用浏览器访问了
https://github.com/happyfish100/fastdfs-client-java
下载并解压后
修改src目录下的配置文件fdfs_client.conf:
connect_timeout= 2
network_timeout= 30
charset =utf-8
//设置编码格式
http.tracker_http_port= 8080
//调度服务器(tracker)的端口号
http.anti_steal_token= no
//是否生成token
http.secret_key= FastDFS1234567890
//如果生成token,则根据此key去生成
tracker_server= 192.168.128.220:22122
//tracker的ip和端口号
在命令窗口输入ant
,将源码的src目录下的build.xml拖至命令行,回车即可(前提是已经设置了ant的环境变量)
将src/build目录下打包的jar包拷贝至工程lib目录
注:源码中的test目录下的java文件为原作者的测试代码,可不必打包,需修改build.xml。
newTrackerClient();
TrackerServer trackerServer =tracker.getConnection();
StorageServer storageServer = null;
StorageClient client =
new StorageClient(trackerServer,storageServer);
NameValuePair[] meta_list = new NameValuePair[2];
//为上传文件设置元数据信息
meta_list[0]= new
NameValuePair("width",
"800");
meta_list[1] = new NameValuePair("heigth",
"600");
byte[] file_buff = "this is atest".getBytes(ClientGlobal.g_charset);
results = client.upload_file(file_buff,"txt",
meta_list); //上传
文件
int no=
client.set_metadata(group_name,remote_filename,meta_list,ProtoCommon.STORAGE_SET_METADATA_FLAG_MERGE);
String group_name = results[0];
String remote_filename = results[1];
file_buff = client.download_file(group_name,
remote_filename); //下载文件
int errno = client.delete_file(group_name,remote_filename);
//删除服务器文件
更详细的java
API请参考下载的源码和test测试目录下的测试代码
FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用
Linux虚拟机安装
下载VMWARE:vmware
可以从官网上下载,也可以下下载破解版的,本测试采用的是vmware11
Linux系统采用的是Centos6.5
在创建虚拟机的时候可能会遇到Vt-x处于禁用状态,无法创建,这时需进入bios启动,将IntelVirtual
Technology开启即可。
配置NAT静态网
打开Vmware的编辑-虚拟网路编辑器选择NAT模式
窗口下方有子网ip192.168.128.0
子网掩码255.255.255.0
查看NAT设置的网关192.168.128.2
修改网络配置文件ifcfg-eth0
进入文件目录:
命令:cd/etc/sysconfig/sysconfig-scripts
编辑文件
vi ifcfg-eth0
加入:
IPADDR=192.168.128.10
//VMnet8同网段即可
NETMASK=255.255.255.0
//子网掩码
GATEWAY=192.168.128.2
//网关
ARPCHECK=no
更改:
ONBOOT=yes
//激活网卡
BOOTPROTO=static
//static静态dhcp动态none
增加dns
vi /etc/resolv.conf
添加
nameserver
8.8.8.8
nameserver
8.8.4.4
修改主机名
vi /etc/sysconfig/network
修改hostname为你心仪的主机名
vi /etc/hosts
修改127.0.0.1后的localhost.localdomain为主机名
重启网卡:
命令:service
network restart
注:centos6.5网卡默认开启了ARPCHECK,需要加入ARPCHECK=no,否则会报:
Determining if ip address192.168.128.10 is already in use
安装fastdfs
安装libevent
因为fastdfs中引用了libevent的类库,通过ssh客户端将libevent安装包传到虚拟机/usr目录下解压libevent-2.0.22-stable.tar.gz
tar -zxvf libevent-2.022-stable.tar.gz
//解压
mv libevent-2.022-stable
libevent
//重命名
编译安装libevent
cd libevent
//进入libevent主目录
./configure -prefix=/usr
//生成makefile文件为编译做准bei
发现错Error: no acceptable C compiler
found in $PATH,这是没有安装gcc套件
yuminstall gcc
//安装gcc套件
安装gcc时候发现有报错Loaded
plugins: fastestmirror Loading mirror speeds fromcached hostfile,这是因为yum开启了镜像下载,fastestmirror插件会根据响应速度来判断下载地址,因为地域等原因,下载不下来。解决方法:
方法一:yum--disableplugin=fastestmirror
update
方法二:vi/etc/yum/pluginconf.d/fastestmirror.conf
更改为enable=0
再次运行yum–y
install gcc,问题解决,开始下载,直至complete
回过头来在次运行
./configure
-prefix=/usr //可以不指定prefix,
默认安径/usr/local/bin,
/usr/local/lib
make && make install && make clean
//编译
安装删除临时文件
ln -s /usr/lib/libevent*
/lib64/ //创建安装文件的软连接
安装fastDFs
编译安装fastDFS将fastDFS-4.06.tar.gz
解压,并进入解压后的目录,执行编译
安装
./make.sh
//编译
编译的时候需要gcc
,perl脚本,gcc前文已安装
,此时还需要安装perl
yum–y install perl
./make.sh install
//安装
,路径如下图
如果没有报错,则应该是安装成功了,这是进入/etc/fdfs
就可以看到配置文件了,如下图
克隆虚拟机
因为分布式部署,需要多台虚拟机,而如果在从头开始创建虚拟机的话,无疑是将上述的安装步骤再多做一次,而且,像perl,gcc等又需要下载编译安装,无疑是没必要的,而且,上面安装配置在每台机器上都一样,所以,就需要将上述配置的虚拟机克隆多份,用来做storage克隆操作需要先关闭虚拟机,
在vmware我的计算机区域右键虚拟机,点击管理,点击下一步,下一步,选择完全克隆,等待完成
克隆完成后需要稍加稍加配置才能使用,因为其mac地址跟被克隆的机器一样。
修改mac地址:
vi/etc/udev/rules.d/70-persistent-net.rules //编辑网卡设备
内容如下:
# PCIdevice0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="00:0c:29:16:f4:f0",ATTR{type}=="1",KERNEL=="eth*", NAME="eth0"
# PCI device0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*", ATTR{address}=="00:0c:29:52:45:97",ATTR{type}=="1",KERNEL=="eth*", NAME="eth1"
注释第一个网卡,放开第二个网卡,并修改eth1位eth0,并记录mac地址(ATTR{address})
修改网络配置信息
Vi
/etc/sysconfig/network-scripts/ifcfg-eth0
修改mac地址为记录的mac地址,ipaddr修改为同网段的ip
保存
注:1和2的步骤还可以这样做
删除步骤一中的文件70-persistent-net.rules,删除步骤2中ifcfg-eth0的HADDR配置 重启机
上面的配置,无论是配置tracker,还是storage,都是一样的,区别的就是接下来的配置
配置Tracker
编辑tracker配置:vi /etc/fdfs/tracker.conf
//编辑tracker的配置文件
修改base_path:
base_path=/opt/fastdfs_tracker//上传文件的信息和日志信息存放目录,需提前建好
,其他配置自行配置
启动taracker
/usr/local/bin/fdfs_trackerd/etc/fdfs/tracker.conf
其他命令:
停止tracker命令:/usr/local/bin/stop.sh
/usr/local/bin/fdfs_trackerd
重启tracker命令:/usr/local/bin/restart.sh
/usr/local/bin/fdfs_trackerd
删除一个storage节点:
/usr/local/bin/fdfs_monitor/etc/fdfs/storage.conf delete group1
192.168.128.221
查看tracker启动成功与否:
netstat –unltp|grep fdfs//查看端口号及监听情况
端口默认22122
如下图:
查看日志信息:
tail-100f /opt/fastdfs_tracker/logs/trackerd.log配置防火墙设置端口22122可访问
tracker.conf配置文件的默认端口为22122,需要将此端口设置为可访问vi/etc/sysconfig/iptables
添加(不同linux命令稍有不同,参考iptables中命令):
-AINPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
将服务加入到开机启动
vi/etc/rc.d/rc.local
//编辑配置文件
加入命令:
/usr/local/bin/fdfs_trackerd
/etc/fdfs/tracker.conf restart
这样,就完成开机即启动tracker服务端了
配置服务器Storag
配置storage.conf
vi /etc/fdfs/storage.conf//编辑配置文件
配置信息:
disabled=false //启用配置文件
false启用;true不启用
group_name=group1
//组名,根据实际情况修改
多台服务器可配置不同的组,各组之间是独立的,互不影响
port=23000
//设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
base_path=/opt/fastdfs_storage_info //设置storage的日志目录(需预先创建)
store_path_count=1
//存储路径个数,需要和下面store_path*个数匹配
store_path0=/opt/fastdfs_storage_data //存储路径
tracker_server=192.168.224.20:22122 //tracker服务器的IP端口号,可配置多个tracker_server
http.server_port=8888 //storage
端口号
保存修改
更对配置信息查看配置文件的注释信息
启动storag
/usr/local/bin/fdfs_storaged/etc/fdfs/storage.conf
//启动
注:此时可能会出现光标一直顿住,没有切换到新的命令行,这是没启动成功
有可能是tracker端防火墙没有设置22122端口可访问的原因,或者直接关闭防火墙:
serviceiptables stop(即时生效,重启失效)
chkconfig iptables off (重启机器后生效)
检查storage是否注册到tracker中
/usr/local/bin/fdfs_monitor/etc/fdfs/storage.conf
//将打印注册信息
信息特别多,不再展示
将storage服务加入到开机启动
vi /etc/rc.d/rc.local//编辑配置文件
加入命令:
/usr/local/bin/fdfs_storaged
/etc/fdfs/storage.conf
restart
这样,就完成开机即启动storage服务端了
注:如果tracker服务端的防火墙没有关闭,或者没设置22122端口可访问,就加入到开机启动,下次开机可能会导致此服务器启动不起来。
测试上传文件
本案例直接在tracker服务端做测试(也可以创建一个虚拟机做client端)配置client.conf
vi/etc/fdfs/client.conf
base_path=/opt/fastdfs_tracker
//存放路径
tracker_server=192.168.128.220:22122
//tracker服务器IP地址和端口号
http.tracker_server_port=8080
#include
http.conf //双#变成单#
测试上传
在/usr下新建test.txt文件(自己随意)/usr/local/bin/fdfs_test
/etc/fdfs/client.conf
upload
/usr/test.txt
返回如下信息则上传成功:
可以在/opt/fastdfs_storage_datam(此路径为配置storage.conf时候配置的)目录下找到上传的文件。因为fastfds4.05以后删除了内置的web
http服务,所以通过日志中的file url 用浏览器访问了
fastdfs-client-java测试
下载源码
源码下载地址:https://github.com/happyfish100/fastdfs-client-java
下载并解压后
修改src目录下的配置文件fdfs_client.conf:
connect_timeout= 2
network_timeout= 30
charset =utf-8
//设置编码格式
http.tracker_http_port= 8080
//调度服务器(tracker)的端口号
http.anti_steal_token= no
//是否生成token
http.secret_key= FastDFS1234567890
//如果生成token,则根据此key去生成
tracker_server= 192.168.128.220:22122
//tracker的ip和端口号
编译源码
设置完成后编译源码成jar文件在命令窗口输入ant
,将源码的src目录下的build.xml拖至命令行,回车即可(前提是已经设置了ant的环境变量)
将src/build目录下打包的jar包拷贝至工程lib目录
注:源码中的test目录下的java文件为原作者的测试代码,可不必打包,需修改build.xml。
测试上传下载
TrackerClient tracker =newTrackerClient();
TrackerServer trackerServer =tracker.getConnection();
StorageServer storageServer = null;
StorageClient client =
new StorageClient(trackerServer,storageServer);
NameValuePair[] meta_list = new NameValuePair[2];
//为上传文件设置元数据信息
meta_list[0]= new
NameValuePair("width",
"800");
meta_list[1] = new NameValuePair("heigth",
"600");
byte[] file_buff = "this is atest".getBytes(ClientGlobal.g_charset);
results = client.upload_file(file_buff,"txt",
meta_list); //上传
文件
int no=
client.set_metadata(group_name,remote_filename,meta_list,ProtoCommon.STORAGE_SET_METADATA_FLAG_MERGE);
String group_name = results[0];
String remote_filename = results[1];
file_buff = client.download_file(group_name,
remote_filename); //下载文件
int errno = client.delete_file(group_name,remote_filename);
//删除服务器文件
更详细的java
API请参考下载的源码和test测试目录下的测试代码
相关文章推荐
- 还原openstack配置文件的方法
- 【转载】javaAgent 参数
- java中poi进行execl导出
- C语言实现C到C++的注释转换
- 对于java中作用域
- Android sqlite版本更新大致方案
- 用jmeter测试impala
- 单例模式
- Linux PAM
- adb logcat 用法和举例
- 从网络解析数据时遇到的问题
- 为什么EL表达式能访问struts2的值栈
- 自定义导航栏,系统导航栏一堆bug
- redis cluster 添加 删除 重分配 节点
- Eclipse和PyDev搭建完美Python开发环境(Windows篇)
- connect-examples
- 利用Python进行数据分析——准备工作篇
- Linux下安装Sublime Text3及其破解
- 我的工具太少了-百度地图定位功能!
- Redis入门之Redis 安装超详细文档