返回顶部
首页 > 资讯 > 精选 >基础架构之百变魔方
  • 406
分享到

基础架构之百变魔方

2023-06-05 07:06:48 406人浏览 八月长安
摘要

转载本文需注明出处:微信公众号EAWorld,违者必究。引言:“基础架构即代码(Infrastructure-as-Code,IaC)”是一种使用新的技术来构建和管理动态基础设施的方式。它把基础设施、工具和服务以及对基础设施的管理本身作为一

基础架构之百变魔方

转载本文需注明出处:微信公众号EAWorld,违者必究。

引言:

“基础架构即代码(Infrastructure-as-Code,IaC)”是一种使用新的技术来构建和管理动态基础设施的方式。它把基础设施、工具和服务以及对基础设施的管理本身作为一个软件系统,采纳软件工程实践以结构化的安全的方式来管理对系统的变更。  

通过第三方调查报告显,Forrester咨询公司在一项针对拥有1000多名员工的企业的727名云技术决策者的全球调查中发现,业务优先级的转变正在推动企业采用多云战略。根据该研究,绝大多数的受访者将其当前的云计算策略描述为多云策。

基础架构之百变魔方

根据该研究,绝大多数的受访者将其当前的云计算策略描述为多云策略,其性能和创新已超越成本节约成为了成功的最佳衡量标准。此外,60%的企业现在正在迁移或已经将关键任务应用程序迁移到公有云上。

如今,大多数企业都采用多云策略来优化性能并实现业务目标。该研究指出,“没有一个单一的云平台可以满足所有企业工作负载需求。”因此,企业正在利用多个共有云和私有云来处理不同的应用程序工作负载。在将工作负载与云环境相匹配时,性能是大多数企业的首要考虑因素,甚至超过了合规性与安全性。

接受调查的IT领导者展示了对多云平台的各种使用案例,并认为多云策略可以带来诸多好处,比如改进的IT基础架构管理和灵活性(33%),更好的IT成本管理(33%)以及提高安全性和合规性(30%)。此外,该研究还发现,在选择云服务供应商时,企业更喜欢能提供更深层次帮助和支持的供应商。

基础架构之百变魔方

企业更多采用云服务,让物理机销量出现了10年来首次负增长。6月18日,市场研究机构IDC公布最新数据,2019年第一季度中国市场物理机出货量下跌0.7%,全球市场物理机销量下跌5.1%。这背后是企业全面向云转移,新旧IT交替出现拐点,云计算市场持续强劲增长,平均增幅达40%。云计算还可以帮助企业大幅削减IT成本,还具有弹性扩容、按需使用、按量付费、成本低等明显优势,已经成为企业数字化转型的基础设施。互联网、政府、电信和金融等行业已经把自己迁移至云上,不再独立采购物理服务器

1.我们该如何应对多云化的挑战?

“基础架构即代码(Infrastructure-as-Code,IaC)”是一种使用新的技术来构建和管理动态基础设施的方式。它把基础设施、工具和服务以及对基础设施的管理本身作为一个软件系统,采纳软件工程实践以结构化的安全的方式来管理对系统的变更。

开发的角度看提倡一切皆对象,从操作系统的角度看提倡一切皆文件,那么在多云化的时代我们应该提倡把一切资源皆代码,通过代码的方式编排和管理我们的基础资源,这样才能满足企业业务快速发展的需求。

针对一个复杂的业务系统我们如何借助云端的优势进行部署?

基础架构之百变魔方

基础架构之百变魔方

传统手工的部署方式大致要通过以上8个步骤完成一个应用的部署,如果我们的公有云环境是多个,那么就意味着以上步骤要重复多次,这还仅仅是一个简单的WEB环境,如果我们要部署的是一套业务系统,涉及多个应用系统的创建,我们的基础平台交付需要多长时间?显然通过手工的方式是不现实的。

我们需要通过infrastructure as code的方式来管理我们的基础架构,构建企业自己的技术中台。

基础设施即代码四项关键原则:

  • 可再生性:环境中的任何元素可以轻松复制。

  • 一致性:无论何时,创建的环境各个元素的配置是完全相同的。

  • 快速反馈:能够频繁、容易地进行变更,并快速知道变更是否正确。

  • 可见性:所有对环境的变更应该容易理解、可审计、受版本控制。

基础设施即代码的目标:

  • 标准化:以代码来定义环境,实现开发环境、测试环境、生产环境的标准化。

  • 自动化:以自动化工具来驱动代码准备环境。包括创建环境、更新环境以及销毁环境。

  • 可视化:以监控来可视化环境信息。环境当前状态可视、环境变更历史可视化、可追溯。

infrastructure as code 的工具有哪些:

  • Microsoft为用户提供的IaC工具是:Azure Resource Manager。用户可以通过Azure Resource Manager(ARM)的不同模板,配置出自己的基础架构、并处理各种依赖项。可以在模板中使用那些已在JSON中声明描述了的资源,也可以在同一个ARM模板中声明多个Azure资源,以构建整体性的项目环境。ARM模板具有幂等性,因此可以无限次数地重复使用相同的模板,并获得相同的结果。Resource Manager还支持服务器的实例分组、以及对不同分组的统一管理。

  • CloudFORMation是专为那些在AWS云中工作的用户而设计的。目前已经配置了342种AWS资源类型。允许使用jsON或YAML定制各种模板来构建不同复杂程度的基础架构模型。

  • (CDM)是基于Google云平台的配置文件(YAML)和模板(JINJA2或python)的一种自动化执行工具。它允许用户自行定义和同步部署各种系统资源。Google CDM也支持预览功能。这意味着:您在不直接提交更改的情况下,便可以直接了解到部署和变更所带来的影响。可以帮助用户避免出现人为的错误,还能够起到加强与稳定整体基础架构的作用。

  • Terraform 是一个IT基础架构自动化编排工具,可以用代码来管理维护 IT 资源。Terraform的命令行接口 (CLI) 提供一种简单机制,用于将配置文件部署到任意支持的云上,并对其进行版本控制。通过配置文件可以描述云资源的拓扑基础架构。

Terraform 支持的服务商众多

基础架构之百变魔方

安装Terraform简单

Terraform 可以随意部署在任意的客户端上,只要可以连通公网即可(Initializing provider plugins and Call Cloud Openapi) ,通过Http://1t.click/vND下载对应平台的可执行二进制包,解压出来Executable Binary 放指定目录,配置好相应的PATH则可使用terraform 指令。

$ terraformUsage: terraform [--version] [--help] <command> [args]Common commands:    apply              Builds or changes infrastructure    console            Interactive console for Terraform interpolations    destroy            Destroy Terraform-managed infrastructure    fmt                Rewrites config files to canonical format    get                Download and install modules for the configuration    graph              Create a visual graph of Terraform resources    import             Import existing infrastructure into Terraform    init               Initialize a new or existing Terraform configuration    output             Read an output from a state file    plan               Generate and show an execution plan    providers          Prints a tree of the providers used in the configuration    push               Upload this Terraform module to Terraform Enterprise to run    refresh            Update local state file against real resources    show               Inspect Terraform state or plan    taint              Manually mark a resource for recreation    untaint            Manually unmark a resource as tainted    validate           Validates the Terraform files    version            Prints the Terraform versionworkspace          Workspace management

整个基础架构的建设只需要terraform init,terraform plan , terraform apply 三步来完成。删除整个环境只需要terraform  destroy一步来完成。

基础架构之百变魔方

通过一个main.tf文件(只需要是.tf 文件)定义了ECS(镜像、实例类型)、VPC(CIDR、VPC Name)、OSS资源(ACL、实例Name)信息,通过Terraform 对资源配置参数做解析,调用阿里cloud OpenAPI 进行资源校验于创建,同时把整个资源创建状态化到一个.tf.state文件中,基于该文件则可以得知资源创建的所有信息,包括资源数量调整,规格调整,实例变更都依赖这种非常重要的文件。

terraform 具体使用案例

通过配置main.tf文件定义各种资源

定义认证资源

} # Configure the Alicloud Providerprovider "alicloud" {  access_key = "${var.access_key}"  secret_key = "${var.secret_key}"  region     = "${var.region}"

定义云主机资源

# Create a web serverresource "alicloud_instance" "web" {  # cn-beijing  provider          = "alicloud"  availability_zone = "cn-beijing-a"  image_id          = "ubuntu_140405_32_40G_cloudinit_20161115.vhd"  internet_charge_type  = "PayByBandwidth"  instance_type        = "ecs.n1.medium"  io_optimized         = "optimized"  system_disk_category = "cloud_efficiency"  security_groups      = ["${alicloud_security_group.default.id}"]  instance_name        = "web"}

定义安全组资源

# Create security groupresource "alicloud_security_group" "default" {  name        = "default"  provider    = "alicloud"  description = "default"}resource "alicloud_security_group_rule" "allow_all_tcp" {  type              = "ingress"  ip_protocol       = "tcp"  nic_type          = "intranet"  policy            = "accept"  port_range        = "1/65535"  priority          = 1  security_group_id = "${alicloud_security_group.default.id}"  cidr_ip           = "0.0.0.0/0"}

定义输出结果信息

# Output messageoutput "ecs instance name" {  value = "${alicloud_instance.web.instance_name}"}output "ecs private ip" {  value = "${alicloud_instance.web.private_ip}"}

terraform init 

$ terraform initInitializing provider plugins...- Checking for available provider plugins on https://releases.hashicorp.com...- Downloading plugin for provider "alicloud" (0.1.0)...The following providers do not have any version constraints in configuration,so the latest version was installed.To prevent automatic upgrades to new major versions that may contain breakinGChanges, it is recommended to add version = "..." constraints to thecorresponding provider blocks in configuration, with the constraint stringssuggested below.* provider.alicloud: version = "~> 0.1"Terraform has been successfully initialized!You may now begin working with Terraform. Try running "terraform plan" to seeany changes that are required for your infrastructure. All Terraform commandsshould now work.

执行terraform plan,查看资源创建计划 

An execution plan has been generated and is shown below.Resource actions are indicated with the following symbols:  + createTerraform will perform the following actions:  + alicloud_instance.web      id:                   <computed>      allocate_public_ip:   "false"      availability_zone:    "cn-beijing-a"      host_name:            <computed>      image_id:             "ubuntu_140405_32_40G_cloudinit_20161115.vhd"      instance_name:        "web"      instance_type:        "ecs.n1.medium"      internet_charge_type: "PayByBandwidth"      io_optimized:         "optimized"      private_ip:           <computed>      public_ip:            <computed>      security_groups.#:    <computed>      status:               <computed>      subnet_id:            <computed>      system_disk_category: "cloud_efficiency"      system_disk_size:     <computed>  + alicloud_security_group.default      id:                   <computed>      description:          "default"      name:                 "default"Plan: 2 to add, 0 to change, 0 to destroy.

执行terraform apply,在云端创建资源

$ terraform applyalicloud_security_group.default: Creating...  description: "" => "default"  name:        "" => "default"alicloud_security_group.default: Creation complete after 1s (ID: sg-2zec9v8aq2hgb244qrqf)alicloud_instance.web: Creating...  allocate_public_ip:         "" => "false"  availability_zone:          "" => "cn-beijing-a"  host_name:                  "" => "<computed>"  image_id:                   "" => "ubuntu_140405_32_40G_cloudinit_20161115.vhd"  instance_name:              "" => "web"  instance_type:              "" => "ecs.n1.medium"  internet_charge_type:       "" => "PayByBandwidth"  io_optimized:               "" => "optimized"  private_ip:                 "" => "<computed>"  public_ip:                  "" => "<computed>"  security_groups.#:          "" => "1"  security_groups.2344301974: "" => "sg-2zec9v8aq2hgb244qrqf"  status:                     "" => "<computed>"  subnet_id:                  "" => "<computed>"  system_disk_category:       "" => "cloud_efficiency"  system_disk_size:           "" => "<computed>"alicloud_instance.web: Still creating... (10s elapsed)alicloud_instance.web: Still creating... (20s elapsed)alicloud_instance.web: Creation complete after 51s (ID: i-2zedvfowy4m39sg1xdig)Apply complete! Resources: 2 added, 0 changed, 0 destroyed.Outputs:ecs instance name = webecs private ip = 10.31.28.93
2.IaC结合共有云的使用

基础架构之百变魔方

  1. 我们可以将我们的应用系统通过Packer打包成镜像存储到公有云。

  2. 结合Terraform 在公有云部署云主机时拉取自定义镜像文件生成云主机,并对公有云的资源进行统一的配置和管理。

  3. 通过结合Ansible对公有云的应用进行统一的维护和管理。

3.IaC在DevOps中的运用

基础架构之百变魔方

我们在整个软件开发生命周期的过程中,其中基础环境的制备是非常重要的一环,也是从开发到测试再到生产部署最靠近底层的一环,我们可以借助IaC既能满足基础架构的快速部署,又能灵活的使用私有云或公有云资源,充分利用公有云的优势为企业服务,同时降低企业成本投入,做到真正的按需付费。

4.基础平台代码化的优势
  • 将基础结构部署到多个云

Terraform适用于多云方案,将相类似的基础结构部署到阿里云、其他云提供商或者本地数据中心。开发人员能够使用相同的工具和相似的配置文件同时管理不同云提供商的资源。

  • 自动化管理基础结构

Terraform能够创建配置文件的模板,以可重复、可预测的方式定义、预配和配置ECS资源,减少因人为因素导致的部署和管理错误。能够多次部署同一模板,创建相同的开发、测试和生产环境。

  • 基础架构即代码(Infrastructure as Code)

可以用代码来管理维护资源。允许保存基础设施状态,从而使您能够跟踪对系统(基础设施即代码)中不同组件所做的更改,并与其他人共享这些配置 。

  • 降低开发成本

可以通过按需创建开发和部署环境来降低成本,让企业真正做到按需付费。

资料来源:Forrester调查报告、财经网、云有料、博客园、阿里云

精选提问:

问1:Terraform能完成不同公有云间的迁移吗?

答:terraform只做环境管理,不做数据迁移。

问2:有没有不同公有云迁移的工具推荐?

答:目前各公有云有本地数据中心向公有云迁移到工具,各公有云之间迁移暂时没有。

问3:能说下Terraform 和 Terragrunt 的区别吗?

答:terragrunt 是一家咨询公司写的软件在terraform外边wrap了一层。

问4:Terraform 的status状态怎么来管理的?

答:状态文件可以存在一个文件里,这个文件可以是本地,也可以是远程的共享存储上。terraform主持workspaces,各团队可以维护自己的状态文件。

问5:ansible也可以做基础设施管理,terraform和它对比的优势在哪里?

答:terraform在对接各云供应商已有成熟的接口,在社区也有成熟的模块,在使用上可以标准化,也可以降低管理和使用的复杂度。

关于EAWorld微服务devops,数据治理,移动架构原创技术分享。

--结束END--

本文标题: 基础架构之百变魔方

