久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

OpenStack heat HA的示例分析

164次閱讀
沒有評論

共計 2603 個字符,預計需要花費 7 分鐘才能閱讀完成。

丸趣 TV 小編給大家分享一下 OpenStack heat HA 的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

記得還在去年的時候,大家討論 OpenStack 總離不了這樣的一個問題:“OpenStack 為什么不支持虛擬機的 HA?”

當時也很奇怪,對于 HA 這樣一個很基本的可靠性特性有缺失,又怎么在實際場景中使用 OpenStack 呢?

當時社區討論的結果是:“由 OpenStack 上層組件實現 HA,OpenStack 核心模塊僅提供基本的操作?!?/p>

那么這個所謂的上層組件指的是誰呢?就是 Heat。如今 Heat 已經是 OpenStack 的核心模塊,也就是說 OpenStack 已經具備的 HA 的能力。

超出期望

以前我們總是說虛擬機 HA,似乎所有的功能都是圍繞著虛擬機設計,已虛擬機為核心。但是從 Heat 的文檔里來看,Heat 認為虛擬機之上的服務(Service)才是最終要的,對于 Heat HA 的設計,也擴展到了服務的層面,可以實現三個層次的 HA:

service

instance

stack

例如:當虛擬機上的數據庫進程 down 了,首先通過重啟數據庫進程嘗試解決,如果解決不了,重啟或者重建虛擬機,如果還是解決不了,重建整個 stack。從這一點上來看 Heat HA 的功能要比單純的虛擬機 HA 的功能強大很多。

實現

Heat 的 HA 特性是 OpenStack 多模塊配合實現的,其中涉及到 Nova,Ceilometer,Heat-cfn-api,Heat-cloudwatch,Heat-cfntools 等。

?Heat-cfntools

Heat-cfntools 包括了一些和 Heat 配合使用的小工具,它們運行在虛擬機內部,在制作虛擬機鏡像的時候,需要將 cfntools 打包到鏡像當中,Heat 的開發者文檔中,介紹了將 cfntools 打包進鏡像中的方法。這里

Heat 的 HA 功能就是用到了 cfn-push-stats 對虛擬機或者服務的狀態進行上報。

cfn-init – 配置虛擬機,簡化 user_data 腳本

cfn-hub – 定期檢測 instance metadata 是否有變化,根據變化觸發用戶定義的 hooks

cfn-signal – 發送執行命令成功或失敗的信號

cfn-push-stats – 上報服務或虛擬機狀態

cfn-get-metadata – 獲取 instance metadata

有興趣的同學可以直接 git clone 一份 cfn-tools 的代碼看看。

https://github.com/openstack/heat-cfntools.git

?Heat-template

我們從 Heat 的 HA 模板入手,來分析一下怎么通過配置模板實現 Heat 的 HA。

以 github 上的 Heat 模板 WordPress_Single_Instance_With_IHA.template 為例。

... WebServerRestartPolicy  : {
  Type  :  OS::Heat::HARestarter ,
  Properties  : {InstanceId  : {  Ref  :  WikiDatabase  }
 }}, HeartbeatFailureAlarm : {
  Type :  AWS::CloudWatch::Alarm ,
  DependsOn  :  WaitCondition ,
  Properties : {AlarmDescription :  Restart the WikiDatabase if we miss a heartbeat , MetricName :  Heartbeat , Namespace :  system/linux , Statistic :  SampleCount , Period :  60 , EvaluationPeriods :  1 , Threshold :  1 , AlarmActions : [ {  Ref :  WebServerRestartPolicy  } ], ComparisonOperator :  LessThanThreshold 
 }}, WikiDatabase : {
  Type :  AWS::EC2::Instance ,
  Metadata  : {... /tmp/cfn-hup-crontab.txt  : { content  : {  Fn::Join  : [ , [ MAIL=\ \ \n , \n , * * * * * /opt/aws/bin/cfn-hup -f\n , * * * * * /opt/aws/bin/cfn-push-stats  ,  --watch  , {  Ref  :  HeartbeatFailureAlarm  },  --heartbeat\n ]]}, mode  :  000600 , owner  :  root , group  :  root },

我們先來看 /tmp/cfn-hup-crontab.txt,其實就是一個 crontab 的配置文件,在 boot instance WikiDatabase  的時候,因為配置了 UserData,所以 UserData 腳本執行的時候會調用 cfn-init 命令,cfn-init 的作用就是根據 AWS::CloudFormation::Init 段的配置,生成文件,安裝軟件,執行腳本等等,在 UserData 腳本的最后 cfn-hup 的 crontab 被啟用。

cfn-push-stats 會每分鐘向 heat-api-cloudwatch 發送一個 watch 為 HeartbeatFailureAlarm 類型的心跳請求。HeartbeatFailureAlarm 其實是一個 Ceilometer 的 Alarm。

根據 HeartbeatFailureAlarm 的配置,如果 60 秒沒有收到 instance WikiDatabase 的心跳請求,就會觸發 AlarmActionsOS::Heat::HARestarter,根據 Heat 對于資源 OS::Heat::HARestarter 的定義,Heat 會刪除原先的虛擬機 WikiDatabase,然后重新創建一個虛擬機。

對于服務的監控大家可以參考另一個 Heat 模板 WordPress_Single_Instance_With_HA.template

看完了這篇文章,相信你對“OpenStack heat HA 的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計2603字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 谢通门县| 昌平区| 安顺市| 镇安县| 云阳县| 嘉祥县| 凤城市| 汕尾市| 中江县| 新野县| 江陵县| 赣榆县| 托克托县| 嘉峪关市| 略阳县| 外汇| 沙田区| 甘肃省| 邯郸县| 嘉峪关市| 五台县| 吴堡县| 河北省| 锡林郭勒盟| 西乌| 宣化县| 乐清市| 鄂托克前旗| 莱阳市| 临澧县| 浮梁县| 元氏县| 天峨县| 凤阳县| 钟山县| 肃北| 东宁县| 河间市| 轮台县| 唐海县| 安徽省|