欢迎访问深圳敏捷云计算科技有限公司!

甲骨文云-在Oracle Cloud Infrastructure上部署Ruby on Rails:高效实践指南

2024-02-29 原创文章

Ruby on Rails是Ruby编程语言的主要Web应用框架。为了支持Ruby on Rails(RoR)的开发,提供了一个弹性的基础设施,部署了必要的网络、虚拟机(VMs)和MySQL数据库实例,以及Ruby on Rails及其相关依赖的脚本化部署。


您可以在DevRel GitHub仓库中找到这个可部署架构的Terraform,oci-arch-ruby-rails-build, 通过下面的“探索更多”主题访问。


架构

该架构包括一个VCN和几个子网,以实现不同服务的隔离。因此,通过活动/待机负载均衡器进行公共访问。另一个公共子网提供了一个堡垒机(Bastion),支持使用SSH访问后端服务。


负载均衡器前置两台计算虚拟机(VMs),每台托管一个Ruby on Rails服务器。这些服务器可以访问MySQL数据库。VMs和MySQL数据库位于它们自己的单独子网中,以解决诸如访问之类的考虑因素。


以下图表展示了这一参考架构。

这种架构包括以下组件:

租户(Tenancy)

租户是Oracle在您注册Oracle Cloud Infrastructure时,在Oracle Cloud内设置的一个安全且独立的分区。您可以在自己的租户内创建、组织和管理Oracle Cloud中的资源。

租户相当于一家公司或组织。通常,一家公司会有一个单独的租户,并在该租户内反映其组织结构。一个租户通常与一个订阅关联,而一个订阅通常只有一个租户。


地区(Region)

Oracle Cloud Infrastructure地区是一个包含一个或多个数据中心(称为可用性域)的地理区域。地区相互独立,它们之间可能相隔很远(跨越国家甚至大陆)。


分区(Compartment)

分区是Oracle Cloud Infrastructure租户内跨地区的逻辑分区。使用分区来组织Oracle Cloud中的资源,控制对资源的访问,并设置使用配额。要控制对特定分区中资源的访问,您需要定义策略,指定谁可以访问这些资源以及他们可以执行哪些操作。


可用性域(Availability domains)

可用性域是地区内独立的、自主的数据中心。每个可用性域中的物理资源与其他可用性域中的资源隔离,从而提供故障容忍。可用性域不共享基础设施,如电源或冷却系统,或内部的可用性域网络。因此,一个可用性域的故障不太可能影响该地区内的其他可用性域。


故障域(Fault domains)

故障域是可用性域内的硬件和基础设施分组。每个可用性域有三个故障域,它们具有独立的电源和硬件。在多个故障域中分布资源时,您的应用程序可以承受物理服务器故障、系统维护和故障域内的电力故障。


虚拟云网络(VCN)和子网

VCN是您在Oracle Cloud Infrastructure地区中设置的可自定义、软件定义的网络。与传统数据中心网络一样,VCN使您完全控制您的网络环境。VCN可以拥有多个不重叠的CIDR块,这些块在创建VCN后可以更改。您可以将VCN分割为子网,这些子网可以是针对地区或可用性域。每个子网由不与VCN中其他子网重叠的连续地址范围组成。创建后,您可以更改子网的大小。子网可以是公共的或私有的。


负载均衡器(Load balancer)

Oracle Cloud Infrastructure负载均衡服务提供从单个入口点到后端多个服务器的自动流量分配。负载均衡器为不同的应用程序提供访问。


安全列表(Security list)

对于每个子网,您可以创建安全规则,指定必须允许进出子网的流量的来源、目的地和类型。


NAT网关(NAT gateway)

NAT网关使VCN中的私有资源能够访问互联网上的主机,同时不将这些资源暴露于来自互联网的入站连接。


服务网关(Service gateway)

服务网关提供从VCN到其他服务(如Oracle Cloud Infrastructure对象存储)的访问。从VCN到Oracle服务的流量通过Oracle网络织物传输,永远不会穿越互联网。


Oracle MySQL数据库服务是一种完全托管的Oracle Cloud Infrastructure(OCI)数据库服务,让开发者可以快速开发和部署安全的、云原生应用程序。专为OCI优化并且仅在OCI中可用,Oracle MySQL数据库服务由OCI和MySQL工程团队100%构建、管理和支持。

Oracle MySQL数据库服务拥有一个集成的、高性能分析引擎(HeatWave),可以直接对运营MySQL数据库进行复杂的实时分析。


堡垒服务(Bastion service)

Oracle Cloud Infrastructure堡垒提供了对不具有公共端点且需要严格资源访问控制的资源的受限和时限性安全访问,例如裸机和虚拟机、Oracle MySQL数据库服务自动事务处理(ATP)、Oracle Container Engine for Kubernetes(OKE)以及任何其他允许安全外壳协议(SSH)访问的资源。使用Oracle Cloud Infrastructure堡垒服务,您可以启用对私有主机的访问,无需部署和维护跳板机。此外,您可以通过基于身份的权限和集中式、审计的、时限性SSH会话获得改善的安全姿态。Oracle Cloud Infrastructure堡垒消除了为堡垒访问需要公共IP的需求,消除了在提供远程访问时的麻烦和潜在攻击面。


