glusterFS文件系统与ftp以及java代码的结合
来源:互联网 发布:香港转口贸易数据 编辑:程序博客网 时间:2024/06/05 11:17
glusterFS文件系统与ftp以及java代码的结合
之前搭建了一个fastdfs的文件系统,领导说要搞一个glusterfs和ftp结合的,就又学了下glusterfs,感觉挺有用的,和大家分享一些细节。
新建虚拟机
新建虚拟机,这个我觉得不用介绍了,还是说一下吧^_^
1.你要有一个VMware或者其他可以创建虚拟机的软件,然后你要有一个linux系统的镜像,我用的是CentOS7,然后就是
(1)新建虚拟机
(2)选择典型
(3)选择镜像
(4)选择好安装目录(我一般是按照IP来),下一步就行
(5)开启你的虚拟机
(6)选择安装centos
这里默认是中间的选项,鼠标点一下会进入虚拟机,用上下键控制选项,选择第一行回车安装就行
(7)选择语言
(8)选择INSTALLATION DESTINATION
点进去,点一下DONE(左上角蓝色按钮),我没有修改其他的
(9)点击开始安装
出来后,等个几秒,begin installation就会变蓝,然后点击安装
(10)设置密码
在这里你可以一边安装一边给root用户设置密码,如果有需要可以在右边的链接进去添加用户
(11)等待安装完毕重启登录即可
(12)配置IP
虚拟机有三种网络连接方式,默认是NAT的,具体的IP配置方式你可以参考着面这个文档
http://blog.csdn.net/lsc476782158/article/details/51721909
glusterFS集群搭建
刚才我们简单了解了一下虚拟机的搭建,不会的可以多搜些资料看看。接下来我们就要进入正题,开始搭建glusterFS集群文件系统了,首先介绍一下我们要搭建的集群的组成:
glusterfs服务器节点:
接下来的东西是我跟一个大神的文档看的,就不装逼了,自己学吧,学完了再回来。
http://blog.csdn.net/phn_csdn/article/details/75153913?utm_source=debugrun&utm_medium=referral
ftp搭建
其实ftp我也是跟一个大神学的,我觉得我不应该装逼了,但是我还是把他的文档给大家看看。这个ftp装在客户端192.168.29.31就行。
(1)安装vsftpd组件 yum -y install vsftpd
(2)添加一个ftp用户 useradd ftpuser
(3)给ftp用户添加密码 passwd ftpuser
(4)关闭防火墙 systemctl stop firewalld.service
systemctl disable firewalld.service
(5)关闭匿名访问 vi /etc/vsftpd/vsftpd.conf
把anonymous_enable改成NO
(6)重启ftp服务 service vsftpd restart
(7)开启被动模式 vi /etc/vsftpd/vsftpd.conf
在最后加上两行
pasv_min_port=30000
pasv_max_port=30999
(8)设置开机启动vsftpd ftp 服务 chkconfig vsftpd on
java代码结合
理论上你的glusterFS文件系统搭建好了,你可以试试能不能访问你的客户端,然后往里面传文件有没有同步到三个服务端,客户端的目录是/opt/fgsmount,服务端的是/opt/gluster/data,如果可以同步那就没问题了,重启机器后要重新启动服务端gluster volume start models,这一点要稍微注意一下(当然你可以开机启动)。
然后就是和java代码结合了,废话不多说,直接看代码。
package com.xxxx;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import org.apache.commons.net.ftp.FTP;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPFile;import org.apache.commons.net.ftp.FTPReply;/** * ftp上传下载工具类 * <p>Title: FtpUtil</p> * <p>Description: </p> * @author * @date 2016年4月13日下午8:11:51 * @version 1.0 */public class FTPUtil { /** * Description: 向FTP服务器上传文件 * @param host FTP服务器hostname * @param port FTP服务器端口 * @param username FTP登录账号 * @param password FTP登录密码 * @param basePath FTP服务器基础目录 * @param filePath FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basePath+filePath * @param filename 上传到FTP服务器上的文件名 * @param input 输入流 * @return 成功返回true,否则返回false */ public static boolean uploadFile(String host, int port, String username, String password, String basePath, String filePath, String filename, InputStream input) { boolean result = false; FTPClient ftp = new FTPClient(); try { int reply; ftp.connect(host, port);// 连接FTP服务器 // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器 ftp.login(username, password);// 登录 reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); return result; } //切换到上传目录 if (!ftp.changeWorkingDirectory(basePath+filePath)) { //如果目录不存在创建目录 String[] dirs = filePath.split("/"); String tempPath = basePath; for (String dir : dirs) { if (null == dir || "".equals(dir)) continue; tempPath += "/" + dir; if (!ftp.changeWorkingDirectory(tempPath)) { if (!ftp.makeDirectory(tempPath)) { return result; } else { ftp.changeWorkingDirectory(tempPath); } } } } ftp.enterLocalPassiveMode(); //设置上传文件的类型为二进制类型 ftp.setFileType(FTP.BINARY_FILE_TYPE); //上传文件 if (!ftp.storeFile(filename, input)) { return result; } input.close(); ftp.logout(); result = true; } catch (IOException e) { e.printStackTrace(); } finally { if (ftp.isConnected()) { try { ftp.disconnect(); } catch (IOException ioe) { ioe.printStackTrace(); } } } return result; } /** * Description: 从FTP服务器下载文件 * @param host FTP服务器hostname * @param port FTP服务器端口 * @param username FTP登录账号 * @param password FTP登录密码 * @param remotePath FTP服务器上的相对路径 * @param fileName 要下载的文件名 * @param localPath 下载后保存到本地的路径 * @return */ public static boolean downloadFile(String host, int port, String username, String password, String remotePath, String fileName, String localPath) { boolean result = false; FTPClient ftp = new FTPClient(); try { int reply; ftp.connect(host, port); // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器 ftp.login(username, password);// 登录 reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); return result; } ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录 FTPFile[] fs = ftp.listFiles(); for (FTPFile ff : fs) { if (ff.getName().equals(fileName)) { File localFile = new File(localPath + "/" + ff.getName()); OutputStream is = new FileOutputStream(localFile); ftp.retrieveFile(ff.getName(), is); is.close(); } } ftp.logout(); result = true; } catch (IOException e) { e.printStackTrace(); } finally { if (ftp.isConnected()) { try { ftp.disconnect(); } catch (IOException ioe) { } } } return result; } public static void main(String[] args) { try { FileInputStream in=new FileInputStream(new File("E:\\1.jpg")); boolean flag = uploadFile("192.168.29.32", 21, "ftpuser", "ftpuser", "/opt/gfsmount","/test", "33.jpg", in); System.out.println(flag); } catch (FileNotFoundException e) { e.printStackTrace(); } }}
拷到你的工程里面,改成你的配置,执行就完了
最后再回到你的文件系统里看有没有传上去,看看其他节点有没有同步,当然ftp可以从文件夹,xftp这个方式去看,就方便很多。
到这里就基本上完成了,接下来就是在你的正式环境搭建你的文件系统了。
- glusterFS文件系统与ftp以及java代码的结合
- mysql与glusterfs结合使用的一点思路
- GlusterFs文件系统
- 【GlusterFS学习之一】:GlusterFS分布式文件系统的基本概念及搭建
- 阿里云 centos ftp搭建以及与phpstorm结合使用
- glusterfs的不足与缺点
- GlusterFS的安装与使用
- GlusterFS的安装与配置
- Glusterfs的安装与使用
- 【GlusterFS学习之五】:trashdir回收站目录只读权限以及白名单的设计与实现
- GlusterFS集群文件系统研究
- GlusterFS集群文件系统
- GlusterFS集群文件系统研究
- GlusterFS集群文件系统研究
- GlusterFS 集群文件系统
- GlusterFS集群文件系统研究
- GlusterFS集群文件系统研究
- GlusterFS集群文件系统研究
- Openstack使用官方ubuntu和Centos镜像
- 分析算法的时间复杂度
- maven 常用命令
- 文章标题
- [微信小程序]搜索功能实现,搜索框样式
- glusterFS文件系统与ftp以及java代码的结合
- Java 将String转Double、Double类型保留2位小数
- 欢迎使用CSDN-markdown编辑器
- HEXO搭建个人博客
- bfs\dfs hrbust 1143
- python操作redis
- JAVA之经典算法三
- word中如何将各行大量的回车符去掉,连成完整的段落?
- 【CSS.DIV】动态超链接