百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

在Oracle Cloud Infrastructure上部署Ruby on Rails:高效实践指南

sinye56 2024-09-29 21:53 3 浏览 0 评论

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网络织物传输,永远不会穿越互联网。


MySQL数据库服务(MySQL Database Service)

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)

您可以使用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云服务,打开一个全新的世界大门。

相关推荐

RHEL8和CentOS8怎么重启网络

本文主要讲解如何重启RHEL8或者CentOS8网络以及如何解决RHEL8和CentOS8系统的网络管理服务报错,当我们安装好RHEL8或者CentOS8,重启启动网络时,会出现以下报错:...

Linux 内、外网双网卡路由配置

1.路由信息的影响Linux系统中如果有多张网卡的情况下,如果路由信息配置不正确,...

Linux——centos7修改网卡名

修改网卡名这个操作可能平时用不太上,可作为了解。修改网卡默认名从ens33改成eth01.首先修改网卡配置文件名(建议将原配置文件进行备份)...

CentOS7下修改网卡名称为ethX的操作方法

?Linux操作系统的网卡设备的传统命名方式是eth0、eth1、eth2等,而CentOS7提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名全自动的、可预知的...

Linux 网卡名称enss33修改为eth0

一、CentOS修改/etc/sysconfig/grub文件(修改前先备份)为GRUB_CMDLINE_LINUX变量增加2个参数(net.ifnames=0biosdevname=0),修改完成...

CentOS下双网卡绑定,实现带宽飞速

方式一1.新建/etc/sysconfig/network-scripts/ifcfg-bond0文件DEVICE=bond0IPADDR=191.3.60.1NETMASK=255.255.2...

linux 双网卡双网段设置路由转发

背景网络情况linux双网卡:网卡A(ens3)和网卡B(...

Linux-VMware设置网卡保持激活

Linux系统只有在激活网卡的状态下才能去连接网络,进行网络通讯。修改配置文件(永久激活网卡)...

VMware虚拟机三种网络模式

01.VMware虚拟机三种网络模式由于linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费。那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有v...

Rocky Linux 9/CentOS Stream 9修改网卡配置/自动修改主机名(实操)

推荐...

2023年最新版 linux克隆虚拟机 解决网卡uuid重复问题

问题描述1、克隆了虚拟机,两台虚拟机里面的ip以及网卡的uuid都是一样的2、ip好改,但是uuid如何改呢?解决问题1、每台主机应该保证网卡的UUID是唯一的,避免后面网络通信有问题...

Linux网卡的Vlan配置,你可能不了解的玩法

如果服务器上连的交换机端口已经预先设置了TRUNK,并允许特定的VLAN可以通过,那么服务器的网卡在配置时就必须指定所属的VLAN,否则就不通了,这种情形在虚拟化部署时较常见。例如在一个办公环境中,办...

Centos7 网卡绑定

1、切换到指定目录#备份网卡数据cd/etc/sysconfig/network-scriptscpifcfg-enp5s0f0ifcfg-enp5s0f0.bak...

Linux搭建nginx+keepalived 高可用(主备+双主模式)

一:keepalived简介反向代理及负载均衡参考:...

Linux下Route 路由指令使用详解

linuxroute命令用于显示和操作IP路由表。要实现两个不同子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该...

取消回复欢迎 发表评论: