SIOS SANless clusters

SIOS SANless clusters High-availability Machine Learning monitoring

  • Home
  • 產品
    • SIOS DataKeeper for Windows
    • SIOS Protection Suite for Linux
  • 新闻与活动
  • 伺服器集群简单化
  • 成功案例
    • 台灣成功案例
  • 聯繫我們
  • English
  • 中文 (中国)
  • 中文 (台灣)
  • 한국어
  • Bahasa Indonesia
  • ไทย

使用DataKeeper實現SQL Server高可用性災難恢復

26 3 月, 2019 by Jason Aw Leave a Comment

通過混合使用永遠在線的可用性組和SANless SQL Server故障轉移群集實例實現SQL Server高可用性,災難恢復

介紹

將SQL Server故障轉移群集實例(FCI)與Always On Availability Groups(AG)混合的主題已有詳細記錄。但是,大多數可用的文檔文檔配置假定解決方案的SQL Server FCI部分使用共享存儲。如果我想使用Storage Spaces Direct(S2D)構建SANless SQL Server FCI,我還能添加一個SQL Server AG嗎?不幸的是,這個問題的答案是否定的。截至今天,不支持基於S2D的SQL Server FCI和Always On AG的組合。我之前在博客上寫過這個S2D限制。然而,好消息是你可以使用SIOS DataKeeper構建一個SANless SQL Server FCI,並且仍然可以利用Always On AG來處理可讀的輔助數據庫。在混合傳統的基於SAN的SQL Server FCI和Always On AG時,您仍然必須遵守相同的規則,但大多數情況下實現SQL Server的高可用性大致相同。DataKeeper同步複製通常用於同一數據中心或云區域中的節點之間,但您可能希望異步複製到不同區域中的其他節點以進行災難恢復。在這種情況下,如果您在意外故障後必須將DR節點聯機,則必須廢棄Always On AG配置並重新配置它們。此要求與Microsoft在此處發布的有關恢復在VM內運行的SQL Server Always On AG的異步快照的要求非常相似。

可用性組

從本質上講,就Always On可用性組嚮導而言,具有DataKeeper的SANLess SQL Server故障轉移群集實例看起來像SQL Server的單個實例。Always On AG的配置與在兩個獨立(非群集)SQL Server實例之間僅創建Always On AG的配置完全相同。真正的困惑在於,在此配置中,所有服務器都駐留在同一故障轉移群集中。但SQL Server FCI僅配置為僅在作為群集SQL Server實例安裝SQL Server的群集節點上運行。其他節點位於同一群集中。但是,SQL在這些節點上安裝為獨立SQL Server實例,而不是群集實例。這有點令人困惑。基本上正在發生的事情是Always On AG利用WSFC仲裁模型和聽眾。因此,所有AG副本都需要駐留在同一個WSFC中,即使它們通常不運行SQL Server的群集實例。如果你完全感到困惑,那麼大多數人在第一次嘗試圍繞這種混合配置時會感到困惑。這樣的配置的真正好處是,在許多情況下,SQL Server故障轉移群集實例可以比Always On AG更好,更具成本效益(在後面的*上更多)高可用性解決方案,但它缺乏提供可讀的輔助副本。添加Always On AG可讀輔助副本成為滿足此需求的可行選項。使用SIOS DataKeeper消除了對SQL Server FCI的SAN的需求,這開闢了配置SQL Server FCI的可能性,其中節點位於不同的數據中心,這也意味著支持跨Azure和ASP.NET中的可用區的SQL Server FCI。AWS。請注意,下圖僅是一種可能的配置。支持多個FCI集群節點,多個AG和多個副本。您只受限於您的SQL Server版本所施加的限制。本文似乎很好地記錄了設置步驟。當然,我將使用SIOS DataKeeper來構建FCI,而不是SQL FCI的共享存儲。

帶有可用性組的SQL Server FCI的映像結果

基本可用性組

從SQL Server 2016開始,縮小的“基本可用性組”在SQL Server標準版中可用,即使在SQL Server標準版中也可以進行此配置。基本AG僅限於每個可用性組的單個數據庫,單個副本(2個節點)。但是,它們不支持可讀的輔助副本,因此它們在此混合配置中的用例非常有限。

分佈式可用性組

此混合配置也支持SQL Server 2016中引入的分佈式AG。分佈式AG與常規AG非常相似,但副本不需要駐留在同一個集群中,甚至不需要駐留在同一個Windows域中。Microsoft記錄了分佈式可用性組的主要用例,如下所示:

  • 災難恢復和更輕鬆的多站點配置
  • 遷移到新硬件或配置,可能包括使用新硬件或更改底層操作系統
  • 通過跨多個可用性組,在單個可用性組中將可讀副本的數量增加到八個以上
分佈式可用性組的圖像結果

摘要

如果您喜歡SQL Server FCI的SQL Server高可用性的想法,但想要只讀輔助副本的靈活性,這種混合解決方案可能就是您正在尋找的東西。傳統的基於SAN的SQL Server FCI,甚至基於存儲空間直接(S2D)的FCI,都將您限制在單個數據中心。SIOS DataKeeper使您擺脫SAN的限制,並支持跨越可用區域或云區域的SQL Server FCI等配置。它還消除了對SAN的依賴,允許您利用本地連接的高速存儲設備,而無需放棄SQL Server故障轉移群集實例。

*如何省錢

早些時候我答應過,我會告訴你如何通過SQL Server標準版來實現這一切。如果您可以使用基於時間點的快照的可讀副本,則可以完全跳過Always On AG並僅使用SIOS DataKeeper目標端快照功能定期獲取目標服務器上卷的應用程序一致性快照,而不會影響正在進行的複制或可用性。這是如何做…

http://discover.us.sios.com/rs/siostechnology/images/10-Ways-Save-AlwaysOn-vs-Failover-Clustering.pdf

使用SQL Server Standard Edition創建一個雙節點SQL Server FCI,並在SQL許可證上節省大量資金。然而,仍然會將數據複製到群集外的第3個節點,以用於報告或DR目的。如果您拍攝第三台服務器上的捲快照,則可以直接訪問這些快照。 這樣,您可以從SQL Server的獨立實例安裝這些數據庫以運行月末報告,複製到存檔,或者您甚至可能希望使用這些快照使用最新的SQL快速輕鬆地更新QA和測試/開發環境數據。我希望您找到了創建指南以實現SQL Server高可用性,災難恢復與Always On Availability Groups和SANless SQL Server故障轉移群集實例的混合使用。

經Clusteringformeremortals.com許可轉載

Filed Under: 伺服器集群简单化 Tagged With: SQL Server故障轉移群集實例

在SQL Server 2008/2008 R2支持到期之前採取措施

13 1 月, 2019 by Jason Aw Leave a Comment

在SQL Server 2008/2008 R2支持到期之前採取措施

Tick Tock … 6個月,直到SQL Server 2008/2008 R2支持到期,除非你採取行動

還在運行SQL Server 2008/2008 R2嗎?您可能已經聽說過,自2019年7月9日起,您將不再受到支持。對於仍在此平台上運行且無法在截止日期之前升級到較新版本的SQL的客戶,Microsoft提供了兩種選項,可為其他三年的客戶提供擴展安全更新。

第一選擇

要在準備好之前阻止SQL Server 2008/2008 R2支持過期,您擁有的第一個選項需要每年購買“擴展安全更新”。擴展安全更新每年將花費75%的完整許可證費用。它還要求客戶使用有效的軟件保證,這通常是每年許可證成本的25%。如此有效地,要接收擴展安全更新,您需要每年為新的SQL Server許可證支付三年,或直到您從SQL Server 2008/2008 R2遷移。

第二選擇

但是,在SQL Server 2008/2008 R2支持到期之前還有另一個選項。 Microsoft已宣布,如果將SQL Server 2008 R2實例移至Azure,您將免費獲得擴展安全更新。當然,Azure中會產生每小時的基礎架構費用。此外,如果您希望將現有SQL許可證帶到Azure,則可以使用SQL Server實例時的付費或軟件保障費用。但是,這種成本包括在最先進的雲環境中運行的額外好處。這為您可能無法在本地提供的增強性能和HA / DR方案提供了機會。

一系列選項

Azure在CPU,內存和存儲配置方面提供了許多不同的選項。如果您正在尋找服務器或存儲升級,或者您現有的內部部署基礎架構正在進入刷新周期,那麼現在是了解Azure雲併升級性能和可用性的最佳時機。SQL Server 2008/2008 R2部署的生命週期。

99.99%的SLA

在高可用性和災難恢復配置方面,Azure提供高達99.99%的SLA。  要獲得SLA資格,您必須適當地利用其基礎架構。即便如此,SLA僅涵蓋實例的“撥號音”。由您來確保SQL Server具有高可用性,這通常是通過構建SQL Server故障轉移群集實例(FCI)來完成的。Azure具有適當的基礎結構,使您可以配置SQL Server FCI。但由於雲中缺少群集感知共享存儲,您需要使用SIOS DataKeeper來構建FCI。

SIOS DataKeeper的優點

SIOS DataKeeper取代了SQL Server FCI通常所需的共享存儲。相反,它允許您利用附加到每個實例的任何NTFS格式化卷。SIOS保持在實例之間複製卷,並將存儲作為名為DataKeeper Volume的資源提供給集群。就集群而言,DataKeeper Volume看起來像共享磁盤,但它不是控制SCSI保留(磁盤鎖定),而是控製鏡像方向,確保在活動服務器上進行寫入,並同步或異步複製到其他集群節點。最終用戶體驗與傳統的共享存儲集群完全相同。雖然在幕後,集群正在利用本地連接的存儲而不是共享存儲。

不同的機架

在Azure中,您的群集節點可以在不同的機架(故障域),數據中心(可用區)中運行,甚至可以在不同的地理區域中運行。SIOS DataKeeper支持所有三個選項:故障域,可用區或跨區域複製,以涵蓋HA和DR要求。AWS和Google Cloud中也可以進行類似的配置。

Azure中使用SIOS DataKeeper的典型雙節點SQL Server FCI配置[/ caption]

使用Azure站點恢復(ASR),您可以在區域對之間複製SQL Server的獨立或群集實例,而無需管理自己的災難恢復站點。當然,SQL Server很少獨自生活。因此,在將SQL Server實例移動到Azure的同時,您可能還希望將應用程序服務器移動到那裡,以便利用Azure中可用的性能和可用性升級。將SIOS DataKeeper與HA和ASR結合使用可提供經濟高效的HA和DR策略,這些策略在SAN複製和您自己的DR站點的實施中是不可能的,或者是非常昂貴的。

通用配置利用SIOS DataKeeper進行HA和Azure Site Recovery for DR [/ caption]

入門

雖然在Azure中啟動SQL Server實例只需要幾分鐘,但我不會等到最後一刻才進行遷移。請在接下來的幾個月內熟悉Azure,開始進行一些測試,然後計劃在2019年7月9日到期日之前完成遷移工作負載。在該日期之後運行SQL Server會使您容易受到任何新的安全威脅,並且還會使您失去合規性。您的老闆,更重要的是您的客戶,很高興知道,一旦您將工作負載遷移到Azure,他們的數據仍然是安全的,可用的和合規的。

享受SQL Server 2008/2008 R2支持過期後想要做什麼的提示,這裡有更多精彩的帖子閱讀經過Clusteringformeremortals.com許可轉載

Filed Under: 伺服器集群简单化 Tagged With: sql server 2008 2008 r2支持到期

如何在雲中的Windows上群集MaxDB

12 1 月, 2019 by Jason Aw Leave a Comment

如何在雲中的Windows上群集MaxDB

如何在雲中的Windows上群集MaxDB

如何在雲中的Windows上集群MaxDB #AZURE #AWS #GCP #SAP

最近,我有許多客戶正在尋找一種高可用性解決方案,以便在雲中的Windows上集群MaxDB。有些客戶使用Azure,有些客戶使用AWS。但無論云平台如何,他們最終都會在SAP社區WIKI中找到描述該流程的帖子。https://wiki.scn.sap.com/wiki/display/MaxDB/HowTo+-+Embed+SAP+MaxDB+in+MSCS

挑戰

此帖子在雲環境中面臨的挑戰是Azure,AWS或GCP中沒有可用於構建傳統共享存儲群集的共享存儲(SAN)。雲中HA的優點在於群集節點通常在另一個數據中心AKA,可用區(AZ)中彼此相隔數英里。因此,即使共享存儲可用,也不會有很多意義,因為它必須駐留在單個AZ中。它一起擊敗了HA的目的。

解決方案

但是,雲中的Windows上的群集MaxDB有一個答案。SIOS DataKeeper是SIOS技術的SANless集群解決方案。它允許在Windows Server故障轉移群集中使用本地連接的存儲。這消除了對SAN的需求。相反,SIOS使用同步塊級複製技術使本地連接磁盤保持同步,並將此存儲作為稱為DataKeeper卷的群集磁盤資源提供給WSFC。

可用區域內的典型雙節點WSFC,其中第三個節點位於不同的區域[/ caption]

就集群而言,DataKeeper Volume集群資源看起來像共享磁盤。但它不是控制磁盤鎖定(SCSI保留),而是控製鏡像方向。因此,除了使用本地連接存儲而不是共享存儲之外,從各個方面來說它仍然是真正的WSFC。本地連接的存儲可以是從EBS塊設備到Azure高級磁盤的任何內容,甚至可以是將多個磁盤剝離在一起的本地存儲空間。只要Windows看到帶有驅動器號的NTFS格式化卷並且每個實例上的捲大小相同,就可以在群集中使用它。

DataKeeper卷集群資源

這種類型的群集通常稱為SANless群集。它已經存在很多年,可以實現無法使用共享存儲的地理集群和集群。數據庫管理員也喜歡它,因為它使他們能夠使用本地高速存儲設備,如PCIe閃存或SSD驅動器。同時,仍然使用WSFC實現高可用性。SIOS還支持異步複製。因此,如果要在不同的地理位置添加節點以進行災難恢復,則可以構建一個3節點集群,其中2個節點位於同一區域但不同的故障域和第3個節點位於完全不同的區域,或者甚至可能返回災難恢復選項的內部部署。或者,如果您在Azure中,則可以利用Azure站點恢復(ASR)進行災難恢復,因為SIOS DataKeeper與ASR兼容。WSFC和SIOS DataKeeper都非常依賴於IP地址保持不變。因此,對於ASR配置,您需要確保在故障轉移時保留IP地址,如此處所述。https://docs.microsoft.com/en-us/azure/site-recovery/site-recovery-retain-ip-azure-vm-failover

樹液

SIOS對SAP的高可用性和災難恢復並不陌生。適用於Linux的SIOS Protection Suite是適用於SAP和SAP HANA的SAP認證HA解決方案。SIOS DataKeeper是雲環境中Windows上SAP ASCS的首選HA / DR解決方案。為Azure上的MaxDB提供HA / DR解決方案進一步鞏固了作為SAP高可用性專家的SIOS。如果您對SAP的高可用性有疑問,或者有關如何在雲中的Windows上群集MaxDB的更多詳細信息,請查看我們的其他帖子

經Clusteringformeremortals.com許可轉載

Filed Under: 伺服器集群简单化 Tagged With: 雲中的Windows上的群集maxdb

SQL Server for Linux的分步指南

9 1 月, 2019 by Jason Aw Leave a Comment

SQL Server for Linux - 現在提供公共預覽

循序漸進:SQL Server v.Next Linux高可用性 – 公共預覽#azure #sql #sanless

今年早些時候,微軟宣布他們將發布一個適用於Linux的SQL Server版本。 今天,我很高興得知微軟最終公佈了他們目前稱之為SQL Server v.Next的公開預覽,並且它可用於Linux和Windows操作系統。 可以在此處找到更多信息以及下載鏈接和文檔:

https://www.microsoft.com/en-us/sql-server/sql-server-vnext-including-Linux

SQL Server for Linux

在本文中,我將向您展示如何在運行SQL Server的Azure中部署Linux VM,以及如何配置雙節點故障轉移群集以使其高度可用!並且沒有使用共享存儲(也稱為“無聖”或“無共享”集群)。最終結果將是Microsoft Azure IaaS(基礎架構即服務)中的2節點SQL Server for Linux集群(以及見證服務器)。 該指南包括適當的屏幕截圖,shell命令和代碼片段。 我假設您對Microsoft Azure有點熟悉,並且已經擁有一個具有關聯訂閱的Azure帳戶。 如果沒有,您今天就可以註冊一個免費帳戶。 我還將假設您具有基本的Linux系統管理技能,並了解基本的故障轉移群集概念,如虛擬IP等。免責聲明:Azure是一個快速發展的目標。 在這裡,我正在使用SQL Server for Linux的公共預覽版。 因此,在SQL v.Next正式發布之前,功能/屏幕/按鈕必然會發生變化,因此您的體驗可能會與您在下面看到的略有不同。 雖然本指南將向您展示如何使SQL Server for Linux數據庫高度可用,但您當然可以調整此信息和過程以保護其他應用程序或數據庫,就像我之前所寫的那樣(MySQL示例)。以下是在Microsoft Azure IaaS中創建高可用性MySQL數據庫的高級步驟:

  1. 創建資源組
  2. 創建一個虛擬網絡
  3. 創建存儲帳戶
  4. 在可用性集中創建虛擬機
  5. 設置虛擬機靜態IP地址
  6. 將數據磁盤添加到群集節點
  7. 創建入站安全規則以允許VNC訪問
  8. Linux OS配置
  9. 安裝和配置SQL Server
  10. 安裝和配置群集
  11. 創建內部負載均衡器
  12. 測試群集連接

概觀

本文將介紹如何在單個Azure區域中創建集群。 由於新的Azure資源管理器(ARM),群集節點(sql-linux1,sql-linux2和見證服務器)將駐留在可用性集(3個不同的故障域和更新域)中。我們將使用新的Azure資源管理器創建所有資源。配置如下所示:將蔚Linux的SQLSERVER使用以下IP地址:

  • sql-linux1:10.0.0.7
  • sql-linux2:10.0.0.8
  • sql-witness:10.0.0.9
  • 虛擬/“浮動”IP:10.0.0.199
  • SQL Server端口:1433

創建資源組

首先,創建一個資源組。 您的資源組最終將包含與我們的集群部署相關的所有各種對象:虛擬機,存儲帳戶等。 在這裡,我們將調用我們新創建的資源組“sql-cluster”。SQL-資源組1 選擇您所在地區時請注意。 您的所有資源都需要位於同一區域內。 在這裡,我們將把所有內容部署到“美國西部”地區: SQL-資源組2

創建虛擬網絡(VNet)

接下來,如果您還沒有,請創建一個虛擬網絡。 虛擬網絡是Azure雲中專用於您的隔離網絡。 您可以完全控制IP地址塊和子網,路由,安全策略(即防火牆),DNS設置等內容。 您將在您的虛擬網絡中啟動Azure Iaas虛擬機(VM)。我的Azure帳戶已經有一個名為“cluster-network”的現有VNet(10.0.0.0/16),我將在本指南中使用它。 創建一個VNet非常簡單,如果你需要復習,我已經介紹過在這裡創建一個。

創建存儲帳戶

在配置任何虛擬機之前,您需要一個存儲帳戶來存儲它們。SQL的存儲帳戶1 接下來,為您的新存儲帳戶命名。 存儲帳戶名稱在* ALL * Azure中必須是唯一的。 (存儲在Azure存儲中的每個對像都具有唯一的URL地址。存儲帳戶名稱構成該地址的子域。)在此示例中,我將存儲帳戶稱為“sqllinuxcluster”,但您需要在設置自己的存儲帳戶時選擇不同的存儲帳戶。根據您的要求和預算選擇存儲類型。 為了本指南的目的,我選擇了“Standard-LRS”(即 本地冗餘)以最小化成本。確保您的新存儲帳戶已添加到您在相同位置(本示例中為“West US”)的步驟1(“sql-cluster”)中創建的資源組中: SQL的存儲帳戶2

在可用性集中創建虛擬機

我們將在本指南中配置3台虛擬機。 前兩個虛擬機(我稱之為“sql-linux1”和“sql-linux2”)將作為集群節點運行,能夠將SQL Server數據庫及其相關資源聯機。 第三個VM將充當群集的見證服務器,以增強對裂腦的保護。為確保最大可用性,所有3個VM都將添加到同一可用性集中,以確保它們最終位於不同的故障域和更新域中。Azure Marketplace有一個名為“Red Hat Enterprise Linux 7.2上的SQL Server vNext”的VM模板,它預安裝有一個公共預覽評估版SQL Server v.Next for Linux,這將為您節省幾個步驟。 如果您寧願從一個空VM開始並自己安裝SQL,可以在此處找到安裝說明。

創建“sql-linux1”VM

創建您的第一個VM(“sql-linux1”)並選擇上面提到的市場圖像。SQL創建-VM1 為VM提供主機名(“sql-linux1”)和用戶名/密碼,稍後將用於SSH進入系統。 確保將此VM添加到資源組(“sql-cluster”),並且它與所有其他資源位於同一區域:SQL創建-VM2接下來,選擇實例大小。 有關可用的各種實例大小的更多信息,請單擊此處。出於本指南的目的,我選擇了最小/最便宜的尺寸,在本例中為“DS1_V2標準”,以最大限度地降低成本,因為這不會運行生產工作負載。 根據您要測試的內容選擇最有意義的實例大小:重要信息SQL創建-VM3:默認情況下,您的VM不會添加到可用性集中。 在確保創建新可用性集期間的“設置”屏幕上,我們將調用“sql-availability-set”。 Azure資源管理器(ARM)允許您創建具有3個故障域的可用性集。 此處的默認值很好:在下SQL創建-VM4一個屏幕上,查看VM屬性,然後單擊“確定”以創建第一個VM。

創建“sql-linux2”和“sql-witness”VM

重複上述步驟兩次以創建另外兩個VM。這裡唯一的區別是你將把這些虛擬機添加到我們剛剛創建的可用性集(“sql-availability-set”)中。您的3個虛擬機可能需要一段時間才能配置。 完成後,您將在Azure門戶的“虛擬機”屏幕上看到您的VM(sql-linux1,sql-linux2和sql-witness)。

設置虛擬機靜態IP地址

將使用以下IP地址設置VM:

  • sql-linux1:10.0.0.7
  • sql-linux2:10.0.0.8
  • sql-witness:10.0.0.9

對每個VM重複此步驟。 選擇VM並編輯網絡接口選SQL-靜態IP1擇與VM關聯的網絡接口,然後編輯IP配置。 選擇“靜態”並指定所需的IP地址: SQL靜態-IP2

將數據磁盤添加到群集節點

接下來,我們需要為我們的集群節點添加額外的磁盤(“sql-linux1”和“sql-linux2”)。 該磁盤將存儲我們的SQL數據庫,稍後將在節點之間進行複制。注意:您不需要向“sql-witness”節點添加額外的磁盤。 只有“sql-linux1”和“sql-linux2”。編輯VM,選擇“磁盤”,然後附加新磁盤。 根據您的工作負載選擇磁盤類型(標准或高級SSD)和大小。 在這裡,我在兩個群集節點上創建了一個10GB標準磁盤。 就主機緩存而言,“無”或“只讀”緩存很好。 我不建議使用“讀/寫”,因為可能會丟失數據: SQL-附加的disk1

創建入站安全規則以允許VNC訪問

如果您的VM是網絡安全組(NSG)的一部分,默認情況下,除非您在創建VM期間禁用它,否則“Azure防火牆”中打開的唯一端口是SSH(端口22)。 在本指南的後面,我將使用VNC訪問“sql-linux1”的桌面並使用GUI配置集群。 創建入站安全規則以打開VNC訪問。 在該指南中使用端口5902。 根據您的VNC配置進行調整。虛擬機 – >(選擇sql-linux1) – >網絡接口 – >(選擇網卡) – >網絡安全組 – >(選擇NSG) – >入站安全規則 – >添加 SQL-安全組1

Linux OS配置

這裡我們將離開Azure門戶一段時間,並在命令行上弄髒我們,作為Linux管理員,您現在應該習慣這樣做。 您沒有獲得Azure中Linux VM的root密碼,因此一旦您以創建VM期間指定的用戶身份登錄,請使用“sudo”命令獲取root權限:

$ sudo su  - 

編輯/ etc / hosts

除非您已經設置了DNS服務器,否則您需要在所有3台服務器上創建主機文件條目,以便它們可以通過名稱正確地相互解析。將以下行添加到/ etc / hosts文件的末尾:

10.0.0.7 sql-linux1
10.0.0.8 sql-linux2
10.0.0.9 sql-witness
10.0.0.199 sql-vip

禁用SELinux

編輯/ etc / sysconfig / linux並設置“SELINUX = disabled”:

#vi / etc / sysconfig / selinux

#此文件控制系統上SELinux的狀態。
#SELINUX =可以採用以下三個值中的一個:
#enforcing  - 強制執行SELinux安全策略。
#permissive  -  SELinux打印警告而不是強制執行。
#disabled  - 未加載SELinux策略。
SELINUX =禁用
#SELINUXTYPE =可以採用以下兩個值之一:
#targeted  - 目標進程受到保護,
#mls  - 多級安全保護。
SELINUXTYPE =針對性

配置iptables,以便集群虛擬IP可以正常工作

為了實現與群集虛擬IP的連接以及IP資源的監控,需要設置一些iptables規則。 注意:10.0.0.199是我們將在群集中使用的虛擬IP,1433是我的SQL Server使用的默認端口。注意:RHEL7將默認防火牆更改為FirewallD,而不是iptables。 還沒有花太多時間在firewalld,所以現在這個指南將禁用firewalld並使用iptables代替。 您還需要安裝“iptables-services”軟件包,以便下面的service和chkconfig命令可以正常工作。

#systemctl stop firewalld
#systemctl禁用firewalld

在sql-linux1(10.0.0.7)上,運行以下命令:

#yum install iptables-services
#iptables --flush
#iptables -t nat -A PREROUTING -p tcp --dport 1433 -j DNAT --to-destination 10.0.0.199:1433
#iptables -t nat -A PREROUTING -p tcp --dport 1434 -j DNAT --to-destination 10.0.0.199:1434
#iptables -t nat -A POSTROUTING -p icmp -s 10.0.0.199 -j SNAT --to-source 10.0.0.7 
#service iptables save 
#chkconfig iptables on 

在sql-linux2(10.0.0.8)上,運行以下命令:

#yum install iptables-services
#iptables --flush 
#iptables -t nat -A PREROUTING -p tcp --dport 1433 -j DNAT --to-destination 10.0.0.199:1433
#iptables -t nat -A PREROUTING -p tcp --dport 1434 -j DNAT --to-destination 10.0.0.199:1434
#iptables -t nat -A POSTROUTING -p icmp -s 10.0.0.199 -j SNAT --to-source 10.0.0.8 
#service iptables save 
#chkconfig iptables on

安裝和配置VNC(及相關軟件包)

為了訪問我們的linux服務器的GUI,以及稍後安裝和配置我們的集群,安裝VNC服務器,以及一些其他必需的軟件包(集群軟件需要redhat-lsb和patch rpms)。

#yum install tigervnc-server xterm wget unzip patch redhat-lsb
#vncpasswd

以下URL是在RHEL 7 / CentOS 7上運行VNC服務器的一個很好的指南:https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-remote-access-for -the-gnome-desktop-on-centos-7注意:此示例配置在顯示器2(:2,也稱為端口5902)和root(不安全)上運行VNC。  相應調整!

#cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.service
#vi /etc/systemd/system/vncserver@:2.service


[服務]
類型=分叉
#清除/tmp/.X11-unix環境中的所有現有文件
ExecStartPre = / bin / sh -c'/ usr / bin / vncserver -kill%i> / dev / null 2>&1 || :“
ExecStart = / sbin / runuser -l root -c“/ usr / bin / vncserver%i -geometry 1024x768”
PIDFILE = /根/ .vnc /%H%i.pid
ExecStop = / bin / sh -c'/ usr / bin / vncserver -kill%i> / dev / null 2>&1 || :“


#systemctl daemon-reload
#systemctl enable vncserver @:2.service
#vncserver:2 -geometry 1024x768

重新啟動群集節點

重新啟動群集節點,以便禁用SELinux,並檢測先前添加的第二個磁盤。

分區和格式化“數據”磁盤

在本指南的第6步(“將數據磁盤添加到群集節點”中),我們只是… …為每個群集節點添加了一個額外的磁盤,以存儲我們將要保護的應用程序數據。 在這種情況下,它恰好是MySQL數據庫。在Azure IaaS中,Linux虛擬機對磁盤使用以下安排:

  • / dev / sda – 操作系統磁盤
  • / dev / sdb – 臨時磁盤
  • / dev / sdc – 第一個數據磁盤
  • / dev / sdd – 第二個數據磁盤
  • …
  • / dev / sdj – 第8個數據磁盤

我們在本指南的第6步中添加的磁盤應顯示為/ dev / sdc。 您可以運行“fdisk -l”命令進行驗證。 您將看到/ dev / sda(OS)和/ dev / sdb(臨時)已經有磁盤分區並正在使用。

#fdisk -l

磁盤/ dev / sda:31.5 GB,31457280000字節,61440000個扇區
單位= 1 * 512 = 512字節的扇區
扇區大小(邏輯/物理):512字節/ 4096字節
I / O大小(最小/最佳):4096字節/ 4096字節
磁盤標籤類型:dos
磁盤標識符:0x000c46d3

設備啟動開始結束塊ID系統
/ dev / sda1 * 2048 1026047 512000 83 Linux
/ dev / sda2 1026048 61439999 30206976 83 Linux

磁盤/ dev / sdb:7516 MB,7516192768字節,14680064個扇區
單位= 1 * 512 = 512字節的扇區
扇區大小(邏輯/物理):512字節/ 4096字節
I / O大小(最小/最佳):4096字節/ 4096字節
磁盤標籤類型:dos
磁盤標識符:0x7cd70e11

設備啟動開始結束塊ID系統
/ dev / sdb1 128 14678015 7338944 83 Linux

磁盤/ dev / sdc:10.7 GB,10737418240字節,20971520扇區
單位= 1 * 512 = 512字節的扇區
扇區大小(邏輯/物理):512字節/ 4096字節
I / O大小(最小/最佳):4096字節/ 4096字節

在這裡,我將創建一個分區(/ dev / sdc1),對其進行格式化,並將其掛載到SQL的默認位置,即/ var / opt / mssql。 在“sql-linux1”和“sql-linux2”上執行以下步驟:

#fdisk / dev / sdc
命令(m求助):n
命令行動
擴展
p主分區(1-4)
p
分區號(1-4):1
第一個柱面(1-1305,默認值1):<enter>
使用默認值1
最後一個氣缸,氣缸或尺寸{K,M,G}(1-1305,默認1305):<enter>
使用默認值1305
 
命令(m求助):w
分區表已被更改!
調用ioctl()重新讀取分區表。
同步磁盤。
[root @sql-linux1~]#
#mkfs.ext4 / dev / sdc1
#mkdir / var / opt / mssql
#chmod 770 / var / opt / mssql

掛載文件系統:

#mount / dev / sdc1 / var / opt / mssql

安裝和配置SQL Server

如果您從一個全新的Linux系統開始,可以在此處找到完整的安裝說明。如果您使用“Red Hat Enterprise Linux 7.2上的SQL Server vNext”Azure模板創建了VM,就像我在本指南中所做的那樣,那麼已經安裝了SQL Server。 您現在需要做的就是運行安裝腳本:

#/ opt / mssql / bin / sqlservr-setup
Microsoft(R)SQL Server(R)安裝程序

您可以通過按Ctrl-C隨時中止設置。啟動這個程序
使用--help選項獲取有關在無人參與的情況下運行它的信息
模式。

可以從中下載此產品的許可條款
http://go.microsoft.com/fwlink/?LinkId=746388找到了
在/usr/share/doc/mssql-server/LICENSE.TXT中。

你接受許可條款嗎?如果是,請輸入“是”:是

請輸入系統管理員(SA)帳戶的密碼:<輸入所需的密碼>
請確認系統管理員(SA)帳戶的密碼:<輸入所需的密碼>

設置系統管理員(SA)帳戶密碼...

您是否希望立即啟動SQL Server服務?[y / n]:y
您是否希望啟用SQL Server啟動?[y / n]:n

您可以使用sqlservr-setup --enable-service啟用SQL Server
在開機。

安裝成功完成。

驗證服務是否正在運行:

#systemctl status mssql-server

在兩個節點上停止SQL Server。 集群軟件稍後將負責啟動它:

#systemctl stop mssql-server
#systemctl stop mssql-server-telemetry

安裝和配置群集

此時,我們已準備好安裝和配置我們的集群。 SIOS Protection Suite for Linux(又名SPS-Linux)將在本指南中用作群集技術。 它在單個集成解決方案中提供高可用性故障轉移群集功能(LifeKeeper)以及實時,塊級數據複製(DataKeeper)。 SPS-Linux使您能夠部署“SANLess”群集,即“無共享”群集,這意味著群集節點沒有任何共享存儲,就像Azure VM一樣。

安裝適用於Linux的SIOS Protection Suite

在所有3個虛擬機上執行以下步驟(sql-linux1,sql-linux2,sql-witness):下載SPS-Linux安裝映像文件(sps.img),並獲取試用許可證或購買永久許可證。 有關更多信息,請聯繫SIOS。您將環回安裝它並以root身份運行“setup”腳本(或者首先“sudo su – ”以獲取root shell,如果您還沒有)例如:

#mkdir / tmp / install
#mount -o loop sps.img / tmp / install
#cd / tmp / install
# 。/建立

在安裝腳本期間,系統會提示您回答一些問題。 您將在幾乎每個屏幕上按Enter鍵以接受默認值。 請注意以下例外情況:

  • 在標題為“High Availability NFS”的屏幕上,您可以選擇“n”,因為我們不會創建高可用性NFS服務器
  • 在安裝腳本結束時,您可以選擇立即或稍後安裝試用許可證密鑰。我們稍後會安裝許可證密鑰,因此您可以安全地選擇“n”
  • 在“設置”的最後一個屏幕中,從屏幕上顯示的列表中選擇要安裝的ARK(應用程序恢復工具包,即“群集代理”)。
    • 僅在“sql-linux1”和“sql-linux2”上需要ARK。 你不需要在“sql-witness”上安裝
    • 使用向上/向下箭頭導航列表,然後按空格鍵選擇以下內容:
      • lkDR – 適用於Linux的DataKeeper
    • 這將導致在“sql-linux1”和“sql-linux2”上安裝以下附加RPM:
      • SteelEye公司 – LKDR-9.0.2-6513.noarch.rpm

安裝Witness / Quorum包

LifeKeeper(steeleye-lkQWK)的Quorum / Witness服務器支持包與LifeKeeper核心的現有故障轉移過程相結合,可以在總體網絡故障常見的情況下以更大的可信度進行系統故障轉移。這實際上意味著可以在大大降低“裂腦”情況的風險的同時進行故障轉移。在所有3個節點上安裝Witness / Quorum rpm(sql-linux1,sql-linux2,sql-witness):

#cd / tmp / install / quorum
#rpm -Uvh steeleye-lkQWK-9.0.2-6513.noarch.rpm

在所有3個節點(sql-linux1,sql-linux2,sql-witness)上,編輯/ etc / default / LifeKeeper,設置NOBCASTPING = 1僅打開Witness服務器(“sql-witness”),編輯/ etc / default / LifeKeeper ,設置WITNESS_MODE = off / none

安裝許可證密鑰

在所有3個節點上,使用“lkkeyins”命令安裝從SIOS獲取的許可證文件:

#/ opt / LifeKeeper / bin / lkkeyins <path_to_file> / <filename> .lic

啟動LifeKeeper

在所有3個節點上,使用“lkstart”命令啟動集群軟件:

#/ opt / LifeKeeper / bin / lkstart

設置LifeKeeper GUI的用戶權限

在所有3個節點上,編輯/ etc / group並將“tony”用戶(或在VM創建期間指定的任何用戶名)添加到“lkadmin”組以授予對LifeKeeper GUI的訪問權限。 默認情況下,只有“root”是該組的成員,並且我們沒有root密碼:

#vi / etc / group

lkadmin:X:1001:根,貝

打開LifeKeeper GUI

建立與sql-linux1的公共IP地址的VNC連接。 根據上面的VNC和入站安全規則配置,您將使用之前指定的VNC密碼連接到<Public_IP>:2。 登錄後,打開終端窗口並使用以下命令運行LifeKeeper GUI:

#/ opt / LifeKeeper / bin / lkGUIapp&

系統將提示您連接到第一個群集節點(“sql-linux1”)。 輸入在VM創建期間指定的linux用戶標識和密碼:SQL-GUI的login1接下來,通過單擊以下屏幕截圖中突出顯示的“連接到服務器”按鈕連接到“sql-linux2”和“sql-witSQL-GUI的CONNECT1ness”:您現在應該看到所有3個服務器GUI,帶有綠色複選標記圖標,表示他們在線且健康: SQL-GUI的CONNECT2

創建溝通路徑

右鍵單擊“sql-linux1”並選擇Create Comm PaSQL-GUI的COMM1th選擇“sql-linux2”和“sql-witness”,然後按照嚮導進行操作。 這將創建以下之間的通信路徑:

  • sql-linux1和sql-linux2
  • sql-linux1&sql-witness

SQL-GUI的COMM2 仍然需要在sql-linux2和sql-witness之間創建一個comm路徑。  右鍵單擊“sql-linux2”並選擇Create Comm Path。 按照嚮導並選擇“sql-witness”作SQL-GUI的comm3為遠程服務器:此時已創建以下通信路徑:

  • sql-linux1 < – > sql-linux2
  • sql-linux1 < – > sql-witness
  • sql-linux2 < – > sql-witness

服務器前面的圖標已從綠色“複選標記”更改為黃色“危險標記”。 這是因為我們在節點之間只有一條通信路徑。如果VM具有多個NIC(可以在此處找到有關創建具有多個NIC的Azure VM的信息,但本文不會介紹這些信息),則可以在每個服務器之間創建冗餘通信路徑。SQL-GUI的comm4 要刪除警告圖標,請轉到“查看”菜單,然後取消選擇“Comm Path Redundancy WarningSQL-GUI的comm5”:結果: SQL貴節點綠色

驗證通信路徑

使用“lcdstatus”命令查看群集資源的狀態。 運行以下命令以驗證您是否已在每個節點上正確創建了其他兩個服務器的通信路徑:#/ opt / LifeKeeper / bin / lcdstatus -q -d sql-linux1 MACHINE NETWORK ADDRESSES / DEVICE STIO PRIO sql-linux2 TCP 10.0.0.7/10.0.0.8 ALIVE 1 sql-witness TCP 10.0.0.7/10.0.0.9 ALIVE 1#/ opt / LifeKeeper / bin / lcdstatus -q -d sql-linux2 MACHINE NETWORK ADDRESSES / DEVICE STIO PRIO sql-linux1 TCP 10.0 .0.8 / 10.0.0.7 ALIVE 1 sql-witness TCP 10.0.0.8/10.0.0.9 ALIVE 1#/ opt / LifeKeeper / bin / lcdstatus -q -d sql-witness MACHINE NETWORK ADDRESSES / DEVICE STATE PRIO sql-linux1 TCP 10.0。0.9 / 10.0.0.7 ALIVE 1 sql-linux2 TCP 10.0.0.9/10.0.0.8 ALIVE 1

創建數據複製群集資源(即 鏡子)

在繼續執行此步驟之前,請確保/ var / opt / mssql在sql-linux1上已安裝,但在sql-linux2上未安裝。 如果需要,在sql-linux2上運行“umount / var / opt / mssql”。接下來,創建數據複製資源以將/ var / opt / mssql分區從sql-linux1(源)複製到sql-linux2(目標)。 

 
 
 
 
 
 
 
 
 

  

 
 
 
 
 
 
 
 
 
 

  

 

  

 
 
 
 
 
 
 

 

 
 
 
 
 
 
 
 

 

          

 

   

  •  
  •  
  •  
  •  
 

 

 

 
 
 

 

 
 
 

 

 
 
 

 

 
 
 

 

 

 

   

 
 
 
 
 
 
 
 
 
 

 

 
 
 
 
 
 

  

 

        

 

              

 

  

 

 

 
 

 
 

 

  

 

 

 
 

 
 

 

 

 

Filed Under: 伺服器集群简单化 Tagged With: SQL Server for Linux

循序漸進:如何在沒有共享存儲的情況下在Google Cloud Platform(Google Compute Engine)上配置Linux故障轉移群集#google #gce #sanless #cluster

6 1 月, 2019 by Jason Aw Leave a Comment

循序漸進:如何在沒有共享存儲的情況下在Google Cloud Platform(Google Compute Engine)上配置Linux故障轉移群集#google #gce #sanless #cluster

在本分步指南中,我將向您介紹在Google Cloud Platform(Google Compute Engine,又名GCE)中配置高可用性2節點MySQL群集(以及見證服務器)所需的所有步驟。 該指南包括適當的屏幕截圖,shell命令和代碼片段。 我假設您對Google Cloud Platform有點熟悉並且已經擁有一個帳戶。 如果沒有,您今天就可以報名參加免費試用。 我還將假設您具有基本的Linux系統管理技能,並了解基本的故障轉移群集概念,如虛擬IP,仲裁等。

免責聲明:雲是一個快速發展的目標。 因此,功能/屏幕/按鈕必然會隨著時間的推移而發生變化,因此您的體驗可能會與您在下面看到的略有不同。 雖然本指南將向您展示如何使MySQL數據庫具有高可用性,但您當然可以調整此信息和流程以保護其他應用程序或數據庫,如SAP,PostgreSQL,Oracle,WebSphere MQ,NFS文件服務器等。以下是在Google Compute Engine中創建高可用性MySQL數據庫的高級步驟:

  1. 創建一個項目
  2. 創建實例(虛擬機)
  3. 創建實例組
  4. 創建防火牆規則以允許VNC訪問
  5. Linux OS配置
  6. 安裝和配置MySQL
  7. 安裝和配置群集
  8. 創建內部負載均衡器
  9. 為內部負載均衡器創建防火牆規則
  10. 測試群集連接

概觀

本文將介紹如何在單個Google Cloud區域內創建群集。 群集節點(node1,node2和見證服務器)將全部駐留在“us-central1”區域(10.128.0.0/20網絡)中,但您可以相應地選擇您的區域。配置如下所示:將使用以下IP地址:

  • node1:10.128.0.2
  • node2:10.128.0.3
  • 見證人:10.128.0.4
  • 內部負載均衡器IP:10.128.0.99
  • MySQL端口:3306

創建一個項目

首次登錄時,您將看到一個空的Home Dashboard,並將被要求創建一個Project。 我們將創建的所有Google Compute Engine資源都屬於此Google Cloud Platform項目。 在這裡,我們將調用我們新創建的項目“LinuxCluster”:

創建實例(虛擬機)

我們將在本指南中配置3台虛擬機。 前兩個VM(我稱之為“node1”和“node2”)將作為集群節點運行,能夠將MySQL數據庫及其相關資源聯機。 第三個VM將充當群集的見證服務器,以增強對裂腦的保護。為確保最大可用性,所有3個VM將駐留在該區域內的不同區域中(在此示例中:us-central1-a,us-central1-b,us-central1-c)。

創建“節點1”實例

創建第一個VM實例(“node1”)。 如果這是您第一次創建實例,則屏幕將如下圖所示。單擊屏幕中央的“創建實例”按鈕:如果您已在GCE中運行其他實例,則您的屏幕看起來會有所不同。 仍然,單擊“創建實例”繼續:默認情況下,默認情況下通常會選擇Debian linux。 我們*不要*因為我們將在本指南中使用CentOS 6.X。為實例命名(“node1”),選擇我們區域內的第一個區域(a)(us-central1),並確保單擊“更改”以選擇正確的引導映像。 您可以根據工作負載要求調整實例的大小,但出於本指南的目的,我們將使用默認大小來最小化成本,這是一個相當小的VM(1個vCPU,只有3.75GB RAM)在Boot disk pop中在屏幕上,選擇CentOS 6,在底部我們將使用SSD啟動盤。 對於本指南而言,10GB就足夠了。 您可以相應地調整系統大小:單擊“選擇”後,您將返回“創建實例”屏幕。 在底部,單擊“管理,磁盤,網絡,SSH密鑰”,因為我們將向VM添加第二個磁盤。 第二個磁盤將用於存儲我們的數據庫,它將在以後由集群軟件複製/同步。  選擇“Disks”選項卡,然後單擊“Add item”將第二個磁盤添加到此實例:單擊“Create disk”:為新磁盤命名,選擇所需類型,然後從空白磁盤開始。 在此示例配置中,10 GB應該足以滿足我們的需求。 注意:記住您在此處設置的值。 兩個群集節點(node1和node2)都需要是SAME SIZE:最後,單擊“Networking”選項卡,並為node1提供客戶內部IP。 單擊“創建”以啟動新實例:

創建“node2”

重複上述步驟兩次以創建第二個群集節點(“node2”)。 像創建node1一樣創建此實例,包括添加第二個磁盤。重要提示:確保它位於不同的區域(us-central1-b)並為其提供唯一的IP(10.128.0.3)

創建“見證”VM

創建第三個VM(“見證”)並確保它位於前兩個實例的不同區域(us-central1-c)中。注意:此實例不需要添加額外的磁盤。 您的3個VM實例可能需要一段時間才能進行配置。 完成後,您將在Google雲端控制台的VM Instances屏幕上看到您的VM。 驗證是否已將每個VM正確啟動到其他區域:  

創建實例組

在本指南的後面部分,我們將創建一個內部負載均衡器,以將流量路由到活動群集節點。 Google Cloud Platform上可用的所有可能的負載均衡器配置都需要實例組來為負載均衡器發送的流量提供服務。將創建兩個實例組,每個實例組將包含一個群集節點。

創建實例組1

為您的第一個實例組命名(“instance-group-1a”),選擇“Single-zone”並確保正確選擇第一個VM實例所在的區域。 在這裡,我們選擇us-central-1a,因為那是部署“node1”的地方。 在下面,選擇“選擇現有實例”並從VM實例下拉列表中選擇“node1”:

創建實例組2

再次重複上一步,這次選擇第二個節點所在的區域。 us-central-1b和node2:

創建防火牆規則以允許VNC訪問

您可以通過導航到以下內容來查看所有現有防火牆規則:網絡 – >防火牆規則默認情況下,從外部世界打開到您的VM的“Google防火牆”中打開的唯一端口是ping,SSH(端口22)和RDP(港口3389)。 在本指南的後面,我們將使用VNC訪問“node1”的桌面並使用GUI配置集群。 創建防火牆規則以允許VNC訪問。 在該指南中使用端口5902。 根據您的VNC配置進行調整。  

Linux OS配置

接下來,我們需要配置我們實例的Linux操作系統並在命令行上弄髒,作為Linux管理員,您現在應該習慣這樣做。有許多方法可以連接到Linux VM的控制台。 您可以直接從GCE Web界面啟動SSH連接,也可以在筆記本電腦/工作站上本地安裝Google Cloud SDK。要使用瀏覽器進行SSH,只需轉到計算 – > VM實例,然後轉到要連接的VM的右側,在“連接”下選擇“在瀏覽器窗口中打開”。 如果您希望在筆記本電腦/工作站上本機安裝Google Cloud命令行工具,請參閱此處的文檔:https://cloud.google.com/sdk/docs/quickstarts連接後,使用“sudo”命令獲得root權限:

$ sudo su  - 

編輯/ etc / hosts

除非您已經設置了DNS服務器,否則您需要在所有3台服務器上創建主機文件條目,以便它們可以通過名稱正確地相互解析。將以下行添加到/ etc / hosts文件的末尾:

10.128.0.2 node1
10.128.0.3 node2
10.128.0.4證人
10.128.0.99 mysql-vip

禁用SELinux

編輯/ etc / sysconfig / linux並設置“SELINUX = disabled”:

#vi / etc / sysconfig / selinux

#此文件控制系統上SELinux的狀態。
#SELINUX =可以採用以下三個值中的一個:
#enforcing  - 強制執行SELinux安全策略。
#permissive  -  SELinux打印警告而不是強制執行。
#disabled  - 未加載SELinux策略。
SELINUX =禁用
#SELINUXTYPE =可以採用以下兩個值之一:
#targeted  - 目標進程受到保護,
#mls  - 多級安全保護。
SELINUXTYPE =針對性

安裝各種RPM包

接下來,安裝一些rpm軟件包,稍後將需要這些軟件包作為我們的集群軟件的先決條件:

#yum install redhat-lsb補丁

安裝和配置VNC(及相關軟件包)

要訪問我們的Linux服務器的GUI,以便稍後配置我們的集群,請在您的集群節點上安裝VNC服務器。 在我的設置中,我只在“node1”上執行此操作

#yum install tigervnc-server xterm
#vncpasswd
#vi / etc / sysconfig / vncservers

      VNCSERVERS =“2:根”
      VNCSERVERARGS [2] =“ - 幾何1024x768”

#service vncserver start
#chkconfig vncserver on

通過在筆記本電腦/台式機上打開VNC客戶端並連接到群集節點的公共IP來測試連接性

重新啟動群集節點

重新啟動以禁用SELinux。需要重新啟動所有3個系統(node1,node2,見證)。

分區和格式化“數據”磁盤

在VM實例創建期間,為每個群集節點添加了一個額外的磁盤,以存儲我們將要保護的應用程序數據。 在這種情況下,它恰好是MySQL數據庫。我們的VM的磁盤配置如下:

  • / dev / sda – 操作系統磁盤
  • / dev / sdb – 數據磁盤

在實例創建/ dev / sdb期間添加了第二個磁盤。 您可以運行“fdisk -l”命令進行驗證。 您將看到/ dev / sda(OS)已經有一個磁盤分區並正在使用。

#fdisk -l

磁盤/ dev / sda:10.7 GB,10737418240字節
255個頭,63個扇區/軌道,1305個氣缸
單位= 16065 * 512 = 8225280字節的柱面
扇區大小(邏輯/物理):512字節/ 4096字節
I / O大小(最小/最佳):4096字節/ 4096字節
磁盤標識符:0x00035e98

 設備啟動開始結束塊ID系統
/ dev / sda1 * 1 1306 10484736 83 Linux

磁盤/ dev / sdb:10.7 GB,10737418240字節
64個頭,32個扇區/軌道,10240個氣缸
單位= 2048 * 512 = 1048576字節的柱面
扇區大小(邏輯/物理):512字節/ 4096字節
I / O大小(最小/最佳):4096字節/ 4096字節
磁盤標識符:0x762b810b


這裡我們將創建一個分區(/ dev / sdb1),對其進行格式化,並將其掛載到MySQL的默認位置,即/ var / lib / mysql。 在“node1”和“node2”上執行以下步驟:

#fdisk / dev / sdb
命令(m求助):n
命令行動
擴展
p主分區(1-4)
p
分區號(1-4):1
第一個柱面(1-1305,默認值1):<enter>
使用默認值1
最後一個氣缸,氣缸或尺寸{K,M,G}(1-1305,默認1305):<enter>
使用默認值1305
 
命令(m求助):w
分區表已被更改!
調用ioctl()重新讀取分區表。
同步磁盤。
[root @ node1~]#

#mkfs.ext4 / dev / sdb1
#mkdir / var / lib / mysql

在node1上,掛載文件系統:

#mount / dev / sdb1 / var / lib / mysql

安裝和配置MySQL

接下來,安裝安裝MySQL包,初始化示例數據庫,並為MySQL設置“root”密碼。

在“node1”上:

#yum -y install mysql mysql-server
#/ usr / bin / mysql_install_db --datadir =“/ var / lib / mysql /” -  user = mysql
#mysqld_safe --user = root --socket = / var / lib / mysql / mysql.sock --port = 3306 --datadir = / var / lib / mysql --log&
#
##注意:下一個命令允許來自任何主機的遠程連接。生產不是一個好主意!
#echo“update user set Host ='%'where host ='node1'; flush privileges”| mysql mysql
#
##將MySQL的root密碼設置為'SIOS'
#echo“update user set Password = PASSWORD('SIOS')其中User ='root'; flush特權”| mysql mysql

創建MySQL配置文件。我們將它放在數據磁盤上(稍後將被複製 – /var/lib/mysql/my.cnf)。 例:

#vi /var/lib/mysql/my.cnf

的[mysqld]
DATADIR =的/ var / lib中/ MySQL的
插座=的/ var / lib中/ MySQL的/的mysql.sock
PID文件=的/ var / lib中/ MySQL的/ mysqld.pid
用戶=根
端口= 3306
#建議禁用符號鏈接以防止出現各種安全風險
符號鏈接= 0
 
[mysqld_safe的]
對數誤差=的/ var /數/ mysqld.log
PID文件= / var / run中/ mysqld的/ mysqld.pid
 
[客戶]
用戶=根
密碼= SIOS

刪除位於/ etc中的原始MySQL配置文件(如果存在):

#rm /etc/my.cnf

在“node2”上:

在“node2”上,您只需要安裝MySQL軟件包。 其他步驟不是必需的:

[root @ node2~] #yum -y install mysql mysql-server

安裝和配置群集

此時,我們已準備好安裝和配置我們的集群。 SIOS Protection Suite for Linux(又名SPS-Linux)將在本指南中用作群集技術。 它在單個集成解決方案中提供高可用性故障轉移群集功能(LifeKeeper)以及實時,塊級數據複製(DataKeeper)。 SPS-Linux使您能夠部署“SANLess”群集,即“無共享”群集,這意味著群集節點沒有任何共享存儲,就像Azure VM一樣。

安裝適用於Linux的SIOS Protection Suite

在所有3個VM(node1,node2,見證)上執行以下步驟:下載SPS-Linux安裝映像文件(sps.img),並獲取試用許可證或購買永久許可證。 有關更多信息,請聯繫SIOS。您將環回安裝它並以root身份運行“setup”腳本(或首先“sudo su – ”以獲取根shell)例如:

#mkdir / tmp / install
#mount -o loop sps.img / tmp / install
#cd / tmp / install
# 。/建立

在安裝腳本期間,系統會提示您回答一些問題。 您將在幾乎每個屏幕上按Enter鍵以接受默認值。 請注意以下例外情況:

  • 在標題為“High Availability NFS”的屏幕上,您可以選擇“n”,因為我們不會創建高可用性NFS服務器
  • 在安裝腳本結束時,您可以選擇立即或稍後安裝試用許可證密鑰。我們稍後會安裝許可證密鑰,因此您可以安全地選擇“n”
  • 在“設置”的最後一個屏幕中,從屏幕上顯示的列表中選擇要安裝的ARK(應用程序恢復工具包,即“群集代理”)。
    • 僅在“node1”和“node2”上需要ARK。 你不需要在“見證”上安裝
    • 使用向上/向下箭頭導航列表,然後按空格鍵選擇以下內容:
      • lkDR – 適用於Linux的DataKeeper
      • lkSQL – LifeKeeper MySQL RDBMS恢復工具包
    • 這將導致在“node1”和“node2”上安裝以下附加RPM:
      • SteelEye公司 – LKDR-9.0.2-6513.noarch.rpm
      • SteelEye公司 – lkSQL-9.0.2-6513.noarch.rpm

安裝Witness / Quorum包

LifeKeeper(steeleye-lkQWK)的Quorum / Witness服務器支持包與LifeKeeper核心的現有故障轉移過程相結合,可以在總體網絡故障常見的情況下以更大的可信度進行系統故障轉移。這實際上意味著可以在大大降低“裂腦”情況的風險的同時進行故障轉移。在所有3個節點(node1,node2,見證)上安裝Witness / Quorum rpm:

#cd / tmp / install / quorum
#rpm -Uvh steeleye-lkQWK-9.0.2-6513.noarch.rpm

在所有3個節點(node1,node2,見證)上,編輯/ etc / default / LifeKeeper,設置NOBCASTPING = 1僅打開見證服務器(“見證”),編輯/ etc / default / LifeKeeper,設置WITNESS_MODE = off / none

安裝許可證密鑰

在所有3個節點上,使用“lkkeyins”命令安裝從SIOS獲取的許可證文件:

#/ opt / LifeKeeper / bin / lkkeyins <path_to_file> / <filename> .lic

啟動LifeKeeper

在所有3個節點上,使用“lkstart”命令啟動集群軟件:

#/ opt / LifeKeeper / bin / lkstart

設置LifeKeeper GUI的用戶權限

在所有3個節點上,編輯/ etc / group並將“tony”用戶(或您登錄的任何用戶名)添加到“lkadmin”組以授予對LifeKeeper GUI的訪問權限。 默認情況下,只有“root”是該組的成員,並且我們沒有root密碼:

#vi / etc / group

lkadmin:X:502:根,貝

打開LifeKeeper GUI

與node1的公共IP地址建立VNC連接。 根據上面的VNC和防火牆規則配置,您將使用之前指定的VNC密碼連接到<Public_IP>:2。 登錄後,打開終端窗口並使用以下命令運行LifeKeeper GUI:

#/ opt / LifeKeeper / bin / lkGUIapp&

系統將提示您連接到第一個群集節點(“node1”)。 輸入在VM創建期間指定的linux用戶標識和密碼:LK-GUI的CONNECT1接下來,通過單擊以下屏幕截圖中突出顯示的“連接到服務器”按鈕連接到“node2”和“witnessLK-GUI的CONNECT2”:您現在應該看到GUI中的所有3個服務器,一個綠色的複選標記圖標,表明他們在線和健康: LK-GUI的連接3

創建溝通路徑

右鍵單擊“node1”並選擇Create Comm Patcomm path1h選擇BOTH“node2”和“witness”,然後按照嚮導進行操作。 這將創建以下之間的通信路徑:

  • node1和node2
  • node1&witness

