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 = "[email protected]"
    $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 倉庫 [[email protected] 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
  • 分組和樹形結構是不一樣的。 樹形結構是以遞歸形式存在。分組是以鍵值對存在的形式,類似於GroupBy這樣的形式。 舉個例子 ID NAME SEX Class 1 張三 男 1 2 李四 女 2 3 王二 男 1 當以Sex為分組依據時則是 Key Value 男 1 張三 男 1 3 王二 男 1 ...
  • NetCore中將SQLServer資料庫備份為Sql腳本 描述: 最近寫項目收到了一個需求, 就是將SQL Server資料庫備份為Sql腳本, 如果是My Sql之類的還好說, 但是在網上搜了一大堆, 全是教你怎麼操作SSMS的, 就很d疼! 解決方案: 通過各種查找資料, 還有一些老哥的幫助, ...
  • 我的Notion Clowd.Squirrel Squirrel.Windows 是一組工具和適用於.Net的庫,用於管理 Desktop Windows 應用程式的安裝和更新。 Squirrel.Windows 對 Windows 應用程式的實現語言沒有任何要求,甚至無需服務端即可完成增量更新。 ...
  • 轉載請註明來源 https://www.cnblogs.com/brucejiao/p/16188865.html 謝謝! 轉載請註明來源 https://www.cnblogs.com/brucejiao/p/16188865.html 謝謝! 轉載請註明來源 https://www.cnblog ...
  • 1. Netty源碼研究筆記(3)——Channel系列 依舊是通過先縱向再橫向的研究方法,在開篇中,我們發現不管是Sever還是Client,最終的啟動是通過調用channel的對應方法來完成的,而這個動作實際在channel綁定的eventLoop中執行。 接下來,我們繼續EchoSever、E ...
  • 大家好,今天給大家介紹一款輕量、快速、穩定可編排的組件式規則引擎框架LiteFlow。 一、LiteFlow的介紹 LiteFlow官方網站和代碼倉庫地址 官方網站:https://yomahub.com/liteflow Gitee托管倉庫:https://gitee.com/dromara/li ...
  • 我使用Spring AOP實現了用戶操作日誌功能 今天答辯完了,復盤了一下系統,發現還是有一些東西值得拿出來和大家分享一下。 需求分析 系統需要對用戶的操作進行記錄,方便未來溯源 首先想到的就是在每個方法中,去實現記錄的邏輯,但是這樣做肯定是不現實的,首先工作量大,其次違背了軟體工程設計原則(開閉原 ...
  • 《零基礎學Java》 繪製幾何圖形 Java可以分別使用 Graphics 和 Graphics2D 繪製圖形,Graphics類 使用不同的方法繪製不同的圖形(drawLine()方法可f以繪製線、drawRect()方法用於繪製矩形、drawOval()方法用於繪製橢圓形)。 Graphics類 ...
  • 本期教程人臉識別第三方平臺為虹軟科技,本文章講解的是人臉識別RGB活體追蹤技術,免費的功能很多可以自行搭配,希望在你看完本章課程有所收穫。 ...
  • 很多人都喜歡使用黑色的主題樣式,包括我自己,使用了差不多三年的黑色主題,但是個人覺得在進行視窗轉換的時候很廢眼睛。 比如IDEA是全黑的,然後需要看PDF或者WORD又變成白色的了,這樣來回切換導致眼睛很累,畢竟現在網頁以及大部分軟體的界面都是白色的。那麼還是老老實實的使用原來比較順眼的模式吧。 1 ...