推荐

在Oracle Cloud Infrastructure(OCI)上部署Ruby on Rails时,可以将以下推荐作为起点。您的需求可能有所不同。


安全

主动使用Oracle Cloud Guard监控并维护OCI中资源的安全。Cloud Guard使用您可以定义的检测器配方来检查资源的安全弱点,并监控操作者和用户的高风险活动。当检测到任何配置错误或不安全活动时,Cloud Guard会推荐纠正措施,并根据您可以配置的响应者配方协助采取这些措施。

对于需要最高安全性的资源,Oracle建议您使用安全区域。安全区域是与Oracle定义的基于最佳实践的安全策略配方相关联的分区。例如,安全区域中的资源不得从公共互联网访问,并且必须使用客户管理的密钥进行加密。在安全区域中创建和更新资源时,OCI会根据安全区域配方中的策略验证操作,并拒绝违反任何策略的操作。

如果应用程序实现了暴露动态内容或允许客户端通过API提交数据,我们建议采用API网关,因为它提供了通过使用API策略来管理与API的交互的手段。


Cloud Guard

克隆并自定义Oracle提供的默认配方,以创建自定义的检测器和响应者配方。这些配方使您能够指定哪种类型的安全违规会生成警告,以及允许对其执行的操作。例如,您可能希望检测将可见性设置为公共的对象存储桶。

在租户级别应用Cloud Guard,以覆盖最广泛的范围并减少维护多种配置的管理负担。

您还可以使用管理列表来应用特定配置到检测器。


安全区域(Security zones)

克隆并自定义Oracle提供的默认配方,以创建自定义的检测器和响应者配方。这些配方使您能够指定哪种类型的安全违规会生成警告,以及允许对其执行的操作。例如,您可能希望检测将可见性设置为公共的对象存储桶。

在租户级别应用Cloud Guard,以覆盖最广泛的范围并减少维护多种配置的管理负担。

您还可以使用管理列表来应用特定配置到检测器。


您可以使用NSGs定义一组适用于特定VNICs的入站和出站规则。我们建议使用NSGs而不是安全列表,因为NS

Gs使您能够将VCN的子网架构与应用程序的安全需求分离。

您可以使用NSGs定义一组适用于特定VNICs的入站和出站规则。我们推荐使用NSGs而不是安全列表,因为NSGs使您能夠将VCN的子网架构与应用程序的安全需求分离。


负载均衡器带宽

创建负载均衡器时,您可以选择提供固定带宽的预定义形状,或指定一个自定义(灵活)形状,设置带宽范围,并根据流量模式让服务自动调整带宽。无论采用哪种方法,您都可以在创建负载均衡器后随时更改其形状。



考虑因素

部署此参考架构时,请考虑以下几点。


性能

将此RA作为起点意味着性能将受到VM节点数量和为每个节点选择的VM类型的影响。Terraform支持调整这些节点以使用不同规格的服务器和节点数量。

通过使用GraalVM运行Ruby和Rails,可以获得额外的性能提升。


安全

基本配置没有考虑任何应用程序身份验证和授权或API支持。在网络层面上,需要调整访问和路由,以解决Ruby服务是供内部使用还是外部使用的问题。对于外部使用,环境还应扩展以包括使用Web应用程序防火墙,应考虑使用Cloud Guard。


可用性

通过跨更多可用性区域分布节点,并可能针对最关键的可用性级别跨区域分布,可以扩展可用性。

可用性不仅是计算节点存在的因素,还包括安全性,以便只有合法流量可以与部署的应用程序进行交互。这可以通过安全推荐来解决。


成本

安全性也有助于通过限制服务请求所需的计算量来管理成本。这归结于阻止意外或恶意流量在WAF或API网关击中服务器,减少可能产生的工作量。


开启您的Oracle云之旅:Agilewing - 您的智能云服务伙伴

作为Oracle的高级合作伙伴,Agilewing正重新定义企业体验Oracle云服务的方式。借助于其简化的开户流程和一流的技术支持,Agilewing将复杂的开户和操作流程转化为一种轻松、直观的体验。通过我们的一站式服务,您可以迅速开启并享受Oracle云的全方位服务,从而无缝融入云端世界。

Agilewing的AgileCDN服务,结合了OCI的云基础服务,提供了一流的全球内容加速解决方案。超过2800个全球POP节点和7000个直连点的强大网络,确保了无论您的业务扩展到全球哪个角落,都能保持高效稳定的运行。

利用Oracle云的先进技术,Agilewing致力于简化云服务搭建、云迁移和业务出海的过程。我们的合作模式为客户带来经济高效的解决方案,使他们能够更加专注于核心业务,同时享受Oracle云的高性能和安全保障。

Oracle云服务,作为一个充满潜力的领域,以其高性能、安全性和全球统一的服务标准,为各类企业开启了新的机遇之门。通过Agilewing的专业服务,无论是个人用户还是企业,都能轻松步入这个充满技术革新和高效能的新时代。现在,就让Agilewing引领您开始探索Oracle云服务,打开一个全新的世界大门。