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

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

sinye56 2024-09-29 21:53 4 浏览 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云服务,打开一个全新的世界大门。

相关推荐

程序员:JDK的安装与配置(完整版)_jdk的安装方法

对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...

Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置

一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...

麒麟系统安装JAVA JDK教程_麒麟系统配置jdk

检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...

学习笔记-Linux JDK - 安装&配置

前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

测试员必备:Linux下安装JDK 1.8你必须知道的那些事

1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...

Linux 下安装JDK17_linux 安装jdk1.8 yum

一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...

在Ubuntu系统中安装JDK 17并配置环境变量教程

在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...

如何在 Linux 上安装 Java_linux安装java的步骤

在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

linux安装jdk_linux安装jdk软连接

JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...

linux安装jdk,全局配置,不同用户不同jdk

jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...

运维大神教你在linux下安装jdk8_linux安装jdk1.7

1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...

window和linux安装JDK1.8_linux 安装jdk1.8.tar

Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...

最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?

默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: