使用ECS挂在阿里云OSS存储

avatar 2019年12月12日22:47:31 评论 1,438 次浏览

简介

在工作中很多都使用了阿里云的服务,这里是在工作中遇到的问题记录一下,以便以后遇到同样的问题能够有所参考。下面是做的oss共享数据,我使用的场景是对于高可用的时候两个服务之间使用同一个数据,保证了数据的同步性,使用简单也相对比较安全。我搭建的环境是jumpserver高可用,你也可以选择在oss上存储wen的静态文件,也可以存储图片,视频或者服务日志等等。oss的好处就是成本低,安全可靠,可根据自己的服务场景选择不同的存储类型。下面是我从控制台进入oss的页面,先创建一个存储空间。

先在1处点击出现2的画面,Bucket名称就是创建的存储空间的名称(我们这里先定义名称问bucket-ops-tools,后面会用到),区域可以根据你服务的区域选择,可以实现内网通信降低成本,Endpoint是通过域名访问到你的存储空间的一个路径(我使用的是内网的域名:oss-cn-beijing-internal.aliyuncs.com)。存储类型有三种标准存储,低频访问,归类存储,如果用到生产环境中建议使用标准存储,以上创建后不能修改,除非删除重新创建。同城冗余存储根据自己需要是否开启,读写权限我这里是用的私有,因为只要内网访问,可以根据自己的场景选择。服务器加密,我这里不用,以为存储后的文件需要进行读取,实时日志是访问存储的日志,我这里就不开通朗,确定创建成功。

这是创建成功的存储可以根据自己需要设置绑定的域名文件管理等操作,可以自己看一下,不过这里需要注意一下概览里的访问域名,不同的网络环境访问的域名是不一样的,这里我选择的是内网域名,下面看一下我的实验。

准备环境

先在需要挂载的服务上安装依赖服务,依次执行。

[root@wulaoer_server01 ~]# yum install automake gcc-c++ git libcurl-devel libxml2-devel fuse-devel make openssl-devel fuse
[root@wulaoer_server02 ~]# yum install automake gcc-c++ git libcurl-devel libxml2-devel fuse-devel make openssl-devel fuse

安装OSS

阿里云在对象存储OSS帮助文档中的常用工具--ossfs下有对于客户端安装方法。参考链接:https://help.aliyun.com/document_detail/32196.html?spm=a2c4g.11186623.6.751.18ca65d3XrddvX

[root@wulaoer_server01 ~]# wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm
[root@wulaoer_server02 ~]# wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm
[root@wulaoer_server01 ~]# rpm -ivh ossfs_1.80.6_centos7.0_x86_64.rpm
[root@wulaoer_server02 ~]# rpm -ivh ossfs_1.80.6_centos7.0_x86_64.rpm

安装之后不能直接使用ossfs命令,需要设置一下环境。

[root@wulaoer_server01 ~]# ln -sf /usr/local/bin/ossfs /usr/bin/ossfs
[root@wulaoer_server02 ~]# ln -sf /usr/local/bin/ossfs /usr/bin/ossfs

在挂载的时候为了保证数据的安全性,需要使用一个有权限的用户AccessKey进行绑定一下,可以在自己登录阿里云账号之后点击头像有一个AccessKey管理创建一个AccessKey用户相当于访问阿里云的一个API,记录一下access-key-id(我们先定义为bucket_ops_tools_AccessKeyId)和access-key-secret(我们先定义为bucket_ops_tools_AccessKeySecret),加用创建的存储空间名字写到系统中,并赋予权限。

[root@wulaoer_server01 ~]# echo bucket-ops-tools:bucket_ops_tools_AccessKeyId:bucket_ops_tools_AccessKeySecret > /etc/passwd-ossfs
[root@wulaoer_server01 ~]# chmod 640 /etc/passwd-ossfs
[root@wulaoer_server02 ~]# echo bucket-ops-tools:bucket_ops_tools_AccessKeyId:bucket_ops_tools_AccessKeySecret > /etc/passwd-ossfs
[root@wulaoer_server02 ~]# chmod 640 /etc/passwd-ossfs

挂载OSSFS

接下来就可以直接在服务器上挂载ossfs了,挂载ossfs格式如下:

ossfs Bucket名称 本地路径 -ourl=访问域名

这里有几个参数需要了解一下:

-o allow_other  开机挂载oss,不需要修改/etc/fstab,避免挂载失败导致系统无法启动
-oumask=002		文件权限,默认是777
-o nonempty     避免挂载相同的路径,
-ouid=33 -ogid=33 挂载文件的用户和组id

下面是我的挂载方式

ossfs tope-prod-ops /tmp/test -ourl=*****.aliyuncs.com -o allow_other -oumask=002

卸载挂载

两种卸载方式都可以卸载

fusermount -u /tmp/test
umount /test1

验证

可以在任何一个服务挂载的本地目录下创建一个文件,在另一个服务器挂在的目录中是否存在,还有阿里云的oss页面看自己创建的空间中是否有创建的文件。也可以通过mount查看一下是否挂载成功。

mount | grep ossfs

开机自启动

这种挂载重启会取消挂载,这里尝试在fstab文件中增加挂载命令,并跳过扫描,重启挂载不能自动挂载。这里就写一个脚本,然后开机自启动

# vim /etc/init.d/ossfs
#!/bin/bash
#挂载oss


# chkconfig: 2345 90 10
# description: Activates/Deactivates ossfs configured to start at boot time.
ossfs tope-prod-ee-video-pgc-bj /apps/otts -ourl=http://oss-cn-beijing-internal.aliyuncs.com -oumask=022 -o allow_other

然后给ossfs文件赋予权限,然后加入开机自启动

# chmod a+x /etc/init.d/ossfs
# chkconfig ossfs on

 

总结

以下是在使用的过程中遇到的问题以及解决方法:

问题1:
# rpm -ivh ossfs_1.80.6_centos7.0_x86_64.rpm 
error: Failed dependencies:
		fuse >= 2.8.4 is needed by ossfs-1.80.6-1.x86_64
		fuse-libs >= 2.8.4 is needed by ossfs-1.80.6-1.x86_64

依赖相关服务,直接安装即可。

yum install automake gcc-c++ git libcurl-devel libxml2-devel fuse-devel make openssl-devel fuse
问题2:
bash: ossfs: command not found

解决方法:

ln -sf /usr/local/bin/ossfs /usr/bin/ossfs
问题3:
ossfs: could not determine how to establish security credentials.

解决方法:

echo echo bucket-ops-tools:bucket_ops_tools_AccessKeyId:bucket_ops_tools_AccessKeySecret > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs

以上就是对于挂载OSS存储的方法,安装以及总计。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: