中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基礎架構之百變魔方

發布時間:2020-08-16 10:22:26 來源:ITPUB博客 閱讀:157 作者:EAWorld 欄目:軟件技術

基礎架構之百變魔方

轉載本文需注明出處:微信公眾號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 指令。


$ terraform
Usage: 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 version
workspace          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 Provider
provider "alicloud" {
  access_key = "${var.access_key}"
  secret_key = "${var.secret_key}"
  region     = "${var.region}"

定義云主機資源

# Create a web server
resource "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 group
resource "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 message
output "ecs instance name" {
  value = "${alicloud_instance.web.instance_name}"
}
output "ecs private ip" {
  value = "${alicloud_instance.web.private_ip}"
}

terraform init 

$ terraform init
Initializing 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 breaking
changes, it is recommended to add version = "..." constraints to the
corresponding provider blocks in configuration, with the constraint strings
suggested below.
* provider.alicloud: version = "~> 0.1"
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

執行terraform plan,查看資源創建計劃 

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create
Terraform 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 apply
alicloud_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 = web
ecs 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,數據治理,移動架構原創技術分享。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武宁县| 宝兴县| 武威市| 沁阳市| 八宿县| 梓潼县| 长泰县| 黎城县| 龙江县| 雅安市| 东丰县| 都匀市| 同心县| 瑞昌市| 兴文县| 阿鲁科尔沁旗| 东方市| 桂平市| 富蕴县| 白玉县| 甘泉县| 灵武市| 托克托县| 万载县| 汕尾市| 樟树市| 旌德县| 明水县| 山西省| 广平县| 富平县| 常宁市| 天镇县| 仁怀市| 西丰县| 金阳县| 枣庄市| 汽车| 禹城市| 固原市| 远安县|