Azure Service Fabric 踩坑日誌

来源:https://www.cnblogs.com/chenxizhang/archive/2022/05/01/16212169.html
-Advertisement-
Play Games

近期項目上面用到了Azure Service Fabric這個服務,它是用來做微服務架構的,由於這套代碼和架構都是以前同學留下來的,缺少文檔,項目組在折騰時也曾遇到幾個問題,這裡整理如下,以供參考。 我屬於Service Fabric的初學者和使用者,很多概念也都是臨時學習的,我們的工程師後續會更加 ...


近期項目上面用到了Azure Service Fabric這個服務,它是用來做微服務架構的,由於這套代碼和架構都是以前同學留下來的,缺少文檔,項目組在折騰時也曾遇到幾個問題,這裡整理如下,以供參考。

我屬於Service Fabric的初學者和使用者,很多概念也都是臨時學習的,我們的工程師後續會更加細緻的研究它。本文僅從故障排查經驗總結的角度做了一點整理,有關這個服務的詳細功能,或者官方推薦的最佳實踐,請參考 https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-overview

  1. 有兩種不同的service fabric可供選擇。有條件(錢多)的話,可以選擇 managed cluster, 省事,因為相當於在service fabric 基礎上又封裝了一層,簡化了管理。

  2. 開發環境沒有必要設置那麼多node,除非你的錢真的富裕得難受了。以上 managed cluster 最少有5個 node(節點),我建議開發環境用原生的 service fabric,然後 1個node就可以了,但可以把虛擬機的尺寸稍微調高一點。它會提示你說這樣的設置不適合生產環境,讓它提示。

  3. 選擇一個富裕一點的region,以便更快的擴容,如果真的有那麼一天。例如目前 China Region 3 因為是新的,比較富裕。

  4. 選擇新的操作系統,避免一些出現不必要的問題,如果能用container,更好。

  5. 這個 service fabric 是基於一個所謂的 vm scale set 來進行擴展的。這個scale set,你要隨時註意它有沒有問題。你可以通過調整下麵的參考來改變node數量,但要做好心理準備,可能需要的時間比較長。但是正常情況下,你的服務應該不至於down,因為理論上它是逐個機器更新的。

  6. 創建service fabric 服務會出現一堆東西,你可能不瞭解它,但你不能隨便刪除它,萬一有用呢

  7. 如果你修改了 vm scale set的東西,一定要及時查看 service fabric cluster的狀態,如果它顯示為 updating,那麼恭喜你,它可能正在更新。但如果它一直顯示為updating,你就可能要跟我們一樣加幾個班了。目前沒有看到命令可以重啟 service fabric,且錯誤日誌不清晰,所以有時候會讓人抓狂。

  8. 以上做好了,你可能以為就結束了。然鵝並不是。service fabric的資源中,雖然可以看到有一個 loadbalance的組件,而且也有一個對外的ip地址,但是它不能用來直接做微服務的對外訪問,因為你的微服務可能會有N個(理論上),而每個微服務呢,建議要有獨立的埠才行。這個無法在loadbalance組件中做設置。

  9. 所以你需要有一個Application Gateway 的東西,能接管前端的用戶請求,並且做路由。我萬萬沒想到,在這個環節會遇到一些挑戰,教訓非常慘痛。首先,你需要映射https的埠的話,當然需要準備證書。這個證書,我們建議放在 key vault中。這裡要命的地方是,它在創建https listener時會讓你上傳一個pfx文件,並且必須要有一個password,而從key vault中導出的pfx,預設並不需要password。所以你可能需要下一段代碼。

    點擊查看代碼
    Install-Module AzureRM
    Connect-AzureRMAccount -Environment AzureChinaCloud
    
    $vaultName = "xxxxx"
    $certificateName = "xxxxx"
    $pfxPath = [Environment]::GetFolderPath("Desktop") + "\$certificateName.pfx"
    $password = "pass@word1"
    $pfxSecret = Get-AzureKeyVaultSecret -VaultName $vaultName -Name $certificateName
    $pfxUnprotectedBytes = [Convert]::FromBase64String($pfxSecret.SecretValueText)
    $pfx = New-Object Security.Cryptography.X509Certificates.X509Certificate2
    $pfx.Import($pfxUnprotectedBytes, $null, [Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)
    $pfxProtectedBytes = $pfx.Export([Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $password)
    [IO.File]::WriteAllBytes($pfxPath, $pfxProtectedBytes)
    

先記錄了這麼多


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • CentOS7 安裝MYSQL5.7 [詳細過程] YUM 安裝 1.從mysql官網獲取 yum 倉庫 [root@stone tmp]# wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm' 2. ...
  • 導讀: 本次分享的內容為圖深度學習在自然語言處理領域的方法與應用,主要內容和素材都來自於我們Graph4NLP團隊的一篇調研文章:Graph Neural Networks for Natural Language Processing:A Survery,以及我們團隊所開發的Graph4NLP的p ...
  • MapReduce Hadoop中將數據切分成塊存在HDFS不同的DataNode中,如果想彙總,按照常規想法就是,移動數據到統計程式:先把數據讀取到一個程式中,再進行彙總。 但是HDFS存的數據量非常大時,對彙總程式所在的伺服器將產生巨大壓力,並且網路IO也十分消耗資源。 為瞭解決這種問題,Map ...
  • 許可權表 MySQL 伺服器通過許可權表來控制用戶對資料庫的訪問,由 mysql_install_db 腳本初始化,MySQL 會根據這些許可權表的內容為每個用戶賦予相應的許可權 1. user 表 user 表是 MySQL 最重要的一個許可權表,有 49 個欄位,這些欄位可以分成四類: 範圍列:包括 Ho ...
  • 終於算是順利進入vue了,確實也只有學了過後才知道,之前三過vue而不學,確實是對的,現在進來了一點都不後悔,ajax、node.js、promise、webpack、git等等確實是除了三大基礎外還需要額外學的。 終於能夠一窺vue的真容了,學了這麼久,說實話一直都忍著,不去觸碰這一條線,就想留著 ...
  • 鉤子函數 說明 beforeCreate 在實例初始化之後,數據觀測和watch/event事件配置之前被調用 created 在實例創建完成後被立即調用,在這一步,實例已經完成數據觀測、屬性和方法的運算,以及watch/event事件回調。掛載階段還未開始,$el屬性尚不可用。多用於初始化數據或方 ...
  • 當初使用 jQuery 做了幾個簡單的項目,算是有一點點瞭解,現在學習Vue3,發現了一個可以快速轉換思維的通道 —— 使用CDN的方式模擬 Vite 建立的項目! CDN方式 jQuery的使用非常方便,用 script 引入 js文件即可,然後找到DOM即可開始操作。 而 Vue3 也支持直接用 ...
  • 後端介面對接的模式範本: 概念澄清: 【下單】是個廣義上的叫法,並不僅限於支付訂單的訂單。因為整個過程都圍繞一個【seqNo】訂單號或流水號這個唯一標識展開,因而統稱【下單】。 【下單】可以是為派發一個優惠券、申請一個支付訂單、申請一個發票等等。 【seqNo】也可以叫orderNo,有唯一性,每次 ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...