本文链接: https://lsjlt.com/news/241828.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 基础架构之百变魔方
    转载本文需注明出处:微信公众号EAWorld,违者必究。引言:“基础架构即代码(Infrastructure-as-Code,IaC)”是一种使用新的技术来构建和管理动态基础设施的方式。它把基础设施、工具和服务以及对基础设施的管理本身作为一...
    99+
    2023-06-05
  • 基础架构(1)
    MySQL分为两部分: Server层 包含连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、...
    99+
    2014-12-12
    基础架构(1)
  • JavaScript基础之变量
    目录1.变量概述1.1变量在内存中的存储 1.2 变量的使用1.声明变量2.赋值3.变量的初始化1.3变量语法扩展1.更新变量2.声明多个变量3.声明变量特殊情况1.5变量...
    99+
    2024-04-02
  • 基础架构迁云(三)
    迁云工作的准备阶段当然少不了对现有环境的调查,这是一个很重要的阶段,怎么迁,也是需要这个作为依据,所以这个阶段不能马虎。 1,整体的来说需要根据以往老的数据库拓扑图以及自己的了解补充画出新的拓扑图,这是一个...
    99+
    2024-04-02
  • python面向对象基础之常用魔术方法
    目录一、类和对象二、魔法方法三、理解self四、练习对战一、类和对象 通俗理解:类就是模板,对象就是通过模板创造出来的物体 类(Class)由3个部分构成: 类的名称: 类名 类的...
    99+
    2024-04-02
  • 【架构师】零基础到精通——架构演进
    博客昵称:架构师Cool 最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。 作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟! 博主小留言:哈喽...
    99+
    2023-09-14
    架构 服务器 运维 系统架构
  • 【架构师】零基础到精通——架构发展
    博客昵称:架构师Cool 最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。 作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟! 博主小留言:哈喽!各位CSDN的uu们,我是你的小弟Co...
    99+
    2023-08-20
    架构 服务器 运维 java 系统架构
  • 云服务器基础架构
    云服务器基础架构是指将多个服务器虚拟化成一个逻辑服务器,并将其部署到云服务器上,由云服务器管理系统管理和控制所有的云服务器资源和负载。这种模式可以通过使用虚拟化技术和云计算平台来降低IT成本,使得企业可以更加灵活地部署和管理他们的业务应用程...
    99+
    2023-10-26
    架构 服务器 基础
  • Python基础入门之魔法方法与异常处理
    目录一.魔法方法1.属性访问2.描述符3.定制序列5.生成器二.异常处理1.异常类型2.try-except语句3.try-finally语句4.raise语句5.丰富的else语句...
    99+
    2024-04-02
  • web安全php基础_php常量及可变变量(魔术变量)
    常量 php中常量是一个简单值的标识符。该值在脚本中不能改变。 一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。 常量有两点需要特别注意的地方 常量...
    99+
    2023-09-26
    php android android studio php常量 php可变变量 php魔术变量
  • Python基础之变量进阶
    变量的引用 变量和数据都是保存在内存中的; 在python中函数的参数传递以及返回值都是靠引用传递的。 函数引用的概念 在python中 变量和数据时分开存储的; 数据保存在内存中的一个位置; 变量保存着数据在内存中的地址; 变量中...
    99+
    2023-01-31
    进阶 变量 基础
  • 基于Sanic的微服务基础架构
    使用python做web开发面临的一个最大的问题就是性能,在解决C10K问题上显的有点吃力。有些异步框架Tornado、Twisted、Gevent 等就是为了解决性能问题。这些框架在性能上有些提升,但是也出现了各种古怪的问题难以解决。...
    99+
    2023-01-31
    架构 基础 Sanic
  • PyTorch零基础入门之构建模型基础
    目录一、神经网络的构造二、神经网络中常见的层2.1不含模型参数的层2.2含模型参数的层(1)代码栗子1(2)代码栗子22.3二维卷积层stride2.4池化层三、LeNet模型栗子三...
    99+
    2024-04-02
  • ABP基础架构深入探索
    目录前言一、了解模块化Startup 类模块定义模块依赖和启动模块模块生命周期二、使用依赖注入系统.NET 原生依赖注入ABP的依赖注入1.约定式注册2.接口注册3.属性注册4.接口...
    99+
    2024-04-02
  • DubboServiceMesh基础架构组件改造
    目录前言其他基础架构总结前言 公司的分布式架构是基于Alibaba Dubbo实现的,微服务的相关治理也是基于Alibaba Dubbo做的,随着公司系统规模的增长服务发布,服务的治...
    99+
    2023-03-02
    Dubbo Service Mesh组件改造 Dubbo Service Mesh
  • Java基础学习之构造方法详解
    目录一、构造方法概述二、构造方法的注意事项三、标准类制作一、构造方法概述 构造方法是一种特殊的方法 作用:创建对象Student stu = new Student(); 格式: p...
    99+
    2024-04-02
  • 【恩墨学院】IT基础架构变革在路上:青海移动的去“IE”之旅
    加入"云和恩墨大讲堂"微信群,参与讨 ...
    99+
    2024-04-02
  • Python编程基础之构造方法和析构方法详解
    目录一、本讲学习目标二、构造方法(一)概述(二)案例演示三、析构方法(一)概述(二)案例演示四、self的使用(一)self概述(二)案例演示总结一、本讲学习目标 1.掌握构造方法的...
    99+
    2024-04-02
  • MySQL基础架构的执行流程
    本篇内容介绍了“MySQL基础架构的执行流程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!MySQL的架构...
    99+
    2024-04-02
  • 云服务器基础架构包括
    云服务器基础架构是一种专门设计用于托管、管理和提供云服务的基础架构。云服务器包括以下几个组件: 计算服务器:服务器由一组计算资源构成,这些资源包括CPU、内存和存储器。 网络服务器:连接到互联网的服务器。 负载均衡器:用于将多个独立的服...
    99+
    2023-10-26
    架构 服务器 基础
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作