comm path2 仍然需要在node2和witness之間創建comm路徑。  右鍵單擊“node2”並選擇Create Comm Path。 按照嚮導選擇“見證”作為遠程服comm path3務器:此時已創建以下通信路徑:

  • node1 < – > node2
  • node1 < – >見證
  • node2 < – >見證

服務器前面的圖標已從綠色“複選標記”更改為黃色“危險標記”。 這是因為我們在節點之間只有一條通信路徑。如果VM具有多個NIC(可以在此處找到有關創建具有多個NIC的Azure VM的信息,但本文不會介紹這些信息),則可以在每個服務器之間創建冗餘通信路徑。comm path4 要刪除警告圖標,請轉到“查看”菜單,然後取消選擇“Comm Path Redundancy Warningcomm path5”:結果: comm path6

驗證通信路徑

使用“lcdstatus”命令查看群集資源的狀態。 運行以下命令以驗證您是否已在每個節點上正確創建了與其他兩個服務器相關的通信路徑:#/ opt / LifeKeeper / bin / lcdstatus -q -d node1 MACHINE NETWORK ADDRESSES / DEVICE STATE PRIO node2 TCP 10.128.0.2/ 10.128.0.3 ALIVE 1見證TCP 10.128.0.2/10.128.0.4 ALIVE 1#/ opt / LifeKeeper / bin / lcdstatus -q -d node2 MACHINE NETWORK ADDRESSES / DEVICE STATE PRIO node1 TCP 10.128.0.3/10.128.0.2 ALIVE 1見證TCP 10.128.0.3/10.128.0.4 ALIVE 1#/ opt / LifeKeeper / bin / lcdstatus -q -d witness MACHINE NETWORK ADDRESSES / DEVICE STATE PRIO node1 TCP 10.128.0.4/10.128.0.2 ALIVE 1 node2 TCP 10.128.0.4/10.128.0.3活著1

創建數據複製群集資源(即 鏡子)

接下來,創建數據複製資源以將/ var / lib / mysql分區從node1(source)複製到node2(target)。 單擊“綠色加號”圖標以創建新資數據複製1源:按照嚮導進行以下選擇:

請選擇恢復工具包:數據複製
轉換類型:智能
服務器:node1
層次結構類型:複製退出文件系統
現有的掛載點:/ var / lib / mysql
數據複製資源標記:datarep-mysql
文件系統資源選項卡:/ var / lib / mysql
位圖文件:(默認值)
啟用異步複製:否

創建資源後,將出現“擴展”(即定義備份服務器)嚮導。 使用以下選項:

目標服務器:node2
轉換類型:智能
模板優先級:1
目標優先級:10
目標磁盤:/ dev / sdb1
數據複製資源標記:datarep-mysql
位圖文件:(默認值)
複製路徑:10.128.0.2/10.128.0.3
掛載點:/ var / lib / mysql
根標籤:/ var / lib / mysql

群集將如下所示: 數據複製2  

創建MySQL資源層次結構

接下來,創建一個MySQL集群資源。 MySQL資源負責停止/啟動/監視MySQL數據庫。 要創建,請單擊“綠色加號”圖標以創建新資源:按照嚮導使用以下選項創建IP資源:

選擇Recovery Kit:MySQL Database
轉換類型:智能
服務器:node1
my.cnf的位置:/ var / lib / mysql
MySQL可執行文件的位置:/ usr / bin
數據庫標籤:mysql

使用以下選項擴展IP資源:

目標服務器:node2
轉換類型:智能
模板優先級:1
目標優先級:10

因此,您的群集將如下所示。 請注意,數據複製資源已自動移動到數據庫下(自動創建依賴關係),以確保它始終在數據庫之前聯機:  

創建內部負載均衡器

如果這是使用物理或虛擬服務器的典型本地群集,那麼此時您就完成了。 客戶端和應用程序將連接到群集的虛擬IP(10.128.0.99)以到達活動節點。 在Google Cloud中,如果沒有其他一些配置,這將無效。要連接到群集,Google提供了一項功能,您可以設置內部負載均衡器(ILB)。 基本上,當您連接到ILB的IP地址(我們將設置為10.128.0.99)時,您將路由到當前活動的群集節點。創建TCP負載均衡器:這將是內部負載均衡器,因此選擇“僅在我的VM之間”:接下來,為負載均衡器命名(“internal-lb”),然後單擊後端配置:確保選擇正確的region(“us-central1”)並配置後端。 單擊“添加後端”並添加兩個實例組(instance-group-1a AND instance-group-1b):負載均衡器根據運行狀況檢查確定將流量路由到哪個節點。 在此示例中,將配置運行狀況檢查以查看MySQL是否正在運行(檢查默認端口3306)。 選擇“創建運行狀況檢查”:為新運行狀況檢查命名(“mysql-health-check”)並為TCP端口3306配置它:接下來,配置負載均衡器的前端。 選擇“前端配置”,在IP地址下,定義自定義靜態內部IP 10.128.0.99。 端口應為3306,這是MySQL的默認端口:最後,查看並最終確定負載均衡器。 單擊“創建”:結果。 您將看到負載均衡器處於聯機狀態,但是,它並未將實例組顯示為正常!(如0/0所示)。 我們將在下一節中解決這個問題:

為內部負載均衡器創建防火牆規則

根據Google文檔(請參閱“配置防火牆規則以允許內部負載平衡”部分),需要創建兩個防火牆規則。 第一個允許流量到負載均衡器,從負載均衡器到實例。第二個允許來自健康檢查器的健康檢查探針。創建新的防火牆規則:為新規則指定名稱(allow-internal-lb)並指定“10.128.0.0/20”作為源IP範圍。 允許的協議和端口應為“tcp:3306”:單擊“創建”後,您將返回到防火牆規則頁面,並可在列表中看到新創建的規則。 再次單擊“創建防火牆規則”,以便我們可以創建第二個必需規則:為第二個規則命名(“allow-health-check”)。 需要定義兩個不同的源IP範圍:

  • 130.211.0.0/22
  • 35.191.0.0/16

注意:最好仔細檢查google雲文檔,以確保這些IP範圍仍然有效。 您現在應該在列表中看到兩個新創建的防火牆規則:

測試群集連接

此時,我們所有的Google雲端和群集配置都已完成!群集資源當前在node1上處於活動狀態:您還會注意到內部負載均衡器正在顯示node1,它是instance-group-1a的成員“健康”,因此路由流量進入虛擬IP(10.128.0.99) )到node1:SSH進入見證服務器,“sudo su – ”獲得root訪問權限。  如果需要,安裝mysql客戶端:

[root @ witness~] #yum -y install mysql

測試MySQL與群集的連接:

[root @ witness~] #mysql --host = 10.128.0.99 mysql -u root -p

執行以下MySQL查詢以顯示活動集群節點的主機名:

mysql> select @@ hostname;
 ------------ 
| @@ hostname |
 ------------ 
| node1 |
 ------------ 
1排(0.00秒)
MySQL的>

使用LifeKeeper GUI,從Node1 – > Node2進行故障轉移。 右鍵單擊node2下面的mysql資源,然後選擇“In Service …”:故障轉移後,資源在node2上聯機:現在您將看到內部負載均衡器顯示實例組1b,其中包含node2,為健康狀態。 流量現在路由到node2:故障轉移完成後,重新運行MySQL查詢。 您會注意到MySQL客戶端已檢測到會話丟失(在故障轉移期間)並自動重新連接:執行以下MySQL查詢以顯示活動群集節點的主機名,驗證現在“node2”是否處於活動狀態:

mysql> select @@ hostname;
ERROR 2006(HY000):MySQL服務器已經消失
沒聯繫。試圖重新連接......
連接ID:48
當前數據庫:mysql
 ------------ 
| @@ hostname |
 ------------ 
| node2 |
 ------------ 
1排(0.56秒)
MySQL的>

 

Filed Under: 伺服器集群简单化

  • « Previous Page
  • 1
  • …
  • 65
  • 66
  • 67
  • 68
  • 69
  • …
  • 98
  • Next Page »

最近的帖子

  • 在 Nutanix 環境中選擇高可用性解決方案的 10 個注意事項
  • 我的伺服器是一次性的嗎?高可用性軟體如何適應雲端最佳實踐
  • 災難頻傳世界的資料復原策略
  • DataKeeper 與棒球:災難復原的策略性舉措
  • SQL Server 停機風險預算

最熱門的帖子

加入我們的郵件列表

Copyright © 2025 · Enterprise Pro Theme on Genesis Framework · WordPress · Log in