详情页标题前

腾讯云对象存储使用自建集群部署

详情页1

本文主要介绍如何规范化地在单机、集群以及腾讯云 EMR 集群(暂未集成支持 GooseFS 的版本)中部署、配置以及运行 GooseFS。

部署环境要求

硬件环境

目前 GooseFS 支持主流 x86/x64 架构的 Linux/MacOS 运行环境(注意:MacOS M1处理器未验证支持)。详细的运行节点配置如下:

Master 节点

CPU:工作主频1GHz 及以上,考虑到 Master 需要处理量大,建议生产环境使用多核架构处理器。物理内存:1GB 及以上,生产环境建议使用8GB 以上的物理内存配置。磁盘:20GB 及以上,建议生产环境配备高性能的 NVME SSD 盘作为元数据缓存盘(RocksDB 模式)。

Worker 节点

CPU:工作主频1GHz 及以上,考虑到 Worker 节点也需要处理大量的并发请求,同样建议生产环境使用多核架构处理器。物理内存:2GB 及以上,生产环境建议根据性能需求选用合适的物理内存配置。例如,生产环境中需要将大量的数据块缓存到 Worker 节点的内存中或是采用 MEM + SSD/HDD 的混合存储时,需要根据实际可能会缓存到内存中的数据量来配备物理内存。无论使用何种缓存模式,生产环境都建议 Worker 节点配备16GB 及以上的物理内存。磁盘:20GB 及以上 SSD/HDD 盘,建议根据实际生产环境中所需要预热缓存的数据量大小来估计每个 Worker 节点所需配置的磁盘空间。另外,为了更好的性能体验,建议配备采用 NVME 接口的 SSD 盘作为 Worker 节点的数据盘。

软件环境

Red Hat Enterprise Linux 5.5+、Ubuntu Linux 12.04 LTS+(不使用批量部署时可以支持)、CentOS 7.4+以及 TLinux 2.x(Tencent Linux 2.x),基于 Intel 架构 MacOS 10.8.3 以上版本。腾讯云 CVM 用户推荐使用 CentOS 7.4、Tencent(TLinux 2.x)或 TencentOS Server 2.4 版本的操作系统。OpenJDK 1.8/Oracle JDK 1.8,需要注意的是,未验证支持 JDK 1.9 及以上版本。支持 SSH 工具集(包括 SSH 和 SCP 工具)、Expect Shell(使用批量部署时需要)工具以及 Yum 包管理工具。

集群网络环境

Master/Worker 节点之间外网或内网互通。使用批量部署时,要求 Master 能够正常访问外网软件源,或正确配置包管理系统的内网软件源。集群能够通过外网或内网访问到 COS 存储桶或者 CHDFS 文件系统。

安全组与用户权限要求

一般情况,GooseFS 建议用户使用专用的 Linux 账户部署运行 GooseFS, 例如在自建集群和 EMR 环境中,可以统一使用 hadoop 用户来部署运行 GooseFS。在批量部署中,则需要补充以下用户能力和权限:具备切换到 root 或使用 sudo 权限的能力;部署运行账户具备读写安装目录的权限;Master 节点具备 SSH 登录到集群中所有 Worker 节点的权限;集群中对应的节点角色需要放开对应的端口:Master(9200和9201)、Worker(9203和9204)、Job Master(9205、9206和9207)、Job Worker(9208、9209和9210)、Proxy(9211)以及 LogServer(9212)。

单机模式部署运行(伪分布式架构)

伪分布式架构部署主要适用于体验和调试 GooseFS,初级用户可以在自己的 Linux 或 Mac 系统主机上快速体验和调试 GooseFS。

部署

1. 首先 下载 GooseFS 的二进制分发包2. 分发包下载后解压,进入到 GooseFS 的目录中,执行如下操作:通过拷贝 conf/goosefs-site.properties.ai-template 创建 conf/goosefs-site.properties 配置文件:

 $ cp conf/goosefs-site.properties.ai-template conf/goosefs-site.properties

或者通过拷贝 conf/goosefs-site.properties.bigdata-template 创建 conf/goosefs-site.properties 配置文件:

 $ cp conf/goosefs-site.properties.bigdata-template conf/goosefs-site.properties

在 conf/goosefs-site.properties 配置文件中设置 goosefs.master.hostnamelocalhost在 conf/goosefs-site.properties 配置文件中设置 goosefs.master.mount.table.root.ufs 为本地文件系统中的目录,例如:/tmp 或是 /data/goosefs 等。建议配置 localhost 的 SSH 免密登录,否则格式化和启动等操作,需要输入 localhost 的登录密码。

运行

执行如下命令,就可以完成挂载一个 RamFS 文件系统:

$ ./bin/goosefs-mount.sh SudoMount

同样,也可以不执行上面的命令,而直接在启动 GooseFS 集群时挂载:

$ ./bin/goosefs-start.sh local SudoMount

当启动后,使用 jps 命令,能够看到伪分布式模式下,GooseFS 的所有进程:

$ jps35990 Jps35832 GooseFSSecondaryMaster35736 GooseFSMaster35881 GooseFSWorker35834 GooseFSJobMaster35883 GooseFSJobWorker35885 GooseFSProxy

然后就可以使用 goosefs 命令行,执行 namespace、fileSystem、job 以及 table 的各项操作了。例如,上传一个本地文件到 GooseFS 中,并且列出当前 GooseFS 中根目录下的文件和目录:

$ goosefs fs copyFromLocal test.txt /Copied file:///Users/goosefs/test.txt to /
$ goosefs fs ls /-rw-r--r-- goosefs staff 0 PERSISTED 04-28-2021 04:00:35:156 100% /test.txt

GooseFS 的命令行为用户提供了管理和访问 GooseFS 所有命令行接口,包括命名空间(namespace)、表(table)、作业(job)以及常用的文件系统(fs)操作等,具体可参考我们的官方文档或使用 goosefs -h 命令行参数获得详细帮助信息。

集群模式部署运行

集群部署运行主要针对用户自建 IDC 集群的生产环境或尚未集成 GooseFS 的腾讯云 EMR 生产环境,这里又具体分为 Standalone 架构部署与高可用(HA)架构部署。GooseFS 在 scripts 目录下提供了批量配置 SSH 免密登录以及批量安装部署 GooseFS 的脚本工具,可供用户方便快捷地完成 GooseFS 大规模集群的安装部署。用户可自检前一章节的部署环境要求中的批量部署条件,灵活地选择是否可以执行批量部署。

批量部署工具介绍

GooseFS 在 scripts 目录下提供了批量配置 SSH 免密登录以及批量部署安装 GooseFS 的工具化脚本,用户在满足执行条件的前提下,可按照如下步骤完成批量部署任务:进入GooseFS解压目录,cd ${GOOSEFS_HOME}配置 conf/mastersconf/workers 中的主机名或 IP 地址。然后进入到 scripts 目录中,认真填写 commons.sh 这一脚本文件中的 SCRIPT_EXEC_USERSCRIPT_EXEC_PASSWORD。再切换到 root 账户或使用 sudo 身份执行 config_ssh.sh 完成整个集群的免密登录配置。免密配置完成后,可以执行 validate_env.sh 工具,校验整个集群配置状态。创建配置文件目录软连接,ln -s conf ~/.goosefs最后执行 goosefs copy .goosefs copy ~/.goosefs 将 goosefs 二进制包和配置文件分发到所有的节点。在整个部署流程都成功完成以后,可以执行 ./bin/goosefs-start.sh all SudoMount 来启动运行整个集群。默认配置下,所有的运行日志都会记录到 ${GOOSEFS_HOME}/logs 下。

Standalone 架构部署

Standalone 架构采用的是单 Master 节点,多 Worker 节点的集群部署架构。具体可参考如下步骤部署运行:1. 下载 GooseFS 的二进制分发包2. 使用 tar zxvf goosefs-x.x.x-bin.tar.gz 命令解压到安装路径后。可参见批量部署工具的介绍配置和执行集群的批量部署,也可以继续参考下文详细地手动部署流程。(1)从 conf 目录下拷贝 template 文件创建配置文件:

$ cp conf/goosefs-site.properties.template conf/goosefs-site.properties

(2)在 goosefs-site.properties 配置文件中指定如下配置:

goosefs.master.hostname=goosefs.master.mount.table.root.ufs=

其中,goosefs.master.hostname 设置为单 master 节点的 hostname 或 ip。goosefs.master.mount.table.root.ufs 则指定 GooseFS 根目录所挂载的底层文件系统(UFS)路径URI。注意这个 URI 必须保证 Master 和 Worker 节点都能访问到,因此不支持本地目录。例如,您可以挂载一个 COS 路径为 GooseFS 根路径:goosefs.master.mount.table.root.ufs=cosn://bucket-1250000000/goosefs/masters 配置文件中指定单 Master 节点的 hostname 或 ip,例如:

# The multi-master Zookeeper HA mode requires that all the masters can access# the same journal through a shared medium (e.g. HDFS or NFS).# localhostcvm1.compute-1.myqcloud.com

workers 配置文件中指定所有 Worker 节点的 host 或 ip,例如:

# An GooseFS Worker will be started on each of the machines listed below.# localhostcvm2.compute-2.myqcloud.comcvm3.compute-3.myqcloud.com

待所有配置都设置完毕后,执行 ./bin/goosefs copyDir conf/ 就可以将配置同步到所有节点。最后执行 ./bin/goosefs-start.sh all 就可以启动 GooseFS 集群。

高可用架构部署

单 Master 节点的 Standalone 架构容易出现单点问题,因此,实际生产环境建议部署多 Master 节点来获得高可用的系统架构。多个 Master 节点中只有一个会作为主(Leader)节点对外提供服务,其他的备(Standby)节点通过同步共享日志(Journal)来保持与主节点相同的文件系统状态。当主节点故障宕机后,会从当前的备节点中自动选择一个接替主节点继续对外提供服务,这样就消除了系统的单点故障,实现了整体高可用架构。目前 GooseFS 支持基于 Raft 日志和 Zookeeper 两种方式来实现主备节点状态的强一致性。下面将会针对这两种部署方式分别进行介绍。

基于 Raft 嵌入式日志的高可用部署配置

首先依据配置模板创建配置文件:

$ cp conf/goosefs-site.properties.template conf/goosefs-site.properties
goosefs.master.mount.table.root.ufs=goosefs.master.embedded.journal.addresses=

说明上述配置选项中,说明如下:goosefs.master.mount.table.root.ufs 则设置为挂载到 GooseFS 根目录的底层存储 URI。goosefs.master.embedded.journal.addresses 则设置为所有备节点的 ip:embedded_journal_porthost:embedded_journal_port。其中,embedded_journal_port 默认为9202。例如:192.168.1.1:9202,192.168.1.2:9202,192.168.1.3:9202。基于 Raft 嵌入式日志的部署方案依赖于 copycat 的 Leader 选举机制。因此,Raft 的 HA 部署架构不可与 Zookeeper 相互混用。在完成所有配置以后,同样使用如下命令同步所有配置:

$ ./bin/goosefs copyDir conf/

最后,完成格式化以后,即可启动 GooseFS 集群:

$ ./bin/goosefs format
$ ./bin/goosefs-start.sh all

如果提示权限不足,则尝试如下方式重启:

$ ./bin/goosefs-stop.sh all$ ./bin/goosefs-start.sh all SudoMount

使用如下命令可查看当前的主(Leader)节点:

$ ./bin/goosefs fs leader

也可以使用如下命令查看集群状态:

$ ./bin/goosefs fsadmin report

基于 Zookeeper 的共享日志部署配置

配置 Zookeeper 服务搭建 GooseFS 的高可用架构需要满足如下条件:Zookeeper 集群,GooseFS Master 使用 Zookeeper 进行 Leader 选取,GooseFS 的客户端和 Worker 节点则通过 Zookeeper 查询主 Master 节点;高可用强一致的共享存储系统,并且保证所有 GooseFS 的 Master 节点均可以访问到。主 Master 节点会将日志写入到该存储系统上,备(Standby)节点则会不断地从共享存储系统上读取日志,并且重放来保持与主节点的状态一致性。一般情况,该共享存储系统,推荐设置为 HDFS 或 COS。例如,hdfs://10.0.0.1:9000/goosefs/journalcosn://bucket-1250000000/journal配置如下:

goosefs.zookeeper.enabled=truegoosefs.zookeeper.address=goosefs.master.journal.type=UFSgoosefs.master.journal.folder=

需要注意的是,ZK 模式的 JOURNAL_URI 必须是共享存储系统的 URI。然后使用 ./bin/goosefs copyDir conf/ 将配置同步分发到集群中的所有节点。最后启动集群 ./bin/goosefs-start.sh all 即可。

GooseFS 的进程列表

当执行 goosefs-start.sh all 脚本并启动 GooseFS 后,集群将包含如下进程:

进程 描述
GooseFSMaster 默认 RPC 端口为9200,Web 端口为9201
GooseFSWorker 默认 RPC 端口为9203,Web 端口为9204
GooseFSJobMaster 默认 RPC 端口为9205,Web 端口为9206
GooseFSProxy 默认 Web 端口为9211
GooseFSJobWorker 默认 RPC 端口为9208,Web 端口为9210



对象存储官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/144875.html

(0)
上一篇 2023年12月9日 上午1:52
下一篇 2023年12月9日 上午1:53
详情页2

相关推荐

  • 腾讯云云点播关于云点播播放频道功能正式上线公告

    为满足用户以直播的形式观看点播视频,腾讯云点播团队正式推出 播放频道 功能。播放频道支持包含一个或多个点播视频。在频道指定的启播时间后,用户以直播的形式观看频道中的视频。播放过程中,无法快进和暂停,频道中有多个视频时,按顺序依次播放,无需等待缓冲,提供类直播电视的无缝观看体验。云点播(VOD)服务将于 北京时间2023年06月09日00:00:00起 新增 …

    腾讯云 2023年12月9日
  • 腾讯云云点播音视频内容分析

    视频内容分析,即借助 AI 对音视频内容进行智能分析,是一种离线任务。使用音视频内容分析,可以对视频分类、打标签及截取封面等给出智能建议,帮助视频平台准确高效地管理视频。音视频内容分析包括以下功能: 功能名称 说明 智能分类 对视频所属的分类给出建议,目前有十余个类别,包括:新闻、娱乐、游戏、科技、美食、体育、旅行、动漫、舞蹈、音乐、影视及汽车等。 智能标签…

    腾讯云 2023年12月9日
  • 腾讯云对象存储设置访问域名

    简介 本文档提供关于如何使用非默认域名请求 COS 服务。 自定义源站域名 关于如何设置自定义源站域名请参见 自定义源站域名。以下代码展示了如何使用自定义源站域名访问 COS 服务。 示例代码 // 存储桶 region 可以在 COS 控制台指定存储桶的概览页查看 https://console.cloud.tencent.com/cos5/bucket/…

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云云函数(SCF)MPS 函数处理概述-云淘科技

    通过函数处理服务,可以快速完成对 视频处理 MPS 产生的回调事件进行处理及操作。通过 MPS 触发器 将事件推送到云函数 SCF ,再通过 Serverless 无服务架构的函数计算提供回调事件的处理及响应。n整体数据处理流程如下图所示:n  函数处理场景实践 日志服务可以将日志主题中的数据通过 MPS 日志触发器 投递至云函数进行处理,以满足对视频进…

    2023年12月9日
  • 阿里云大数据开发治理平台 DataWorks使用Aviator函数作为过滤器的最佳实践-云淘科技

    数据服务支持编写函数,并将一个或多个相同类型的函数关联至API,使得函数可以作为API的过滤器进行使用。本实践以Aviator函数及对应语法为例,为您介绍几种函数逻辑的编写示例。 应用场景 如果将函数设置为API的前置过滤器,当API被调用时,函数可以对API的请求参数进行预先处理。 如果将函数设置为API的后置过滤器,当API被调用时,函数可以对API的返…

    2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。