SIOS SANless clusters

SIOS SANless clusters High-availability Machine Learning monitoring

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

如何在雲中的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: 伺服器集群简单化

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

21 12 月, 2018 by Jason Aw Leave a Comment

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

現在可以使用SQL Server v.Next的公共預覽版。微軟最終增加了對Linux的支持。 請查看以下鏈接以獲取更多信息。  我將很快下載並查看高可用性功能。 敬請關注!

SQL Server v.Next Public Preview:https://www.microsoft.com/en-us/sql-server/sql-server-vnext-including-Linux原始SQL Server Linux公告:https://blogs.microsoft.com / blog / 2016/03/07 / announcing-sql-server-on-linux /經Linuxclustering許可轉載

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

在沒有共享存儲的Amazon EC2中配置Linux故障轉移群集

20 12 月, 2018 by Jason Aw Leave a Comment

分步如何在沒有共享存儲的Microsoft Azure IaaS中配置Linux故障轉移群集azure sanless

循序漸進:如何在沒有共享存儲的Amazon EC2中配置Linux故障轉移群集#amazon #aws #sanless #cluster

在本分步指南中,我將向您介紹在Amazon的彈性計算雲(Amazon EC2)中配置高可用性雙節點MySQL群集(以及見證服務器)所需的所有步驟。 該指南包括適當的屏幕截圖,shell命令和代碼片段。 我假設您對Amazon EC2有點熟悉並且已經擁有一個帳戶。 如果沒有,您今天就可以註冊。 我還將假設您具有基本的Linux系統管理技能,並了解基本的故障轉移群集概念,如虛擬IP等。

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

  1. 創建虛擬私有云(VPC)
  2. 創建Internet網關
  3. 創建子網(可用區)
  4. 配置路由表
  5. 配置安全組
  6. 啟動實例
  7. 創建彈性IP
  8. 創建虛擬IP的路由條目
  9. 禁用ENI的源/目的地檢查
  10. 獲取訪問密鑰ID和秘密訪問密鑰
  11. Linux OS配置
  12. 安裝EC2 API工具
  13. 安裝和配置MySQL
  14. 安裝和配置群集
  15. 測試群集連接

概觀

本文將介紹如何在單個Amazon EC2區域中創建集群。 群集節點(node1,node2和見證服務器)將駐留在不同的可用區中,以實現最大可用性。 這也意味著節點將駐留在不同的子網中。配置如下所示:將AWS-Linux的MySQL的使用以下IP地址:

  • node1:10.0.0.4
  • node2:10.0.1.4
  • 見證人:10.0.2.4
  • 虛擬/“浮動”IP:10.1.0.10

創建虛擬私有云(VPC)

首先,創建一個虛擬私有云(也稱為VPC)。VPC是亞馬遜雲中專用於您的隔離網絡。 您可以完全控制IP地址塊和子網,路由表,安全組(即防火牆)等內容。 您將在您的虛擬網絡中啟動Azure Iaas虛擬機(VM)。在AWS主儀表板中,選擇“VPC1您的VPC”下的“VPC”,確保您已在屏幕右上角選擇了適當的區域。 在本指南中,將使用“US West(Oregon)”區域,因為它是一個具有3個可用區的區域。  有關區域和可用區的更多信息,請單擊此處VPC2為VPC命名,並指定要使用的IP塊。 本指南將使用10.0.0.0/1VPC36:您現在應該在“您的VPC”屏幕上看到新創建的VPC: vpc4  

創建Internet網關

接下來,創建一個Internet網關。 如果您希望實例(VM)能夠與Internet通信,則必須執行此操作。在左側菜單中,選擇“Internet網關”,然後單擊“創建Internet網關”按鈕。 為其命名,然後創建:接下來,互聯網網關1將Internet網關連接到您的VPC:選擇互聯網網關2您的VPC,然後單擊Attach: 互聯網gateway3

創建子網(可用區)

接下來,創建3個子網。 每個子網都駐留在自己的可用區中。 3個實例(VM:node1,node2,見證)將啟動到單獨的子網(以及可用區)中,以便可用區的故障不會佔用群集的多個節點。美國西部(俄勒岡州)地區,又名us-west-2,有3個可用區域(us-west-2a,us-west-2b,us-west-2c)。 創建3個子網,每個3個可用區域中有一個子網。在VPC Dashboard下,導航到Subnets,然後subnets1導航Create Subnet:給第一個子網命名(“Subnet1)”,選擇us-west-2a的可用區,並定義網subnets2絡塊(10.0.0.0/24):Repeat to to創subnets3建第二個子網可用區us-west-2b:重複以在可用區us–subnets4west-2c中創建第三個子網:完成後,驗證是否已創建3個子網,每個子網具有不同的CIDR塊,並且在單獨的可用性中區域,如下所示: subnets5

配置路由表

更新VPC的路由表,以便將流向外部的流量發送到上一步中創建的Internet網關。 從VPC儀表板中,選擇“路由表”。  轉到“路由”選項卡,默認情況下,只存在一條允許僅在VPC內進行流量的路由。單擊編輯:路由表1添加其他路由:新路路由表2由的目標將為“0.0.0.0/0”(Internet),對於目標,請選擇您的Internet網關。 然後單擊“保路由表3存”:接下來,將3個子網與“路由表”關聯。  單擊“子網關聯”選項卡,然路由表4後單擊編輯:選中所有3個子網旁路由表5邊的框,然後單擊保存:驗證3個子網是否與路由表6主路由表關聯:稍後,我們將再次返回並更新路由表,定義允許流量與群集的虛擬IP通信的路由,但這需要在創建Linux實例(VM)之後完成。

配置安全組

編輯安全組(虛擬防火牆)以允許傳入的SSH和VNC流量。 兩者稍後將用於配置linux實例以及群集軟件的安裝/配置。在左側菜單中,選擇“安全組”,然後單擊“入站規則”選項卡。 單擊編輯:安全組1為SSH(端口22)和VNC添加規則。 VNC通常使用5900中的端口,具體取決於您的配置方式,因此為了本指南的目的,我們將打開5900-5910端口範圍。 根據您的VNC設置進行相應配置: 安全組2  

啟動實例

我們將在本指南中配置3個實例(虛擬機)。 前兩個VM(稱為“node1”和“node2”)將充當群集節點,能夠將MySQL數據庫及其相關資源聯機。 第三個VM將充當群集的見證服務器,以增強對裂腦的保護。為確保最大可用性,所有3個VM將部署到單個區域內的不同可用區中。 這意味著每個實例將駐留在不同的子網中。轉到AWS主儀表板,然後選擇EC2: 推出-INSTANCE1

創建“節點1”

創建您的第一個實例(“node1”)。 單擊Launch Ins推出-INSTANCE2tance:選擇您的Linux發行版。 後來使用的集群軟件支持RHEL,SLES,CentOS和Oracle Linux。 在本指南中,我們將使用RHEL 推出-instance37.X:相應地調整實例大小。 出於本指南的目的並最大限度地降低成本,使用了t2.micro大小,因為它符合免費等級。 有關實例大小和定價的更多信息,請參見此處。推出-instance4 接下來,配置實例詳細信息  重要信息:確保將此第一個實例(VM)啟動到“Subnet1”,並定義對子網有效的IP地址(10.0.0.0/24) – 選擇10.0.0.4以下,因為它是子網中的第一個免費IP。 注意:AWS中任何給定子網中的.1 / .2 / .3都是保留的,不能使用。推出-instance5 接下來,將額外的磁盤添加到群集節點(這將在“node1”和“node2”上完成)。 該磁盤將存儲我們的MySQL數據庫,稍後將在節點之間進行複制。注意:您不需要向“見證”節點添加額外的磁盤。 只有“node1”和“node2”。添加新卷,並輸入所需大小:為推出-instance6實例定義標記,節點1:將實推出-instance7例與現有安全組關聯,以便之前創建的防火牆規則將處於活動狀態:單擊“啟動”推出-instance8:重要說推出-instance9明:如果這是第一個實例在您的AWS環境中,您需要創建一個新的密鑰對。 私鑰文件需要存儲在一個安全的位置,因為當您SSH到Linux實例時將需要它 推出-instance10

創建“node2”

重複上述步驟以創建第二個Linux實例(node2)。 完全像Node1一樣配置它。 但是,請確保將其部署到“Subnet2”(us-west-2b可用區)。 Subnet2的IP範圍是10.0.1.0/24,因此這裡使用的IP為10.推出-instance110.1.4:確保也將第二個磁盤添加到Node2。 它應該與您添加到Node1的磁盤大小相同:為第推出-instance12二個實例添加標籤…. “節點2”: 推出-instance13

創造“見證”

重複上述步驟以創建第三個Linux實例(見證)。 完全像Node1和Node2一樣配置它,除了你不需要添加第二個磁盤,因為這個實例只會作為集群的見證,並且不會讓MySQL聯機。確保將其部署到“Subnet3”(us-west-2c可用區)。 Subnet2的IP範圍是10.0.2.0/24,因此這裡使用的I推出-instance14P為10.0.2.4:注意:默認磁盤配置適用於見證節點。 不需要第二個磁盤推出-instance15:標記見證節點: 推出-instance16

您的3個實例可能需要一段時間才能配置。 完成後,您將看到在EC2控制台中列出的正在運行: 推出-instance17

創建彈性IP

接下來,創建一個彈性IP,這是一個公共IP地址,用於從外部世界連接到您的實例。 在左側菜單中選擇彈性IP,然後單擊“分配新地址”:選擇新彈性IP1創建的彈性IP,右鍵單擊,然後選擇“關聯地址”:將此彈性IP與節彈性-IP2點1關聯:如果其他兩個實例重複彈性IP3此操作,請執行以下操作:您希望他們可以訪問互聯網,或者能夠直接通過SSH / VNC訪問它們。

創建虛擬IP的路由條目

此時,已創建所有3個實例,並且需要再次更新路由表,以便群集的虛擬IP能夠正常工作。 在此多子網群集配置中,虛擬IP需要超出分配給VPC的CIDR範圍。定義將流量引導至群集的虛擬IP(10.1.0.10)到主群集節點(Node1)的新路由從VPC儀表板中,選擇“路由表”,然後單擊“編輯”。 添加“10.1.0.10/32”的路由,目的地為Node1: 路由表後實例創建

禁用ENI的源/目的地檢查

接下來,禁用群集節點的彈性網絡接口(ENI)的源/目標檢查。這是實例接受群集的虛擬IP地址的網絡數據包所必需的。為所有ENI執行此操作。選擇“網絡接口”,右鍵單擊ENI,然後選擇“更改源/目標檢查”。禁用源-DEST-CHECK1 選擇“已禁用”: 禁用源-DEST-CHECK2

獲取訪問密鑰ID和秘密訪問密鑰

在本指南的後面部分,集群軟件將使用AWS命令行界面(CLI)來操作集群虛擬IP的路由表條目,以將流量重定向到活動集群節點。 為此,您需要獲取訪問密鑰ID和秘密訪問密鑰,以便AWS CLI可以正確進行身份驗證。在EC2儀表板的右上角,單擊您的名稱,然後從下拉列表中選擇“安全憑證”:展開表格訪問鍵1中的“訪問密鑰(訪問密鑰ID和秘密訪問密鑰)”部分,然後單擊“創建新的訪問密鑰”。 下載密鑰文件並將文件存儲在安全的位置。訪問KEY2

Linux OS配置

連接到linux實例:

要連接到新創建的Linux實例(通過SSH),請右鍵單擊實例並選擇“連接”。 這將顯示連接到實例的說明。 您將需要在上一步中創建/下載的私鑰文件:示CONNECT1例:這CONNECT2裡我們將離開EC2儀表板一段時間,並在命令行上弄髒,作為Linux管理員,您應該使用它到現在為止。您沒有為AWS中的Linux VM(或默認的“ec2-user”帳戶)提供root密碼,因此一旦連接,請使用“sudo”命令獲取root權限:

$ sudo su  - 

編輯/ etc / hosts

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

10.0.0.4 node1
10.0.1.4 node2
10.0.2.4證人
10.1.0.10 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 =針對性

設置主機名

默認情況下,這些Linux實例將具有基於服務器IP地址的主機名,例如“ip-10-0-0-4.us-west-2.compute.internal”您可能會注意到,如果您嘗試修改主機名的“正常”方式(即編輯/ etc / sysconfig / network等),每次重啟後,它都會恢復原來的狀態!!我在AWS論壇中發現了一個很棒的主題,它描述瞭如何在重新啟動後實際讓主機名保持靜態。詳細信息:https://forums.aws.amazon.com/message.jspa?messageID = 560446註釋掉在“/etc/cloud/cloud.cfg”文件中設置主機名的模塊。可以使用#註釋掉以下模塊。

# -  set_hostname
# -  update_hostname

接下來,還要在/ etc / hostname中更改主機名。

重新啟動群集節點

重新啟動所有3個實例,以便禁用SELinux,並且主機名更改生效。

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

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

#yum groupinstall“X Window System”
#yum groupinstall“帶GUI的服務器”
#yum install tigervnc-server xterm wget unzip patch redhat-lsb
#vncpasswd

對於RHEL 7.x / CentOS7.x:以下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

對於RHEL / CentOS 6.x系統:

#vi / etc / sysconfig / vncservers

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

#service vncserver start
#chkconfig vncserver on

打開VNC客戶端,然後連接到<ElasticIP:2>。  如果你無法得到它,那很可能是你的linux防火牆阻礙了它。  打開我們在這裡使用的VNC端口(端口5902),或者暫時禁用防火牆(不推薦用於生產環境):

#systemctl stop firewalld
#systemctl禁用firewalld

 

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

當linux實例啟動時,額外的磁盤被添加到每個集群節點以存儲我們將要保護的應用程序數據。 在這種情況下,它恰好是MySQL數據庫。第二個磁盤應顯示為/ dev / xvdb。 您可以運行“fdisk -l”命令進行驗證。 您將看到/ dev / xvda(OS)已被使用。

#fdisk -l

磁盤/ dev / xvda:10.7 GB,10737418240字節,20971520扇區單位=扇區1 * 512 = 512字節扇區大小(邏輯/物理):512字節/ 512字節I / O大小(最小/最佳):512字節/ 512字節磁盤標籤類型:gpt #Start結束大小類型名稱1 2048 4095 1M BIOS啟動parti 2 4096 20971486 10G Microsoft基本磁盤/ dev / xvdb:2147 MB,2147483648字節,4194304扇區單位=扇區1 * 512 = 512字節扇區大小(邏輯/物理):512字節/ 512字節I / O大小(最小/最佳):512字節/ 512字節這裡我將創建一個分區(/ dev / xvdb1),格式化它,並將其掛載到默認值MySQL的位置,即/ var / lib / mysql。 在“node1”和“node2”上執行以下步驟:

#fdisk / dev / xvdb
歡迎使用fdisk(util-linux 2.23.2)。

更改將僅保留在內存中,直到您決定編寫它們。
使用write命令前要小心。

設備不包含已識別的分區表
構建一個新的DOS磁盤標籤,磁盤標識符為0x8c16903a。

命令(m求助):n
分區類型:
   p primary(0 primary,0 extended,4 free)
   擴展
選擇(默認p):p
分區號(1-4,默認1):1
第一個扇區(2048-4194303,默認為2048):<enter>
使用默認值2048
最後一個扇區,扇區或大小{K,M,G}(2048-4194303,默認4194303):<enter>
使用默認值4194303
設置類型為Linux且大小為2 GiB的分區1

命令(m求助):w
分區表已被更改!

調用ioctl()重新讀取分區表。
同步磁盤。

#mkfs.ext4 / dev / xvdb1 #mkdir / var / lib / mysql在node1上,掛載文件系統:

#mount / dev / xvdb1 / var / lib / mysql

安裝EC2 API工具

必須在每個群集節點上安裝EC2 API工具(EC2 CLI),以便群集軟件可以在以後操作路由表,從而實現與虛擬IP的連接。以下URL是設置此內容的極好指南:http://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/set-up-ec2-cli-linux.html以下是關鍵步驟:下載,解壓縮,並將CLI工具移動到標準位置(/ opt / aws):

#wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip
#unzip ec2-api-tools.zip
#mv ec2-api-tools-1.7.5.1 / / opt / aws /
#export EC2_HOME =“/ opt / aws”

如果尚未安裝java(運行“要檢查哪個java”),請安裝它:

#yum install java-1.8.0-openjdk

示例(基於RHEL 7.2系統的默認配置。  相應調整)

#export JAVA_HOME =“/ usr / lib / jvm / java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64 / jre /”

您需要AWS Access Key和AWS Secret Key。  保持這些值很方便,因為稍後在集群設置期間也需要它們!有關更多信息,請參閱以下URL:https://console.aws.amazon.com/iam/home?#security_credential

#export AWS_ACCESS_KEY = your-aws-access-key-id
#export AWS_SECRET_KEY = your-aws-secret-key

測試CLI實用程序功能:

#/ opt / aws / bin / ec2-describe-regions

REGION eu-west-1 ec2.eu-west-1.amazonaws.com
REGION ap-southeast-1 ec2.ap-southeast-1.amazonaws.com
REGION ap-southeast-2 ec2.ap-southeast-2.amazonaws.com
REGION eu-central-1 ec2.eu-central-1.amazonaws.com
REGION ap-northeast-2 ec2.ap-northeast-2.amazonaws.com
REGION ap-northeast-1 ec2.ap-northeast-1.amazonaws.com
REGION us-east-1 ec2.us-east-1.amazonaws.com
REGION sa-east-1 ec2.sa-east-1.amazonaws.com
REGION us-west-1 ec2.us-west-1.amazonaws.com
REGION us-west-2 ec2.us-west-2.amazonaws.com

 

安裝和配置MySQL

接下來,安裝安裝MySQL包,初始化示例數據庫,並為MySQL設置“root”密碼。 在RHEL7.X中,MySQL包已經被MariaDB包替換。

在“node1”上:

#yum install mariadb mariadb-server
#mount / dev / xvdb1 / var / lib / mysql
#/ 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';刷新權限| 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 / run中/ MariaDB的/ mariadb.pid
用戶=根
端口= 3306
#建議禁用符號鏈接以防止出現各種安全風險
符號鏈接= 0
 
[mysqld_safe的]
對數誤差= /無功/日誌/ MariaDB的/ mariadb.log
PID文件= / var / run中/ MariaDB的/ mariadb.pid 
 
[客戶]
用戶=根
密碼= SIOS

將原始MySQL配置文件移到一邊(如果存在):

#mv /etc/my.cnf /etc/my.cnf.orig

在“node2”上:

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

[root @ node2~] #yum install mariadb mariadb-server

安裝和配置群集

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

安裝適用於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

安裝EC2恢復工具包

SPS-Linux提供了特定功能,允許資源在不同可用區域和區域中的節點之間進行故障轉移。這裡,EC2恢復工具包(即集群代理)用於操作路由表,以便將與虛擬IP的連接路由到活動集群節點。安裝EC2 rpm(node1,node2):

#cd / tmp / install / amazon
#rpm -Uvh steeleye-lkECC-9.0.2-6513.noarch.rpm

安裝許可證密鑰

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

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

啟動LifeKeeper

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

#/ opt / LifeKeeper / bin / lkstart

設置LifeKeeper GUI的用戶權限

在所有3個節點上,創建一個新的linux用戶帳戶(在本例中為“tony”)。 編輯/ etc / group並將“tony”用戶添加到“lkadmin”組以授予對LifeKeeper GUI的訪問權限。 默認情況下,只有“root”是該組的成員,我們在此處沒有root密碼:

#useradd tony
#passwd tony
#vi / etc / group

lkadmin:X:1001:根,貝

打開LifeKeeper GUI

與node1的彈性IP(公共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.0.0.4/ 10.0.1.4 ALIVE 1見證TCP 10.0.0.4/10.0.2.4 ALIVE 1#/ opt / LifeKeeper / bin / lcdstatus -q -d node2 MACHINE NETWORK ADDRESSES / DEVICE STATE PRIO node1 TCP 10.0.1.4/10.0.0.4 ALIVE 1見證TCP 10.0.1.4/10.0.2.4 ALIVE 1#/ opt / LifeKeeper / bin / lcdstatus -q -d witness MACHINE NETWORK ADDRESSES / DEVICE STATE PRIO node1 TCP 10.0.2.4/10.0.0.4 ALIVE 1 node2 TCP 10.0.2.4/10.0.1.4活著1

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

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

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

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

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

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

創建虛擬IP

接下來,創建虛擬IP群集資源。 單擊“綠色加號”圖標以創建新虛擬ip1資源:按照嚮導使用以下選項創建IP資源:

選擇Recovery Kit:IP
轉換類型:智能
IP資源:10.1.0.10
網絡掩碼:255.255.255.0
網絡接口:eth0
IP資源標記:ip-10.1.0.10

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

轉換類型:智能
模板優先級:1
目標優先級:10
IP資源:10.1.0.10
網絡掩碼:255.255.255.0
網絡接口:eth0
IP資源標記:ip-10.1.0.10

現在,群集將顯示如下,同時創建鏡像和IP資源: 簇後鏡和 - VIP

配置IP資源的Ping列表

默認情況下,SPS-Linux通過執行廣播ping來監視IP資源的運行狀況。 在許多虛擬和雲環境中,廣播ping不起作用。 在上一步中,我們在/ etc / default / LifeKeeper中設置“NOBCASTPING = 1”以關閉廣播ping檢查。相反,我們將定義一個ping列表。 這是在此IP資源的IP運行狀況檢查期間要ping的IP地址列表。  在本指南中,我們將見證服務器(10.0.2.4)添加到我們的ping列表中。右鍵單擊IP資源(ip-10.1.0.10)並選擇PropeAWS-PING-列表1rties:您將看到最初沒有為我們的10.1.0.0子網配置ping列表。  單擊“修改Ping列AWS-PING-列表2表”:輸入“10.0.2.4”(見證服務器的IP地址),單擊“添加地址”,最後單擊“AWS-PING-項目list3保存列表”:您將返回到IP屬性面板,並可以驗證10.0.2.4已添加到ping列表中。 單擊“確定”關閉窗口: AWS-PING-list4

創建MySQL資源層次結構

接下來,創建一個MySQL集群資源。 MySQL資源負責停止/啟動/監視MySQL數據庫。在創建MySQL資源之前,請確保數據庫正在運行。 運行“ps -ef | grep sql“要檢查。如果它正在運行,很棒 – 沒什麼可做的。 如果沒有,請備份數據庫:

#mysqld_safe --user = root --socket = / var / lib / mysql / mysql.sock --port = 3306 --datadir = / var / lib / mysql --log&

要創建,請單擊“綠色加號”圖標以創建新資源:按照嚮導使用以下選項創建IP資源:

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

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

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

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

創建EC2資源以在故障轉移時管理路由表

   

 
 
 
 
 
 
 
 
 
 

 

 
 
 
 
 

   

 

     

測試群集連接

  

 

 

 

 

 
  
 
  
 
  
 
 

   

 
 
  
 
 
  
 
  
 
  
 
 

 

Filed Under: 伺服器集群简单化 Tagged With: Linux故障轉移群集

  • « Previous Page
  • 1
  • …
  • 76
  • 77
  • 78
  • 79
  • 80
  • …
  • 108
  • Next Page »

最近的帖子

  • 繼承 DataKeeper
  • 高可用性與容錯性:關鍵差異詳解
  • 業務連續性計劃,以實現高可用性和災難復原
  • 導致叢集崩潰的 3 個常見配置錯誤
  • 指南:在 Azure 中部署多區域和多區域 SQL Server FCI

最熱門的帖子

加入我們的郵件列表

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