本指南說明如何為 Google Cloud上的 SAP HANA 向外擴充系統,部署及設定效能最佳化的 SUSE Linux Enterprise Server (SLES) 高可用性 (HA) 叢集。
本指南包含下列步驟:
- 設定內部直通式網路負載平衡器,在發生失敗時重新導向流量
- 在 SLES 上設定 Pacemaker 叢集,以便在容錯移轉期間管理 SAP 系統和其他資源
本指南也包含設定 SAP HANA 系統複製功能的步驟,但請參閱 SAP 說明文件,取得明確的操作說明。
如要部署沒有 Linux 高可用性叢集或待命節點主機的 SAP HANA 系統,請改用 SAP HANA 部署指南。
本指南適用對象為進階 SAP HANA 使用者,其熟悉如何針對 SAP HANA 進行 Linux 高可用性設定。
本指南部署的系統
按照本指南的說明,您將部署多節點 SAP HANA HA 系統,並設定為全區域備援,其中額外的執行個體會充當多數決策者 (也稱為平手節點),確保叢集法定人數在遺失一個區域時維持不變。
最終部署作業包含下列資源:
- 主要和次要網站,每個網站都有對應的可用區。
- 兩個已設定同步複製功能的網站。
- 單一運算執行個體,用於擔任多數決機制。
- 具備圍欄機制的 Pacemaker 高可用性叢集資源管理員。
- 用於 SAP HANA 資料和記錄檔磁碟區的永久磁碟,已連結至每個 SAP HANA 執行個體。
本指南會說明如何使用 Google Cloud 提供的 Terraform 範本,部署 Compute Engine 虛擬機器 (VM) 和 SAP HANA 執行個體,確保 VM 和基礎 SAP HANA 系統符合 SAP 支援需求,並遵循目前的最佳做法。
本指南會使用 SAP HANA Studio 測試 SAP HANA 系統複製功能。如有需要,您可以改用 SAP HANA 主控台。如要瞭解如何安裝 SAP HANA Studio,請參閱:
事前準備
建立 SAP HANA 高可用性叢集前,請確保符合下列必備條件:
- 您已閱讀 SAP HANA 規劃指南和 SAP HANA 高可用性規劃指南。
- 您或您的機構擁有 Google Cloud 帳戶,且您已針對 SAP HANA 部署建立專案。如要瞭解如何建立Google Cloud 帳戶和專案,請參閱 SAP HANA 部署指南中的設定 Google 帳戶一文。
- 如果您希望 SAP 工作負載在符合資料落地、存取權控管、支援人員或法規規定的情況下執行,則必須建立必要的 Assured Workloads 資料夾。詳情請參閱「SAP on Google Cloud的符合性和主權控管措施」。
SAP HANA 安裝媒體儲存在可在部署專案和地區中使用的 Cloud Storage 值區中。如要瞭解如何將 SAP HANA 安裝媒體上傳至 Cloud Storage 值區,請參閱「SAP HANA 部署指南」中的下載 SAP HANA。
如果專案中繼資料中已啟用 OS 登入,您必須暫時停用 OS 登入功能,直到部署作業完成為止。為了部署目的,這個程序會在執行個體中繼資料中設定 SSH 金鑰。啟用 OS 登入功能後,系統會停用中繼資料型安全殼層金鑰設定,這項部署作業就會失敗。部署完成後,您可以再次啟用 OS 登入功能。
如需詳細資訊,請參閱:
如果您使用VPC 內部 DNS,專案中繼資料中的
vmDnsSetting
變數值必須為GlobalOnly
或ZonalPreferred
,才能在各區域中解析節點名稱。vmDnsSetting
的預設設定為ZonalOnly
。詳情請參閱:您擁有 NFS 解決方案 (例如代管的 Filestore 解決方案),可在向外擴充 SAP HANA 系統的主機之間共用 SAP HANA
/hana/shared
和/hanabackup
磁碟區。如要部署 Filestore NFS 伺服器,請參閱「建立執行個體」一文。- 請注意,主網站和次要網站必須有權存取各自的專屬 NFS 路徑,才能避免資料覆寫。如要使用單一 Filestore 執行個體,您必須將部署作業設定為使用不同的子目錄做為掛載路徑。
建立網路
基於安全性考量,請建立新的網路。您可以新增防火牆規則或使用另一個存取權控管方法,藉此控管具有存取權的對象。
如果您的專案具有預設的虛擬私有雲網路,請勿使用。請建立您自己專屬的虛擬私有雲網路,確保系統只套用您明確建立的防火牆規則。
在部署期間,Compute Engine 執行個體通常需要網際網路的存取權,才能下載 Google Cloud的 SAP 代理程式。如果您使用 Google Cloud提供的其中一種 SAP 認證 Linux 映像檔,則計算機執行個體也需要存取網際網路,才能註冊憑證並且存取 OS 供應商存放區。具有 NAT 閘道和 VM 網路標記的設定即可支援上述存取需求,即便目標運算執行個體沒有外部 IP 也沒關係。
如要設定網路:
控制台
- 在 Google Cloud 控制台中,前往「VPC networks」(虛擬私有雲網路) 頁面。
- 按一下「建立虛擬私有雲網路」。
- 輸入網路的名稱。
名稱必須遵守命名慣例。虛擬私有雲網路會使用 Compute Engine 命名慣例。
- 在 [Subnet creation mode] (子網路建立模式) 中,選擇 [Custom]。
- 在「New subnet」(新子網路) 部分,指定子網路的以下設定參數:
- 輸入子網路的「名稱」。
- 在「區域」中,選取要建立子網路的 Compute Engine 區域。
- 針對「IP 堆疊類型」,請選取「IPv4 (單一堆疊)」,然後以 CIDR 格式輸入 IP 位址範圍,例如
10.1.0.0/24
。這是子網路的主要 IPv4 範圍。如果您打算新增多個子網路,請為網路中的每個子網路指派不重疊的 CIDR IP 範圍。請注意,每個子網路及其內部 IP 範圍都會對應至單一地區。
- 按一下「完成」。
- 如要新增其他子網路,請按一下「Add subnet」(新增子網路),然後重複上述步驟。建立網路後,您可以新增更多子網路。
- 按一下 [建立]。
gcloud
- 前往 Cloud Shell。
- 如要在自訂子網路模式中建立新的網路,請執行:
gcloud compute networks create NETWORK_NAME --subnet-mode custom
請將
NETWORK_NAME
替換為新網路的名稱。名稱必須遵循命名慣例。虛擬私有雲網路會使用 Compute Engine 命名慣例。指定
--subnet-mode custom
以避免使用預設的自動模式,不然系統會自動在每個 Compute Engine 地區建立子網路。詳情請參閱「子網路建立模式」。 - 建立子網路,並指定地區和 IP 範圍。
gcloud compute networks subnets create SUBNETWORK_NAME \ --network NETWORK_NAME --region REGION --range RANGE
更改下列內容:
SUBNETWORK_NAME
:新子網路的名稱NETWORK_NAME
:您在上一個步驟中建立的網路名稱REGION
:您希望子網路所在的區域RANGE
:以 CIDR 格式指定的 IP 位址範圍,例如10.1.0.0/24
如果您打算新增多個子網路,請為網路中的每個子網路指派不重疊的 CIDR IP 範圍。請注意,每個子網路及其內部 IP 範圍都會對應至單一地區。
- (選用) 重複上述步驟以新增其他子網路。
設定 NAT 閘道
如果您需要建立一或多個沒有公開 IP 位址的 VM,就必須使用網路位址轉譯 (NAT),讓 VM 能夠存取網際網路。使用 Cloud NAT,這是一項 Google Cloud 分散式軟體定義的受控服務,可讓 VM 將傳出封包傳送至網際網路,並接收任何相應的已建立傳入回應封包。或者,您也可以設定個別的 VM 做為 NAT 閘道。
如要為專案建立 Cloud NAT 執行個體,請參閱「使用 Cloud NAT」。
為專案設定 Cloud NAT 後,VM 執行個體就能在不使用公開 IP 位址的情況下,安全地存取網際網路。
新增防火牆規則
根據預設,「默示的防火牆規則」會封鎖從虛擬私有雲 (VPC) 網路之外連入的連線。如要允許連入的連線,請為 VM 設定防火牆規則。與 VM 建立連入連線後,系統會允許該連線上雙向的流量。
您也可以建立防火牆規則,允許外部存取指定的通訊埠,或限制相同網路上 VM 之間的存取。若使用 default
虛擬私人雲端網路類型,一些其他的預設規則也適用,例如 default-allow-internal
規則,允許相同網路中 VM 之間所有通訊埠的連線。
根據適用於環境的 IT 政策,您可能需要區隔或限制資料庫主機的連線,這些功能可以透過建立防火牆規則來完成。
根據您的情境,您可以建立防火牆規則,允許下列項目存取:
- 列於所有 SAP 產品的 TCP/IP 中的預設 SAP 通訊埠。
- 從電腦或公司網路環境到 Compute Engine VM 執行個體的連線。如果不確定要使用哪一個 IP 位址,請詢問貴公司的網路管理員。
建立防火牆規則的步驟如下:
主控台
在 Google Cloud 控制台中,前往 Compute Engine 的「Firewall」(防火牆) 頁面。
按一下頁面頂端的 [Create firewall rule] (建立防火牆規則)。
- 在「Network」(網路) 欄位中,選取您 VM 所在的網路。
- 在「Targets」欄位中,指定此規則適用的 Google Cloud資源。例如,指定「All instances in the network」(網路中的所有執行個體),或者,如要將規則限制於 Google Cloud上的特定執行個體,請在「Specified target tags」(指定的目標標記) 中輸入標記。
- 在「Source filter」(來源篩選器) 欄位中選取下列其中一項:
- 「IP ranges」(IP 範圍) - 允許來自特定 IP 位址連入的流量。請在「Source IP ranges」(來源 IP 範圍) 欄位中指定 IP 位址的範圍。
- 「Subnets」(子網路) - 允許來自特定子網路的連入流量。請在隨後的「Subnets」(子網路) 欄位中指定子網路名稱。您可以使用這個選項允許 3 層或向外擴充設定中 VM 之間的存取作業。
- 在「Protocols and ports」(通訊協定和通訊埠) 區段中,選取「Specified protocols and ports」(指定的通訊協定和通訊埠),然後輸入
tcp:PORT_NUMBER
。
按一下 [Create] (建立) 以建立您的防火牆規則。
gcloud
使用下列指令建立防火牆規則:
$
gcloud compute firewall-rules create firewall-name
--direction=INGRESS --priority=1000 \
--network=network-name --action=ALLOW --rules=protocol:port \
--source-ranges ip-range --target-tags=network-tags
部署 VM 和 SAP HANA
如要部署為全區域備援而設定的多節點 SAP HANA HA 系統,請使用 SAP HANA 的 Cloud Deployment Manager 範本做為設定的基礎,以及額外的範本來部署多數製造商執行個體。
部署作業包含下列項目:
- 兩個相符的 SAP HANA 系統,每個系統都有兩個或更多工作節點。
- 單一多數製造者執行個體,也稱為平手節點,可確保叢集過半數節點在一個區域損壞時維持運作。
您可以將所有系統的定義加入同一個 YAML 檔案,讓 Deployment Manager 在單一部署下部署所有資源。成功部署 SAP HANA 系統和多數製造商執行個體後,您就可以定義及設定 HA 叢集。
以下操作說明使用的是 Cloud Shell,不過這些步驟通常也適用於 Google Cloud CLI。
確認目前的永久磁碟和 CPU 等資源配額足夠您即將安裝的 SAP HANA 系統使用。如果配額不足則會部署失敗。如要瞭解 SAP HANA 配額需求,請參閱 SAP HANA 的定價與配額考量事項一文。
開啟 Cloud Shell;如果您在本機工作站上安裝了 gcloud CLI,請開啟終端機。
在 Cloud Shell 或 gcloud CLI 中輸入以下指令,將 SAP HANA 高可用性叢集的
template.yaml
設定檔範本下載到您的工作目錄:wget https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana/template.yaml
或者,您也可以重新命名
template.yaml
檔案,藉此識別該檔案定義的設定。在 Cloud Shell 程式碼編輯器中開啟
template.yaml
檔案;如果您目前使用 gcloud CLI,請選擇您要用的文字編輯器。如要開啟 Cloud Shell 程式碼編輯器,請按一下 Cloud Shell 終端機視窗右上角的鉛筆圖示。
在
template.yaml
檔案中,完成主要 SAP HANA 系統的定義。使用安裝作業的值取代括號及其內容,即可指定屬性值。屬性說明如下表所示。如果要在不安裝 SAP HANA 的情況下建立 VM 執行個體,請刪除以
sap_hana_
開頭的所有資料行。屬性 資料類型 說明 類型 字串 指定在部署期間要使用的 Deployment Manager 範本位置、類型和版本。
YAML 檔案包含兩個
type
規格,其中一個已註解掉。預設啟用的type
規格會將範本版本指定為latest
。註解掉的type
規格會指定具有時間戳記的特定範本版本。如果您需要所有部署都使用相同的範本版本,請使用包含時間戳記的
type
規格。instanceName
字串 目前定義的 VM 執行個體名稱。在主要和次要 VM 定義中指定不同的名稱。名稱只能以小寫英文字母、數字或連字號指定。 如果您打算使用 SUSE 提供的
SAPHanaSR-angi
HA/DR 套件,請確認橫向擴展系統中的執行個體名稱不含連字號。這是因為已知當主機名稱含有連字號時,SAPHanaSR-angi
套件無法正常運作。instanceType
字串 您需要執行 SAP HANA 的 Compute Engine 虛擬機器類型。如果您需要自訂 VM 類型,請指定預先定義的 VM 類型,並將 vCPU 數量設為最接近您所需數量的數字,但仍要大於該數字。部署完成後,請修改 vCPU 數量和記憶體大小 對於大多數製作者執行個體,建議的最低 instanceType
為n1-standard-2
,或至少 2 個 CPU 核心和 2 GB 記憶體的等效值。zone
字串 要部署您定義的 VM 執行個體的 Google Cloud 區域。為主要 HANA、次要 HANA 和多數製造商執行個體定義,指定同一地區中的不同區域。這些區域必須位於您為子網路選取的地區內。 subnetwork
字串 您在先前步驟中建立的子網路名稱。如果您要部署共用虛擬私人雲端,請將這個值指定為 [SHAREDVPC_PROJECT]/[SUBNETWORK]
。例如:myproject/network1
。linuxImage
字串 要用於 SAP HANA 的 Linux 作業系統映像檔或映像檔系列的名稱。如要指定映像檔系列,請在系列名稱加上 family/
前置字串。例如:family/sles-15-sp1-sap
。如要指定特定映像檔,請只指定映像檔名稱。如需可用映像檔和系列的清單,請參閱 Google Cloud 主控台中的「映像檔」頁面。linuxImageProject
字串 您要使用的映像檔所在的 Google Cloud 專案。這個專案可能是您自有的專案或 Google Cloud 映像檔專案,例如 suse-sap-cloud
。如要進一步瞭解 Google Cloud 映像檔專案,請參閱 Compute Engine 說明文件中的「映像檔」頁面。sap_hana_deployment_bucket
字串 專案中 Google Cloud 儲存空間值區的名稱,其中包含您在上一個步驟中上傳的 SAP HANA 安裝檔案和修訂檔案。值區中的所有升級修訂檔案都會在部署期間中套用至 SAP HANA。 sap_hana_sid
字串 SAP HANA 系統 ID (SID)。ID 必須包含 3 個英數字元,並以字母開頭。所有字母都必須大寫。 sap_hana_instance_number
整數 SAP HANA 系統的執行個體編號,從 0 到 99。預設值為 0。 sap_hana_sidadm_password
字串 作業系統 (OS) 管理員的密碼。密碼至少必須為 8 個字元,並包含至少 1 個大寫字母、1 個小寫字母與 1 個數字。 sap_hana_system_password
字串 資料庫超級使用者的密碼。密碼至少必須為 8 個字元,並包含至少 1 個大寫字母、1 個小寫字母與 1 個數字。 sap_hana_sidadm_uid
整數 SID_LCadm
使用者 ID 的預設值為900
,可避免使用者建立的群組與 SAP HANA 發生衝突。如有需要,您可以將這個值變更為其他值。sap_hana_sapsys_gid
整數 sapsys 的預設群組 ID 為 79
。您可以指定上述值,將這個值覆寫為自己的需求。sap_hana_scaleout_nodes
整數 請指定 1
以上。sap_hana_shared_nfs
字串 /hana/shared
磁碟區的 NFS 掛接點。例如:10.151.91.122:/hana_shared_nfs
。sap_hana_backup_nfs
字串 /hanabackup
磁碟區的 NFS 掛接點。例如:10.216.41.122:/hana_backup_nfs
。networkTag
字串 代表您 VM 執行個體的網路標記,供防火牆或轉送使用。如果您指定 publicIP: No
但未指定網路標記,請務必提供其他能存取網際網路的方式。nic_type
字串 選用,但如果目標機器和 OS 版本提供此選項,則建議使用。指定要與 VM 執行個體搭配使用的網路介面。您可以指定 GVNIC
或VIRTIO_NET
值。如要使用 Google Virtual NIC (gVNIC),您必須指定支援 gVNIC 的 OS 映像檔,做為linuxImage
屬性的值。如需作業系統映像檔清單,請參閱「作業系統詳細資料」。如果您未為此屬性指定值,系統會根據您為
這個引數適用於 Deployment Manager 範本instanceType
屬性指定的機器類型,自動選取網路介面。202302060649
以上版本。publicIP
布林值 (非必要) 指定是否要將公開 IP 位址加到您的 VM 執行個體。預設為 Yes
。serviceAccount
字串 (非必要) 指定主機 VM 和主機 VM 上執行的程式要使用的服務帳戶。指定服務帳戶的電子郵件地址。例如 svc-acct-name@project-id.iam.gserviceaccount.com。根據預設,系統會使用 Compute Engine 預設服務帳戶。詳情請參閱「Google Cloud 中的 SAP 程式身分與存取權管理」。 Google Cloud 建立次要 SAP HANA 系統的定義,方法是複製主要 SAP HANA 系統的定義,然後將複本貼在主要 SAP HANA 系統定義後方。請參考以下步驟的範例。
在次要 SAP HANA 系統的定義中,為下列屬性指定與主要 SAP HANA 系統定義中不同的值:
name
instanceName
zone
下載
sap_majoritymaker.yaml
多數製造商例項設定檔:wget https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_majoritymaker/template.yaml -O sap_majoritymaker.yaml
從
sap_majoritymaker.yaml
檔案複製 YAML 規格,從第 6 行開始,貼到 SAP HANAtemplate.yaml
檔案底部。完成大多數製造商例項的定義:
- 指定與兩個 SAP HANA 系統不同的
zone
。 - 建議的最小
instanceType
為n1-standard-2
,或至少 2 個 CPU 核心和 2 GB 記憶體的等效值。
您現在應該在 YAML 檔案中列出三個資源、兩個 SAP HANA 叢集和一個多數製造商執行個體,以及這些資源的設定屬性。
- 指定與兩個 SAP HANA 系統不同的
建立執行個體:
gcloud deployment-manager deployments create DEPLOYMENT_NAME --config TEMPLATE_NAME.yaml
上述指令會叫用 Deployment Manager,依據
template.yaml
檔案中的規格部署 VM、從儲存空間值區下載 SAP HANA 軟體,並安裝 SAP HANA。部署處理程序分為兩個階段。在第一階段,Deployment Manager 會將其狀態寫入主控台。在第二階段,部署指令碼會將狀態寫入 Cloud Logging。
完整 template.yaml
設定檔範例
下列範例顯示完成的 template.yaml
設定檔,該檔案會部署兩個向外擴充叢集,其中安裝了 SAP HANA 系統,以及一個充當多數決機制的 VM 執行個體。
這個檔案包含兩個要部署的資源定義:sap_hana_primary
和 sap_hana_secondary
。每個資源定義都包含 VM 和 SAP HANA 執行個體的定義。
sap_hana_secondary
資源定義是透過複製及貼上第一個定義,然後修改 name
、instanceName
和 zone
屬性的值而建立。這兩個資源定義中的所有其他屬性值都相同。
屬性 networkTag
、serviceAccount
、sap_hana_sidadm_uid
和 sap_hana_sapsys_gid
來自設定檔範本的「進階選項」部分。屬性 sap_hana_sidadm_uid
和 sap_hana_sapsys_gid
會納入,以顯示其預設值,因為屬性已註解掉。
resources: - name: sap_hana_primary type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana/sap_hana.py # # By default, this configuration file uses the latest release of the deployment # scripts for SAP on Google Cloud. To fix your deployments to a specific release # of the scripts, comment out the type property above and uncomment the type property below. # # type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/yyyymmddhhmm/dm-templates/sap_hana/sap_hana.py # properties: instanceName: hana-ha-vm-1 instanceType: n2-highmem-32 zone: us-central1-a subnetwork: example-subnet-us-central1 linuxImage: family/sles-15-sp1-sap linuxImageProject: suse-sap-cloud sap_hana_deployment_bucket: hana2-sp4-rev46 sap_hana_sid: HA1 sap_hana_instance_number: 22 sap_hana_sidadm_password: Tempa55word sap_hana_system_password: Tempa55word sap_hana_scaleout_nodes: 2 sap_hana_shared_nfs: 10.151.91.123:/hana_shared_nfs sap_hana_backup_nfs: 10.216.41.123:/hana_backup_nfs networkTag: cluster-ntwk-tag serviceAccount: limited-roles@example-project-123456.iam.gserviceaccount.com # sap_hana_sidadm_uid: 900 # sap_hana_sapsys_gid: 79 - name: sap_hana_secondary type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana/sap_hana.py # # By default, this configuration file uses the latest release of the deployment # scripts for SAP on Google Cloud. To fix your deployments to a specific release # of the scripts, comment out the type property above and uncomment the type property below. # # type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/yyyymmddhhmm/dm-templates/sap_hana/sap_hana.py # properties: instanceName: hana-ha-vm-2 instanceType: n2-highmem-32 zone: us-central1-c subnetwork: example-subnet-us-central1 linuxImage: family/sles-15-sp1-sap linuxImageProject: suse-sap-cloud sap_hana_deployment_bucket: hana2-sp4-rev46 sap_hana_sid: HA1 sap_hana_instance_number: 22 sap_hana_sidadm_password: Google123 sap_hana_system_password: Google123 sap_hana_scaleout_nodes: 2 sap_hana_shared_nfs: 10.141.91.124:/hana_shared_nfs sap_hana_backup_nfs: 10.106.41.124:/hana_backup_nfs networkTag: cluster-ntwk-tag serviceAccount: limited-roles@example-project-123456.iam.gserviceaccount.com # sap_hana_sidadm_uid: 900 # sap_hana_sapsys_gid: 79 - name: sap_majoritymaker type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_majoritymaker/sap_majoritymaker.py # # By default, this configuration file uses the latest release of the deployment # scripts for SAP on Google Cloud. To fix your deployments to a specific release # of the scripts, comment out the type property above and uncomment the type property below. # # type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/202208181245/dm-templates/sap_majoritymaker/sap_majoritymaker.py properties: instanceName: sap-majoritymaker instanceType: n1-standard-2 zone: us-central1-b subnetwork: example-subnet-us-central1 linuxImage: family/sles-15-sp1-sap linuxImageProject: suse-sap-cloud publicIP: No
建立防火牆規則,允許存取主機 VM
如果您尚未建立防火牆規則,請建立防火牆規則,允許從下列來源存取每個主機 VM:
- 設定本機工作站、防禦主機或跳板伺服器
- 叢集節點之間的存取權,以及 HA 叢集中的其他主機 VM
建立 VPC 防火牆規則時,您必須指定在 template.yaml
設定檔中定義的網路標記,將主機 VM 指定為規則的目標。
如要驗證部署作業,請定義規則,允許防禦主機或本機工作站透過通訊埠 22 建立 SSH 連線。
如要允許叢集節點之間的存取權,請新增防火牆規則,允許同一個子網路中其他 VM 的所有連接埠上的所有連線類型。
請務必先建立用於驗證部署作業和叢集內通訊的防火牆規則,再繼續閱讀下一節。如需操作說明,請參閱「新增防火牆規則」。
驗證 VM 和 SAP HANA 的部署作業
如要驗證部署作業,您可以檢查 Cloud Logging 中的部署記錄,並檢查主要與次要主機 VM 上的磁碟和服務。
在 Google Cloud 控制台中開啟 Cloud Logging,監控安裝進度及檢查錯誤。
篩選記錄:
記錄檔探索工具
在「Logs Explorer」頁面中,前往「查詢」窗格。
在「Resource」下拉式選單中,選取「Global」,然後點選「Add」。
如果找不到「Global」選項,請在查詢編輯器中輸入以下查詢:
resource.type="global" "Deployment"
點選「執行查詢」。
舊版記錄檢視器
- 在「Legacy Logs Viewer」頁面中,從基本選取器選單中選取「Global」做為記錄資源。
分析篩選過的記錄:
- 如果顯示
"--- Finished"
,表示部署程序已完成,您可以繼續進行下一個步驟。 如果畫面顯示配額錯誤:
在 IAM 和管理員「Quotas」(配額) 頁面上,增加 SAP HANA 規劃指南中所列出不符 SAP HANA 規定的任何配額。
在 Deployment Manager「Deployments」(部署) 頁面上,刪除部署以清除安裝失敗的 VM 與永久磁碟。
重新執行部署。
- 如果顯示
檢查多數製作者的部署狀態
您可以使用下列指令檢查多數製造商的部署狀態。
gcloud compute instances describe MAJORITY_MAKER_HOSTNAME --zone MAJORITY_MAKER_ZONE --format="table[box,title='Deployment Status'](name:label=Instance_Name,metadata.items.status:label=Status)"
如果畫面顯示 Complete
狀態,表示部署處理程序已成功處理多數 maker 執行個體。如果是正在進行的部署作業,畫面上會顯示 <blank>
狀態。
檢查 VM 和 SAP HANA 的設定
SAP HANA 系統部署後如沒有任何錯誤,請使用 SSH 連線到 VM。您可以從 Compute Engine 的「VM instances」(VM 執行個體) 頁面按一下 VM 執行個體的 SSH 按鈕,或者使用您偏好的 SSH 方法。
變更為超級使用者:
$
sudo su -在命令提示字元中輸入
df -h
。請確認每個 VM 都顯示/hana
目錄,例如/hana/data
。Filesystem Size Used Avail Use% Mounted on /dev/sda2 30G 4.0G 26G 14% / devtmpfs 126G 0 126G 0% /dev tmpfs 126G 0 126G 0% /dev/shm tmpfs 126G 17M 126G 1% /run tmpfs 126G 0 126G 0% /sys/fs/cgroup /dev/sda1 200M 9.7M 191M 5% /boot/efi /dev/mapper/vg_hana-shared 251G 49G 203G 20% /hana/shared /dev/mapper/vg_hana-sap 32G 240M 32G 1% /usr/sap /dev/mapper/vg_hana-data 426G 7.0G 419G 2% /hana/data /dev/mapper/vg_hana-log 125G 4.2G 121G 4% /hana/log /dev/mapper/vg_hanabackup-backup 512G 33M 512G 1% /hanabackup tmpfs 26G 0 26G 0% /run/user/900 tmpfs 26G 0 26G 0% /run/user/899 tmpfs 26G 0 26G 0% /run/user/1000
將以下指令中的
SID_LC
替換為您在設定檔範本中指定的系統 ID,以變更 SAP 管理員使用者。請使用小寫字母。#
su - SID_LCadm輸入下列指令,確定
hdbnameserver
、hdbindexserver
和其他 SAP HANA 服務都在執行個體上執行:>
HDB info如果您使用的是 RHEL for SAP 9.0 以上版本,請務必在 VM 執行個體上安裝
chkconfig
和compat-openssl11
套件。如需 SAP 的更多資訊,請參閱 SAP 附註 3108316 - Red Hat Enterprise Linux 9.x:安裝和設定。
驗證 Google Cloud的 Agent for SAP 安裝狀態
部署 VM 並安裝 SAP 系統後,請確認Google Cloud的 SAP 代理程式是否正常運作。
確認 Google Cloud的 Agent for SAP 是否正在執行
如要確認代理程式是否正在執行,請按照下列步驟操作:
建立與 Compute Engine 執行個體的 SSH 連線。
執行下列指令:
systemctl status google-cloud-sap-agent
如果代理程式運作正常,輸出內容就會包含
active (running)
。例如:google-cloud-sap-agent.service - Google Cloud Agent for SAP Loaded: loaded (/usr/lib/systemd/system/google-cloud-sap-agent.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2022-12-02 07:21:42 UTC; 4 days ago Main PID: 1337673 (google-cloud-sa) Tasks: 9 (limit: 100427) Memory: 22.4 M (max: 1.0G limit: 1.0G) CGroup: /system.slice/google-cloud-sap-agent.service └─1337673 /usr/bin/google-cloud-sap-agent
如果代理程式未執行,請重新啟動代理程式。
確認 SAP Host Agent 正在接收指標
如要確認Google Cloud的 Agent for SAP 是否收集基礎架構指標,並正確傳送至 SAP Host Agent,請按照下列步驟操作:
- 在 SAP 系統中輸入交易
ST06
。 在「Overview」(總覽) 窗格中,查看以下欄位的可用性和內容,確認 SAP 和 Google 監控基礎架構已做好正確的端對端設定:
- 雲端服務供應商:
Google Cloud Platform
- Enhanced Monitoring Access (強化版監控功能存取權):
TRUE
- Enhanced Monitoring Details (強化版監控功能詳細資料):
ACTIVE
- 雲端服務供應商:
設定 SAP HANA 監控
您也可以使用Google Cloud的 SAP 代理程式監控 SAP HANA 執行個體。自 2.0 版起,您可以設定代理程式收集 SAP HANA 監控指標,然後將指標傳送至 Cloud Monitoring。Cloud Monitoring 可讓您建立資訊主頁,以圖表呈現這些指標,並依據指標門檻設定快訊等。
如要進一步瞭解如何使用Google Cloud的 SAP 代理程式收集 SAP HANA 監控指標,請參閱「SAP HANA 監控指標收集」一文。
(選用) 建立指令碼自動化動作的執行個體清單
如要部分自動化 SAP HANA 系統和 Pacemaker 叢集的部分重複工作,您可以使用 Bash 指令碼。在本指南中,我們會使用這類 bash 指令碼,加快 SAP HANA 系統和 Pacemaker 叢集的設定速度。這些指令碼需要所有已部署的 VM 執行個體和對應區域的清單做為輸入內容。
如要啟用這項自動化功能,請建立名為 nodes.txt
的檔案,並以以下格式加入所有已部署 VM 執行個體的詳細資料:可用區名稱、空格,然後是 VM 執行個體名稱。本指南會使用以下範例檔案:
# cat nodes.txt us-west1-a hana-ha-vm-1 us-west1-a hana-ha-vm-1w1 us-west1-a hana-ha-vm-1w2 us-west1-b hana-majoritymaker us-west1-c hana-ha-vm-2 us-west1-c hana-ha-vm-2w1 us-west1-c hana-ha-vm-2w2
設定無密碼 SSH 存取權
如要設定 Pacemaker 叢集,並同步 SAP HANA 安全儲存庫 (SSFS) 金鑰,所有節點 (包括多數製造商執行個體) 之間都必須具備無密碼 SSH 存取權。如要使用無密碼 SSH 存取權,您必須將 SSH 公開金鑰新增至所有已部署執行個體的執行個體中繼資料。
中繼資料的格式為 USERNAME: PUBLIC-KEY-VALUE
。
如要進一步瞭解如何在 VM 中新增安全殼層金鑰,請參閱「在使用中繼資料型 SSH 金鑰的 VM 中新增安全殼層金鑰」。
手動步驟
針對主要和次要系統中的每個執行個體,以及多數製作者執行個體,收集使用者
root
的公開金鑰。gcloud compute ssh --quiet --zone ZONE_ID INSTANCE_NAME -- sudo cat /root/.ssh/id_rsa.pub
在金鑰前方加上字串
root:
,並將金鑰寫入名為public-ssh-keys.txt
的檔案中,例如:root:ssh-rsa AAAAB3NzaC1JfuYnOI1vutCs= root@INSTANCE_NAME
收集所有 SSH 公開金鑰後,請將金鑰做為中繼資料上傳至所有執行個體:
gcloud compute instances add-metadata --metadata-from-file ssh-keys=public-ssh-keys.txt --zone ZONE_ID INSTANCE_NAME
自動化步驟
或者,如要為 nodes.txt
中列出的所有執行個體,自動設定無密碼 SSH 存取權,請透過 Google Cloud 控制台執行下列步驟:
建立所有已部署執行個體的公開金鑰清單:
while read -u10 ZONE HOST ; do echo "Collecting public-key from $HOST"; { echo 'root:'; gcloud compute ssh --quiet --zone $ZONE $HOST --tunnel-through-iap -- sudo cat /root/.ssh/id_rsa.pub; } | tr -ds '\n' " " >> public-ssh-keys.txt; done 10< nodes.txt
將安全殼層公開金鑰指派為所有執行個體的中繼資料項目:
while read -u10 ZONE HOST ; do echo "Adding public keys to $HOST"; gcloud compute instances add-metadata --metadata-from-file ssh-keys=public-ssh-keys.txt --zone $ZONE $HOST; done 10< nodes.txt
停用 SAP HANA 自動啟動
手動步驟
針對叢集中的每個 SAP HANA 執行個體,請確認已停用 SAP HANA 自動啟動功能。針對備援,Pacemaker 會管理叢集中 SAP HANA 執行個體的啟動和停止作業。
以 SID_LCadm 身分在每個主機上停止 SAP HANA:
>
HDB stop在每個主機上,使用編輯器 (例如 vi) 開啟 SAP HANA 設定檔:
vi /usr/sap/SID/SYS/profile/SID_HDBINST_NUM_HOST_NAME
將
Autostart
屬性設為0
:Autostart=0
儲存設定檔。
以 SID_LCadm 身分在每個主機上啟動 SAP HANA:
>
HDB start
自動化步驟
或者,如要為 nodes.txt
中列出的所有執行個體停用 SAP HANA 自動啟動功能,請從 Google Cloud 主控台執行下列指令碼:
while read -u10 ZONE HOST ; do gcloud compute ssh --verbosity=none --zone $ZONE $HOST -- "echo Setting Autostart=0 on \$HOSTNAME; sudo sed -i 's/Autostart=1/Autostart=0/g' /usr/sap/SID/SYS/profile/SID_HDBINST_NUM_\$HOSTNAME"; done 10< nodes.txt
啟用 SAP HANA 快速重新啟動功能
Google Cloud 強烈建議您為每個 SAP HANA 執行個體啟用 SAP HANA 快速重新啟動功能,尤其是較大的執行個體。如果 SAP HANA 終止,但作業系統仍在執行,SAP HANA 快速重新啟動功能可縮短重新啟動時間。
根據 Google Cloud 提供的自動化指令碼設定,作業系統和核心設定已支援 SAP HANA 快速重新啟動。您需要定義 tmpfs
檔案系統,並設定 SAP HANA。
如要定義 tmpfs
檔案系統並設定 SAP HANA,您可以按照手動步驟操作,也可以使用Google Cloud 提供的自動化指令碼啟用 SAP HANA 快速重新啟動功能。詳情請參閱:
如需 SAP HANA 快速重新啟動功能的完整操作說明,請參閱 SAP HANA 快速重新啟動選項說明文件。
手動步驟
設定 tmpfs
檔案系統
主機 VM 和基礎 SAP HANA 系統成功部署後,您需要在 tmpfs
檔案系統中為 NUMA 節點建立及掛載目錄。
顯示 VM 的 NUMA 拓撲
您必須先瞭解 VM 有多少個 NUMA 節點,才能對應必要的 tmpfs
檔案系統。如要顯示 Compute Engine VM 上的可用 NUMA 節點,請輸入下列指令:
lscpu | grep NUMA
舉例來說,m2-ultramem-208
VM 類型有四個 NUMA 節點,編號為 0 到 3,如以下範例所示:
NUMA node(s): 4 NUMA node0 CPU(s): 0-25,104-129 NUMA node1 CPU(s): 26-51,130-155 NUMA node2 CPU(s): 52-77,156-181 NUMA node3 CPU(s): 78-103,182-207
建立 NUMA 節點目錄
為 VM 中的每個 NUMA 節點建立目錄,並設定權限。
舉例來說,如果有四個 NUMA 節點,編號為 0 到 3:
mkdir -pv /hana/tmpfs{0..3}/SID chown -R SID_LCadm:sapsys /hana/tmpfs*/SID chmod 777 -R /hana/tmpfs*/SID
將 NUMA 節點目錄掛接至 tmpfs
掛接 tmpfs
檔案系統目錄,並使用 mpol=prefer
為每個目錄指定 NUMA 節點偏好設定:
SID 請使用大寫英文字母指定 SID。
mount tmpfsSID0 -t tmpfs -o mpol=prefer:0 /hana/tmpfs0/SID mount tmpfsSID1 -t tmpfs -o mpol=prefer:1 /hana/tmpfs1/SID mount tmpfsSID2 -t tmpfs -o mpol=prefer:2 /hana/tmpfs2/SID mount tmpfsSID3 -t tmpfs -o mpol=prefer:3 /hana/tmpfs3/SID
更新「/etc/fstab
」
為確保掛接點在作業系統重新啟動後可供使用,請在檔案系統表格 /etc/fstab
中新增項目:
tmpfsSID0 /hana/tmpfs0/SID tmpfs rw,nofail,relatime,mpol=prefer:0 tmpfsSID1 /hana/tmpfs1/SID tmpfs rw,nofail,relatime,mpol=prefer:1 tmpfsSID1 /hana/tmpfs2/SID tmpfs rw,nofail,relatime,mpol=prefer:2 tmpfsSID1 /hana/tmpfs3/SID tmpfs rw,nofail,relatime,mpol=prefer:3
選用:設定記憶體用量限制
tmpfs
檔案系統可動態擴充及縮減。
如要限制 tmpfs
檔案系統使用的記憶體,您可以使用 size
選項為 NUMA 節點磁碟機容納的大小設定限制。例如:
mount tmpfsSID0 -t tmpfs -o mpol=prefer:0,size=250G /hana/tmpfs0/SID
您也可以在 global.ini
檔案的 [memorymanager]
區段中設定 persistent_memory_global_allocation_limit
參數,為特定 SAP HANA 例項和特定伺服器節點的所有 NUMA 節點限制整體 tmpfs
記憶體用量。
快速重新啟動的 SAP HANA 設定
如要設定 SAP HANA 以便快速重新啟動,請更新 global.ini
檔案,並指定要儲存在永久性記憶體中的資料表。
更新 global.ini
檔案中的 [persistence]
區段
設定 SAP HANA global.ini
檔案中的 [persistence]
區段,以參照 tmpfs
位置。請使用半形分號分隔每個 tmpfs
位置:
[persistence] basepath_datavolumes = /hana/data basepath_logvolumes = /hana/log basepath_persistent_memory_volumes = /hana/tmpfs0/SID;/hana/tmpfs1/SID;/hana/tmpfs2/SID;/hana/tmpfs3/SID
上述範例為四個 NUMA 節點指定四個記憶體磁碟區,對應至 m2-ultramem-208
。如果您在 m2-ultramem-416
上執行,則需要設定八個記憶體磁區 (0..7)。
修改 global.ini
檔案後,請重新啟動 SAP HANA。
SAP HANA 現在可以使用 tmpfs
位置做為永久記憶體空間。
指定要儲存在永久性記憶體中的資料表
指定要儲存在永久性記憶體中的特定資料欄資料表或分區。
舉例來說,如要為現有資料表開啟持久性記憶體,請執行 SQL 查詢:
ALTER TABLE exampletable persistent memory ON immediate CASCADE
如要變更新資料表的預設值,請在 indexserver.ini
檔案中新增 table_default
參數。例如:
[persistent_memory] table_default = ON
如要進一步瞭解如何控制資料欄、資料表,以及哪些監控檢視畫面可提供詳細資訊,請參閱「SAP HANA 永久記憶體」。
自動化步驟
Google Cloud 提供的自動化指令碼可啟用 SAP HANA 快速重新啟動功能,並修改目錄 /hana/tmpfs*
、檔案 /etc/fstab
和 SAP HANA 設定。執行指令碼時,您可能需要執行額外步驟,具體取決於這是 SAP HANA 系統的初始部署作業,還是將機器大小調整為不同的 NUMA 大小。
如要初始部署 SAP HANA 系統,或調整機器大小以增加 NUMA 節點數量,請務必在執行 Google Cloud提供的自動化指令碼時,讓 SAP HANA 執行,以便啟用 SAP HANA 快速重新啟動功能。
當您調整機器大小以減少 NUMA 節點數時,請務必在執行 Google Cloud 提供的自動化指令碼時,停止 SAP HANA,以便啟用 SAP HANA 快速重新啟動功能。執行指令碼後,您必須手動更新 SAP HANA 設定,才能完成 SAP HANA 快速重新啟動設定。詳情請參閱「SAP HANA 快速重新啟動設定」。
如要啟用 SAP HANA 快速重新啟動功能,請按照下列步驟操作:
與主機 VM 建立 SSH 連線。
切換至根目錄:
sudo su -
下載
sap_lib_hdbfr.sh
指令碼:wget https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/lib/sap_lib_hdbfr.sh
將檔案設為可執行檔:
chmod +x sap_lib_hdbfr.sh
確認指令碼沒有錯誤:
vi sap_lib_hdbfr.sh ./sap_lib_hdbfr.sh -help
如果指令傳回錯誤,請與 Cloud Customer Care 團隊聯絡。如要進一步瞭解如何與客戶服務團隊聯絡,請參閱「取得 SAP 支援 Google Cloud」一文。
請先為 SAP HANA 資料庫的系統使用者,替換 SAP HANA 系統 ID (SID) 和密碼,再執行指令碼。為確保密碼安全,建議您在 Secret Manager 中使用密鑰。
使用 Secret Manager 中的密鑰名稱執行指令碼。這個機密金鑰必須存在於包含主機 VM 執行個體的 Google Cloud 專案中。
sudo ./sap_lib_hdbfr.sh -h 'SID' -s SECRET_NAME
更改下列內容:
SID
:請使用大寫字母指定 SID。例如:AHA
。SECRET_NAME
:指定與 SAP HANA 資料庫系統使用者密碼相對應的機密金鑰名稱。這個祕密值必須存在於 Google Cloud 專案中,且該專案包含主機 VM 執行個體。
或者,您也可以使用純文字密碼執行指令碼。啟用 SAP HANA 快速重新啟動功能後,請務必變更密碼。我們不建議使用純文字密碼,因為密碼會記錄在 VM 的指令列記錄中。
sudo ./sap_lib_hdbfr.sh -h 'SID' -p 'PASSWORD'
更改下列內容:
SID
:請使用大寫字母指定 SID。例如:AHA
。PASSWORD
:指定 SAP HANA 資料庫系統使用者的密碼。
如果初次執行成功,您應該會看到類似以下的輸出內容:
INFO - Script is running in standalone mode ls: cannot access '/hana/tmpfs*': No such file or directory INFO - Setting up HANA Fast Restart for system 'TST/00'. INFO - Number of NUMA nodes is 2 INFO - Number of directories /hana/tmpfs* is 0 INFO - HANA version 2.57 INFO - No directories /hana/tmpfs* exist. Assuming initial setup. INFO - Creating 2 directories /hana/tmpfs* and mounting them INFO - Adding /hana/tmpfs* entries to /etc/fstab. Copy is in /etc/fstab.20220625_030839 INFO - Updating the HANA configuration. INFO - Running command: select * from dummy DUMMY "X" 1 row selected (overall time 4124 usec; server time 130 usec) INFO - Running command: ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM') SET ('persistence', 'basepath_persistent_memory_volumes') = '/hana/tmpfs0/TST;/hana/tmpfs1/TST;' 0 rows affected (overall time 3570 usec; server time 2239 usec) INFO - Running command: ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM') SET ('persistent_memory', 'table_unload_action') = 'retain'; 0 rows affected (overall time 4308 usec; server time 2441 usec) INFO - Running command: ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') SET ('persistent_memory', 'table_default') = 'ON'; 0 rows affected (overall time 3422 usec; server time 2152 usec)
下載 SUSE 套件
請解除安裝用於擴大部署作業的資源代理程式,並用用於擴展部署作業的資源代理程式取代。
針對 SLES for SAP 15 SP6 以上版本,建議使用 SAPHanaSR-angi
套件。如要使用 SLES for SAP 15 SP5 以下版本,您可以使用 SAPHanaSR-ScaleOut
和 SAPHanaSR-ScaleOut-doc
套件。
手動步驟
請在所有主機上執行下列步驟,包括主要製作工具執行個體:
解除安裝 SAP HANA 向上擴充資源代理程式:
zypper remove SAPHanaSR SAPHanaSR-doc
安裝 SAP HANA 向外擴展資源代理程式:
SLES for SAP 15 SP5 或更早版本
zypper in SAPHanaSR-ScaleOut SAPHanaSR-ScaleOut-doc
SLES for SAP 15 SP6 以上版本
zypper install SAPHanaSR-angi
安裝
socat
:zypper install socat
安裝最新的作業系統修補程式:
zypper patch
自動化步驟
或者,如要為 nodes.txt
中列出的所有執行個體自動執行這項程序,請在 Google Cloud 主控台中執行下列指令碼:
SLES for SAP 15 SP5 或更早版本
while read -u10 HOST ; do gcloud compute ssh --zone $HOST -- "sudo zypper remove -y SAPHanaSR SAPHanaSR-doc; sudo zypper in -y SAPHanaSR-ScaleOut SAPHanaSR-ScaleOut-doc socat; sudo zypper patch -y"; done 10< nodes.txt
SLES for SAP 15 SP6 以上版本
while read -u10 HOST ; do gcloud compute ssh --zone $HOST -- "sudo zypper remove -y SAPHanaSR SAPHanaSR-doc; sudo zypper in -y SAPHanaSR-angi socat; sudo zypper patch -y"; done 10< nodes.txt
備份資料庫
建立資料庫備份,以便啟動 SAP HANA 系統複製的資料庫記錄,並建立復原點。
如果 MDC 設定中有多個租戶資料庫,請備份每個租戶資料庫。
Deployment Manager 範本會使用 /hanabackup/data/SID 做為預設備份目錄。
如要為新的 SAP HANA 資料庫建立備份,請按照下列步驟操作:
在主要主機上,切換至
SID_LCadm
。指令可能會因 OS 映像檔而異。sudo -i -u SID_LCadm
建立資料庫備份:
針對 SAP HANA 單一資料庫容器系統:
>
hdbsql -t -u system -p SYSTEM_PASSWORD -i INST_NUM \ "backup data using file ('full')"以下範例顯示新 SAP HANA 系統的成功回應:
0 rows affected (overall time 18.416058 sec; server time 18.414209 sec)
針對 SAP HANA 多資料庫容器系統 (MDC),請為系統資料庫和任何租用戶資料庫建立備份:
>
hdbsql -t -d SYSTEMDB -u system -p SYSTEM_PASSWORD -i INST_NUM \ "backup data using file ('full')">
hdbsql -t -d SID -u system -p SYSTEM_PASSWORD -i INST_NUM \ "backup data using file ('full')"
以下範例顯示新 SAP HANA 系統的成功回應:
0 rows affected (overall time 16.590498 sec; server time 16.588806 sec)
確認記錄模式已設為正常:
>
hdbsql -u system -p SYSTEM_PASSWORD -i INST_NUM \ "select value from "SYS"."M_INIFILE_CONTENTS" where key='log_mode'"畫面上會顯示下列訊息:
VALUE "normal"
啟用 SAP HANA 系統複製
啟用 SAP HANA 系統複製功能時,您必須將檔案系統 (SSFS) 上 SAP HANA 安全儲存庫的資料和金鑰檔案,從主要主機複製到次要主機。這個程序用來複製檔案的方法只是其中一種可能的方法。
在主要主機上以
SID_LCadm
身分啟用系統複製:>
hdbnsutil -sr_enable --name=PRIMARY_HOST_NAME在次要主機上:
以
SID_LCadm
身分停止 SAP HANA:>
sapcontrol -nr INST_NUM -function StopSystem以 root 身分封存現有的 SSFS 資料和金鑰檔案:
#
cd /usr/sap/SID/SYS/global/security/rsecssfs/#
mv data/SSFS_SID.DAT data/SSFS_SID.DAT-ARC#
mv key/SSFS_SID.KEY key/SSFS_SID.KEY-ARC從主要主機複製資料檔案:
#
scp -o StrictHostKeyChecking=no \ PRIMARY_HOST_NAME:/usr/sap/SID/SYS/global/security/rsecssfs/data/SSFS_SID.DAT \ /usr/sap/SID/SYS/global/security/rsecssfs/data/SSFS_SID.DAT從主要主機複製金鑰檔案:
#
scp -o StrictHostKeyChecking=no \ PRIMARY_HOST_NAME:/usr/sap/SID/SYS/global/security/rsecssfs/key/SSFS_SID.KEY \ /usr/sap/SID/SYS/global/security/rsecssfs/key/SSFS_SID.KEY更新檔案的擁有權:
#
chown SID_LCadm:sapsys /usr/sap/SID/SYS/global/security/rsecssfs/data/SSFS_SID.DAT#
chown SID_LCadm:sapsys /usr/sap/SID/SYS/global/security/rsecssfs/key/SSFS_SID.KEY更新檔案的權限:
#
chmod 644 /usr/sap/SID/SYS/global/security/rsecssfs/data/SSFS_SID.DAT#
chmod 640 /usr/sap/SID/SYS/global/security/rsecssfs/key/SSFS_SID.KEY以 SID_LCadm 身分,將次要 SAP HANA 系統註冊至 SAP HANA 系統複製:
>
hdbnsutil -sr_register --remoteHost=PRIMARY_HOST_NAME --remoteInstance=INST_NUM \ --replicationMode=syncmem --operationMode=logreplay --name=SECONDARY_HOST_NAME以 SID_LCadm 身分啟動 SAP HANA:
>
sapcontrol -nr INST_NUM -function StartSystem
驗證系統複製作業
在主要主機上以 SID_LCadm
的身份執行下列 Python 指令碼,確認 SAP HANA 系統複製功能是否處於啟用狀態:
$
python $DIR_INSTANCE/exe/python_support/systemReplicationStatus.py
如果複製作業設定正確,系統會在其他指標中,為 xsengine
、nameserver
和 indexserver
服務顯示下列值:
Secondary Active Status
為YES
Replication Status
為ACTIVE
此外,overall system replication status
會顯示 ACTIVE
。
啟用 SAP HANA HA/DR 供應器掛鉤
SUSE 建議您啟用 SAP HANA HA/DR 供應器鉤子,讓 SAP HANA 針對特定事件傳送通知,並改善失敗偵測功能。SAP HANA HA/DR 供應器鉤子需要使用 SAPHanaSR
鉤子的 SAP HANA 2.0 SPS 03 以上版本,以及 SAPHanaSR-angi
鉤子的 SAP HANA 2.0 SPS 05 以上版本。
在主要和次要網站上完成下列步驟:
以
SID_LCadm
身分停止 SAP HANA:>
sapcontrol -nr 00 -function StopSystem
以 root 或
SID_LCadm
身分開啟global.ini
檔案進行編輯:>
vi /hana/shared/SID/global/hdb/custom/config/global.ini請在
global.ini
檔案中加入下列定義:SLES for SAP 15 SP5 或更早版本
[ha_dr_provider_saphanasrmultitarget] provider = SAPHanaSrMultiTarget path = /usr/share/SAPHanaSR-ScaleOut/ execution_order = 1 [ha_dr_provider_sustkover] provider = susTkOver path = /usr/share/SAPHanaSR-ScaleOut/ execution_order = 2 sustkover_timeout = 30 [ha_dr_provider_suschksrv] provider = susChkSrv path = /usr/share/SAPHanaSR-ScaleOut/ execution_order = 3 action_on_lost = stop [trace] ha_dr_saphanasrmultitarget = info ha_dr_sustkover = info
SLES for SAP 15 SP6 以上版本
[ha_dr_provider_susHanaSR] provider = susHanaSR path = /usr/share/SAPHanaSR-angi execution_order = 1 [ha_dr_provider_suschksrv] provider = susChkSrv path = /usr/share/SAPHanaSR-angi execution_order = 3 action_on_lost = stop [ha_dr_provider_susTkOver] provider = susTkOver path = /usr/share/SAPHanaSR-angi execution_order = 1 sustkover_timeout = 30 [trace] ha_dr_sushanasr = info ha_dr_suschksrv = info ha_dr_sustkover = info
以 root 身分執行下列指令,在
/etc/sudoers.d
目錄中建立自訂設定檔。這個新的設定檔可讓SID_LCadm
使用者在呼叫srConnectionChanged()
鉤子方法時存取叢集節點屬性。>
visudo -f /etc/sudoers.d/SAPHanaSR在
/etc/sudoers.d/SAPHanaSR
檔案中,新增下列文字:SLES for SAP 15 SP5 或更早版本
將
SID_LC
取代為小寫的 SID。SID_LCadm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_SID_LC_site_srHook_* SID_LCadm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_SID_LC_gsh * SID_LCadm ALL=(ALL) NOPASSWD: /usr/sbin/SAPHanaSR-hookHelper --sid=SID_LC *
SLES for SAP 15 SP6 以上版本
請依指示取代下列項目:
SITE_A
:主要 SAP HANA 伺服器的網站名稱SITE_B
:次要 SAP HANA 伺服器的網站名稱SID_LC
:使用小寫字母指定的 SID
crm_mon -A1 | grep site
指令。Cmnd_Alias SOK_SITEA = /usr/sbin/crm_attribute -n hana_SID_LC_site_srHook_SITE_A -v SOK -t crm_config -s SAPHanaSR Cmnd_Alias SFAIL_SITEA = /usr/sbin/crm_attribute -n hana_SID_LC_site_srHook_SITE_A -v SFAIL -t crm_config -s SAPHanaSR Cmnd_Alias SOK_SITEB = /usr/sbin/crm_attribute -n hana_SID_LC_site_srHook_SITE_B -v SOK -t crm_config -s SAPHanaSR Cmnd_Alias SFAIL_SITEB = /usr/sbin/crm_attribute -n hana_SID_LC_site_srHook_SITE_B -v SFAIL -t crm_config -s SAPHanaSR SID_LCadm ALL=(ALL) NOPASSWD: /usr/bin/SAPHanaSR-hookHelper --sid=SID --case=* SID_LCadm ALL=(ALL) NOPASSWD: SOK_SITEA, SFAIL_SITEA, SOK_SITEB, SFAIL_SITEB
請確認
/etc/sudoers
檔案包含下列文字:適用於 SLES for SAP 15 SP3 以上版本:
@includedir /etc/sudoers.d
適用於 SLES for SAP 15 SP2 以下版本:
#includedir /etc/sudoers.d
請注意,這段文字中的
#
是語法的一環,並不表示該行是註解。
以
SID_LCadm
身分啟動 SAP HANA:>
sapcontrol -nr 00 -function StartSystem完成 SAP HANA 的叢集設定後,您可以確認鉤子在容錯測試期間是否正常運作,如「Troubleshooting the SAPHanaSR python hook」和「HA cluster takeover takes too long on HANA indexserver failure」所述。
設定 Cloud Load Balancing 容錯移轉支援功能
內部直通式網路負載平衡器服務提供容錯支援,可根據健康檢查服務將流量轉送至 SAP HANA 叢集中的有效主機。
為虛擬 IP 保留 IP 位址
虛擬 IP (VIP) 位址有時也稱為浮動 IP 位址,會追隨啟用的 SAP HANA 系統。負載平衡器會將傳送至 VIP 的流量,路由至目前代管啟用中 SAP HANA 系統的 VM。
開啟 Cloud Shell:
為虛擬 IP 保留 IP 位址。這是應用程式用來存取 SAP HANA 的 IP 位址。如果您省略
--addresses
標記,系統會為您選擇指定子網路中的 IP 位址:$
gcloud compute addresses create VIP_NAME \ --region CLUSTER_REGION --subnet CLUSTER_SUBNET \ --addresses VIP_ADDRESS如要進一步瞭解如何預留靜態 IP,請參閱「預留靜態內部 IP 位址」。
確認 IP 位址保留狀態:
$
gcloud compute addresses describe VIP_NAME \ --region CLUSTER_REGION您會看到類似以下範例的輸出內容:
address: 10.0.0.19 addressType: INTERNAL creationTimestamp: '2020-05-20T14:19:03.109-07:00' description: '' id: '8961491304398200872' kind: compute#address name: vip-for-hana-ha networkTier: PREMIUM purpose: GCE_ENDPOINT region: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1 selfLink: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1/addresses/vip-for-hana-ha status: RESERVED subnetwork: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1/subnetworks/example-subnet-us-central1
為主機 VM 建立執行個體群組
在 Cloud Shell 中建立兩個非代管執行個體群組,並將主要主機 VM 指派給其中一個,將次要主機 VM 指派給另一個:
$
gcloud compute instance-groups unmanaged create PRIMARY_IG_NAME \ --zone=PRIMARY_ZONE$
gcloud compute instance-groups unmanaged add-instances PRIMARY_IG_NAME \ --zone=PRIMARY_ZONE \ --instances=PRIMARY_HOST_NAME$
gcloud compute instance-groups unmanaged create SECONDARY_IG_NAME \ --zone=SECONDARY_ZONE$
gcloud compute instance-groups unmanaged add-instances SECONDARY_IG_NAME \ --zone=SECONDARY_ZONE \ --instances=SECONDARY_HOST_NAME確認執行個體群組已建立:
$
gcloud compute instance-groups unmanaged list您會看到類似以下範例的輸出內容:
NAME ZONE NETWORK NETWORK_PROJECT MANAGED INSTANCES hana-ha-ig-1 us-central1-a example-network example-project-123456 No 1 hana-ha-ig-2 us-central1-c example-network example-project-123456 No 1
建立 Compute Engine 健康狀態檢查
在 Cloud Shell 中建立健康狀態檢查。針對健康狀態檢查使用的通訊埠,請選擇位於私人範圍 (49152-65535) 的通訊埠,以免與其他服務衝突。檢查間隔和逾時值會比預設值稍長,以便在 Compute Engine 即時遷移事件期間提高容錯值。如有需要,您可以調整這些值:
$
gcloud compute health-checks create tcp HEALTH_CHECK_NAME --port=HEALTHCHECK_PORT_NUM \ --proxy-header=NONE --check-interval=10 --timeout=10 --unhealthy-threshold=2 \ --healthy-threshold=2確認健康狀態檢查已建立:
$
gcloud compute health-checks describe HEALTH_CHECK_NAME您會看到類似以下範例的輸出內容:
checkIntervalSec: 10 creationTimestamp: '2020-05-20T21:03:06.924-07:00' healthyThreshold: 2 id: '4963070308818371477' kind: compute#healthCheck name: hana-health-check selfLink: https://www.googleapis.com/compute/v1/projects/example-project-123456/global/healthChecks/hana-health-check tcpHealthCheck: port: 60000 portSpecification: USE_FIXED_PORT proxyHeader: NONE timeoutSec: 10 type: TCP unhealthyThreshold: 2
為健康狀態檢查建立防火牆規則
為私人範圍中的通訊埠定義防火牆規則,允許 Compute Engine 健康檢查 35.191.0.0/16
和 130.211.0.0/22
使用的 IP 範圍存取主機 VM。詳情請參閱「建立健康狀態檢查的防火牆規則」。
如果您尚未建立網路代碼,請在主機 VM 中新增網路代碼。防火牆規則會使用這個網路標記進行健康狀態檢查。
$
gcloud compute instances add-tags PRIMARY_HOST_NAME \ --tags NETWORK_TAGS \ --zone PRIMARY_ZONE$
gcloud compute instances add-tags SECONDARY_HOST_NAME \ --tags NETWORK_TAGS \ --zone SECONDARY_ZONE如果您尚未建立防火牆規則,請建立防火牆規則來允許健康狀態檢查:
$
gcloud compute firewall-rules create RULE_NAME \ --network NETWORK_NAME \ --action ALLOW \ --direction INGRESS \ --source-ranges 35.191.0.0/16,130.211.0.0/22 \ --target-tags NETWORK_TAGS \ --rules tcp:HLTH_CHK_PORT_NUM例如:
gcloud compute firewall-rules create fw-allow-health-checks \ --network example-network \ --action ALLOW \ --direction INGRESS \ --source-ranges 35.191.0.0/16,130.211.0.0/22 \ --target-tags cluster-ntwk-tag \ --rules tcp:60000
設定負載平衡器和容錯移轉群組
建立負載平衡器後端服務:
$
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme internal \ --health-checks HEALTH_CHECK_NAME \ --no-connection-drain-on-failover \ --drop-traffic-if-unhealthy \ --failover-ratio 1.0 \ --region CLUSTER_REGION \ --global-health-checks將主要執行個體群組新增至後端服務:
$
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group PRIMARY_IG_NAME \ --instance-group-zone PRIMARY_ZONE \ --region CLUSTER_REGION將次要容錯移轉執行個體群組新增至後端服務:
$
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group SECONDARY_IG_NAME \ --instance-group-zone SECONDARY_ZONE \ --failover \ --region CLUSTER_REGION建立轉送規則。針對 IP 位址,請指定您為 VIP 預留的 IP 位址。如果您需要從下方指定的區域以外存取 SAP HANA 系統,請在定義中加入標記
--allow-global-access
:$
gcloud compute forwarding-rules create RULE_NAME \ --load-balancing-scheme internal \ --address VIP_ADDRESS \ --subnet CLUSTER_SUBNET \ --region CLUSTER_REGION \ --backend-service BACKEND_SERVICE_NAME \ --ports ALL如要進一步瞭解跨區存取 SAP HANA 高可用性系統,請參閱「內部 TCP/UDP 負載平衡」。
測試負載平衡器設定
雖然後端執行個體群組要到稍後才會註冊為健康狀態,但您可以設定監聽器來回應健康狀態檢查,藉此測試負載平衡器設定。設定事件監聽器後,如果負載平衡器設定正確,後端執行個體群組的狀態就會變更為正常。
以下各節將介紹可用來測試設定的不同方法。
使用 socat
公用程式測試負載平衡器
您可以使用 socat
公用程式,暫時監聽健康狀態檢查埠。您還是需要安裝 socat
公用程式,因為稍後設定叢集資源時會用到。
在主要和次要主控主機 VM 上以超級使用者的身分安裝
socat
公用程式:#
zypper install -y socat啟動
socat
程序,在健康檢查通訊埠上監聽 60 秒:#
timeout 60s socat - TCP-LISTEN:HLTH_CHK_PORT_NUM,fork在 Cloud Shell 中,等待幾秒讓健康檢查偵測到監聽器後,請檢查後端執行個體群組的健康狀態:
$
gcloud compute backend-services get-health BACKEND_SERVICE_NAME \ --region CLUSTER_REGION畫面會顯示類似以下的輸出:
--- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instanceGroups/hana-ha-ig-1 status: healthStatus: ‐ healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instances/hana-ha-vm-1 ipAddress: 10.0.0.35 port: 80 kind: compute#backendServiceGroupHealth --- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instanceGroups/hana-ha-ig-2 status: healthStatus: ‐ healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instances/hana-ha-vm-2 ipAddress: 10.0.0.34 port: 80 kind: compute#backendServiceGroupHealth
使用 22 號通訊埠測試負載平衡器
如果主機 VM 上的 SSH 連線已開啟通訊埠 22,您可以暫時編輯健康檢查器,讓它使用通訊埠 22,這個通訊埠有可回應健康檢查器的監聽器。
如要暫時使用 22 個連接埠,請按照下列步驟操作:
在主控台中按一下健康狀態檢查:
按一下 [編輯]。
在「Port」欄位中,將通訊埠號碼變更為 22。
按一下「儲存」,然後等候一兩分鐘。
在 Cloud Shell 中,檢查後端執行個體群組的健康狀態:
$
gcloud compute backend-services get-health BACKEND_SERVICE_NAME \ --region CLUSTER_REGION畫面會顯示類似以下的輸出:
--- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instanceGroups/hana-ha-ig-1 status: healthStatus: ‐ healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instances/hana-ha-vm-1 ipAddress: 10.0.0.35 port: 80 kind: compute#backendServiceGroupHealth --- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instanceGroups/hana-ha-ig-2 status: healthStatus: ‐ healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instances/hana-ha-vm-2 ipAddress: 10.0.0.34 port: 80 kind: compute#backendServiceGroupHealth
完成後,請將健康狀態檢查通訊埠編號改回原始通訊埠編號。
設定 Pacemaker
以下程序會在 SAP HANA 專用的 Compute Engine VM 上,設定 SUSE 實作 Pacemaker 叢集。
如要進一步瞭解如何在 SLES 上設定高可用性叢集,請參閱您所用 SLES 版本的 SUSE Linux Enterprise 高可用性擴充功能說明文件。
初始化叢集
在主要主機上以超級使用者身分,初始化叢集:
SLES 15
crm cluster init -y
SLES 12
ha-cluster-init -y
請忽略與 SBD 和預設密碼相關的警告。這項部署作業不會使用 SBD 和預設密碼。
設定叢集
以超級使用者的身分,在主要主機上執行下列步驟。
啟用維護模式
將 Pacemaker 叢集切換至維護模式:
crm configure property maintenance-mode="true"
設定一般叢集屬性
設定下列一般叢集屬性:
crm configure property stonith-timeout="300s" crm configure property stonith-action="reboot" crm configure property stonith-enabled="true" crm configure property cluster-infrastructure="corosync" crm configure property cluster-name="hacluster" crm configure property placement-strategy="balanced" crm configure property no-quorum-policy="freeze" crm configure property concurrent-fencing="true" crm configure rsc_defaults migration-threshold="50" crm configure rsc_defaults resource-stickiness="1000" crm configure op_defaults timeout="600"
編輯 corosync.conf 預設設定
使用您選擇的編輯器開啟
/etc/corosync/corosync.conf
檔案。移除
consensus
參數。根據 Google Cloud的建議修改其他參數。
下表列出 Google Cloud建議值的totem
參數,以及變更值的影響。如要瞭解這些參數的預設值 (Linux 發行版可能不同),請參閱 Linux 發行版的說明文件。參數 建議值 變更值的影響 secauth
off
停用所有 totem
訊息的驗證和加密功能。join
60 (毫秒) 增加節點在會員通訊協定中等待 join
訊息的時間。max_messages
20 增加節點在收到權杖後可能傳送的訊息數量上限。 token
20000 (毫秒) 增加節點等待
totem
通訊協定權杖的時間長度,以便節點宣告權杖遺失、假設節點發生錯誤,並開始採取行動。提高
token
參數的值,可讓叢集更能容許短暫的基礎架構事件,例如即時遷移。不過,這也可能導致叢集需要較長時間偵測及復原節點故障。token
參數的值也會決定consensus
參數的預設值,後者用於控制節點在嘗試重新建立設定成員資格前,等待達成共識的時間長度。consensus
不適用 以毫秒為單位,指定在等待達成共識後,才開始進行新一輪會員設定的等待時間。
建議您省略這個參數。如果未指定
如果您明確指定consensus
參數,Corosync 會將其值設為token
參數值的 1.2 倍。如果您使用token
參數的建議值20000
,則consesus
參數會設為24000
值。consensus
的值,請確認該值為24000
或1.2*token
(以較大者為準)。token_retransmits_before_loss_const
10 在節點判斷收件節點已失敗並採取行動前,增加節點嘗試重新傳送符記的次數。 transport
- 針對 SLES:
udpu
- RHEL 8 以上版本:
knet
- RHEL 7:
udpu
指定 corosync 使用的傳輸機制。 - 針對 SLES:
將所有主機加入 Pacemaker 叢集
將所有其他主機 (包括多數製造者) 加入主要主機上的 Pacemaker 叢集:
手動步驟
SLES 15
crm cluster join -y -c PRIMARY_HOST_NAME
SLES 12
ha-cluster-join -y -c PRIMARY_HOST_NAME
自動化步驟
或者,如要針對 nodes.txt
中列出的所有執行個體自動執行這項程序,請從 Google Cloud 主控台執行下列指令碼:
while read -u10 HOST ; do echo "Joining $HOST to Pacemaker cluster"; gcloud compute ssh --tunnel-through-iap --quiet --zone $HOST -- sudo ha-cluster-join -y -c PRIMARY_HOST_NAME; done 10< nodes.txt
忽略將主要節點與本身連結時觸發的錯誤訊息 ERROR: cluster.join: Abort: Cluster is currently active
。
從任何主機以 root 身分確認叢集是否顯示所有節點:
#
crm_mon -s
畫面會顯示類似以下的輸出:
CLUSTER OK: 5 nodes online, 0 resources configured
設定圍欄
您可以為每個主機 VM 定義叢集資源,並設定圍欄代理程式,藉此設定圍欄。
為確保在圍欄動作後的事件順序正確,您還可以設定作業系統,在 VM 遭到圍欄後延遲重新啟動 Corosync。您也可以調整 Pacemaker 的重新啟動逾時時間,以便考量延遲時間。
建立圍欄裝置資源
手動步驟
在主要主機上以超級使用者的身分,為主要和次要叢集中的所有節點建立圍欄資源:
將
PRIMARY_HOST_NAME
替換為主要叢集中某個節點的主機名稱後,執行下列指令:#
crm configure primitive STONITH-"PRIMARY_HOST_NAME" stonith:fence_gce \ op monitor interval="300s" timeout="120s" \ op start interval="0" timeout="60s" \ params port="PRIMARY_HOST_NAME" zone="PRIMARY_ZONE" project="PROJECT_ID" \ pcmk_reboot_timeout=300 pcmk_monitor_retries=4 pcmk_delay_max=30針對主要叢集中的所有其他節點重複執行上述步驟。
將
SECONDARY_HOST_NAME
替換為次要叢集中節點的主機名稱後,執行下列指令。#
crm configure primitive STONITH-"SECONDARY_HOST_NAME" stonith:fence_gce \ op monitor interval="300s" timeout="120s" \ op start interval="0" timeout="60s" \ params port="SECONDARY_HOST_NAME" zone="SECONDARY_ZONE" project="PROJECT_ID" \ pcmk_reboot_timeout=300 pcmk_monitor_retries=4針對次要叢集中的所有其他節點重複執行上述步驟。
將
MAJORITY_MAKER_HOSTNAME
替換為多數製作工具執行個體的主機名稱後,執行下列指令:#
crm configure primitive STONITH-"MAJORITY_MAKER_HOSTNAME" stonith:fence_gce \ op monitor interval="300s" timeout="120s" \ op start interval="0" timeout="60s" \ params port="MAJORITY_MAKER_HOSTNAME" zone="MAJORITY_MAKER_ZONE" project="PROJECT_ID" \ pcmk_reboot_timeout=300 pcmk_monitor_retries=4設定圍欄裝置的位置:
#
crm configure location LOC_STONITH_"PRIMARY_HOST_NAME" \ STONITH-"PRIMARY_HOST_NAME" -inf: "PRIMARY_HOST_NAME"重複執行上述步驟,針對主要和次要叢集中的所有其他主機 (包括主要製作者主機) 執行。
設定 Corosync 的重新啟動延遲時間
手動步驟
在所有主機上以 root 身分建立
systemd
插入檔案,以便延遲 Corosync 的啟動,確保在重新啟動受限的 VM 後,事件的順序正確無誤:systemctl edit corosync.service
在檔案中新增下列幾行內容:
[Service] ExecStartPre=/bin/sleep 60
儲存檔案並結束編輯器。
重新載入 systemd 管理員設定。
systemctl daemon-reload
確認已建立插入檔案:
service corosync status
您應該會看到插入檔案的一行,如以下範例所示:
● corosync.service - Corosync Cluster Engine Loaded: loaded (/usr/lib/systemd/system/corosync.service; disabled; vendor preset: disabled) Drop-In: /etc/systemd/system/corosync.service.d └─override.conf Active: active (running) since Tue 2021-07-20 23:45:52 UTC; 2 days ago
自動化步驟
或者,如要針對 nodes.txt
中列出的所有執行個體自動執行這項程序,請從 Google Cloud 主控台執行下列指令碼:
while read -u10 HOST; do gcloud compute ssh --tunnel-through-iap --quiet --zone $HOST -- "sudo mkdir -p /etc/systemd/system/corosync.service.d/; sudo echo -e '[Service]\nExecStartPre=/bin/sleep 60' | sudo tee -a /etc/systemd/system/corosync.service.d/override.conf; sudo systemctl daemon-reload"; done 10< nodes.txt
為 VIP 位址建立本機叢集 IP 資源
如要在作業系統中設定 VIP 位址,請為先前保留的 VIP 位址建立本機叢集 IP 資源:
#
crm configure primitive rsc_vip_int-primary IPaddr2 \
params ip=VIP_ADDRESS cidr_netmask=32 nic="eth0" op monitor interval=3600s timeout=60s
設定輔助健康狀態檢查服務
負載平衡器會使用每個主機健康狀態檢查通訊埠上的監聽器,判斷 SAP HANA 叢集的主要執行個體執行的位置。
如要管理叢集中的事件監聽器,請為事件監聽器建立資源。
這些操作說明會使用 socat
公用程式做為事件監聽器。
在兩個主機上以超級使用者身分安裝
socat utility
:#
zypper in -y socat在主要主機上為輔助健康檢查服務建立資源:
crm configure primitive rsc_healthcheck-primary anything \ params binfile="/usr/bin/socat" \ cmdline_options="-U TCP-LISTEN:HEALTHCHECK_PORT_NUM,backlog=10,fork,reuseaddr /dev/null" \ op monitor timeout=20s interval=10s \ op_params depth=0
將 VIP 和輔助健康檢查服務資源分組:
#
crm configure group g-primary rsc_vip_int-primary rsc_healthcheck-primary meta resource-stickiness="0"
建立 SAPHanaTopology
原始資源
您可以在暫時設定檔中定義 SAPHanaTopology
原始資源,然後將其上傳至 Corosync。
在主要主機上以超級使用者身分:
為
SAPHanaTopology
設定參數建立暫時設定檔:#
vi /tmp/cluster.tmp將
SAPHanaTopology
資源定義複製並貼到/tmp/cluster.tmp
檔案中:SLES for SAP 15 SP5 或更早版本
primitive rsc_SAPHanaTopology_SID_HDBINST_NUM ocf:suse:SAPHanaTopology \ operations \$id="rsc_sap2_SID_HDBINST_NUM-operations" \ op monitor interval="10" timeout="600" \ op start interval="0" timeout="600" \ op stop interval="0" timeout="300" \ params SID="SID" InstanceNumber="INST_NUM" clone cln_SAPHanaTopology_SID_HDBINST_NUM rsc_SAPHanaTopology_SID_HDBINST_NUM \ meta clone-node-max="1" target-role="Started" interleave="true" location SAPHanaTop_not_on_majority_maker cln_SAPHanaTopology_SID_HDBINST_NUM -inf: MAJORITY_MAKER_HOSTNAME
SLES for SAP 15 SP6 以上版本
primitive rsc_SAPHanaTopology_SID_HDBINST_NUM ocf:suse:SAPHanaTopology \ operations \$id="rsc_sap2_SID_HDBINST_NUM-operations" \ op monitor interval="10" timeout="600" \ op start interval="0" timeout="600" \ op stop interval="0" timeout="300" \ params SID="SID" InstanceNumber="INST_NUM" clone cln_SAPHanaTopology_SID_HDBINST_NUM rsc_SAPHanaTopology_SID_HDBINST_NUM \ meta clone-node-max="1" interleave="true" location SAPHanaTop_not_on_majority_maker cln_SAPHanaTopology_SID_HDBINST_NUM -inf: MAJORITY_MAKER_HOSTNAME
編輯
/tmp/cluster.tmp
檔案,將變數文字替換為 SAP HANA 系統的 SID 和執行個體編號。在以 root 身分登入的主要節點上,將
/tmp/cluster.tmp
檔案的內容載入 Corosync:crm configure load update /tmp/cluster.tmp
建立 SAPHana
原始資源
您可以使用與 SAPHanaTopology
資源相同的方法,在臨時設定檔中定義 SAPHana
原始資源,然後將檔案上傳至 Corosync。
取代臨時設定檔:
#
rm /tmp/cluster.tmp#
vi /tmp/cluster.tmp將
SAPHana
資源定義複製並貼到/tmp/cluster.tmp
檔案中:SLES for SAP 15 SP5 或更早版本
primitive rsc_SAPHana_SID_HDBINST_NUM ocf:suse:SAPHanaController \ operations \$id="rsc_sap_SID_HDBINST_NUM-operations" \ op start interval="0" timeout="3600" \ op stop interval="0" timeout="3600" \ op promote interval="0" timeout="3600" \ op demote interval="0" timeout="3600" \ op monitor interval="60" role="Master" timeout="700" \ op monitor interval="61" role="Slave" timeout="700" \ params SID="SID" InstanceNumber="INST_NUM" PREFER_SITE_TAKEOVER="true" \ DUPLICATE_PRIMARY_TIMEOUT="7200" AUTOMATED_REGISTER="true" ms msl_SAPHana_SID_HDBINST_NUM rsc_SAPHana_SID_HDBINST_NUM \ meta master-node-max="1" master-max="1" clone-node-max="1" \ target-role="Started" interleave="true" colocation col_saphana_ip_SID_HDBINST_NUM 4000: g-primary:Started \ msl_SAPHana_SID_HDBINST_NUM:Master order ord_SAPHana_SID_HDBINST_NUM Optional: cln_SAPHanaTopology_SID_HDBINST_NUM \ msl_SAPHana_SID_HDBINST_NUM location SAPHanaCon_not_on_majority_maker msl_SAPHana_SID_HDBINST_NUM -inf: MAJORITY_MAKER_HOSTNAME
SLES for SAP 15 SP6 以上版本
primitive rsc_SAPHana_SID_HDBINST_NUM ocf:suse:SAPHanaController \ operations \$id="rsc_sap_SID_HDBINST_NUM-operations" \ op start interval="0" timeout="3600" \ op stop interval="0" timeout="3600" \ op promote interval="0" timeout="3600" \ op demote interval="0" timeout="3600" \ op monitor interval="60" role="Promoted" timeout="700" \ op monitor interval="61" role="Unpromoted" timeout="700" \ params SID="SID" InstanceNumber="INST_NUM" PREFER_SITE_TAKEOVER="true" \ DUPLICATE_PRIMARY_TIMEOUT="7200" AUTOMATED_REGISTER="true" \ HANA_CALL_TIMEOUT="120" clone mst_SAPHana_SID_HDBINST_NUM rsc_SAPHana_SID_HDBINST_NUM \ meta clone-node-max="1" \ target-role="Started" interleave="true" colocation col_saphana_ip_SID_HDBINST_NUM 4000: g-primary:Started \ mst_SAPHana_SID_HDBINST_NUM:Promoted order ord_SAPHana_SID_HDBINST_NUM Optional: cln_SAPHanaTopology_SID_HDBINST_NUM \ mst_SAPHana_SID_HDBINST_NUM location SAPHanaCon_not_on_majority_maker mst_SAPHana_SID_HDBINST_NUM -inf: MAJORITY_MAKER_HOSTNAME
針對多層 SAP HANA HA 叢集,如果您使用的是 SAP HANA 2.0 SP03 以下版本,請將
AUTOMATED_REGISTER
設為false
。這樣可防止已復原的執行個體嘗試將複製作業自動註冊至已設定複製目標的 HANA 系統。針對使用多層系統複製的 SAP HANA 設定,您可以將 SAP HANA 2.0 SP03 以上版本的AUTOMATED_REGISTER
設為true
。如需更多資訊,請參閱:在以 root 身分登入的主要節點上,將
/tmp/cluster.tmp
檔案的內容載入 Corosync:crm configure load update /tmp/cluster.tmp
建立 SAPHanaFilesystem
原始資源
本節僅適用於使用 SAPHanaSR-angi
鉤子。如果您未使用 SAPHanaSR-angi
鉤子,請略過本節。
您可以使用與 SAPHanaTopology
資源相同的方法建立 SAPHanaFilesystem
資源,也就是在您上傳至 Corosync 的臨時設定檔中定義資源:
取代臨時設定檔:
rm /tmp/cluster.tmp vi /tmp/cluster.tmp
複製並貼上
SAPHana
資源定義至/tmp/cluster.tmp
檔案:primitive rsc_SAPHanaFileSystem_SID_HDBINST_NUM ocf:suse:SAPHanaFilesystem \ operations \$id="rsc_sap3_SID_HDBINST_NUM-operations" \ op monitor interval="10" timeout="600" \ op start interval="0" timeout="600" \ op stop interval="0" timeout="300" \ params SID="SID" InstanceNumber="INST_NUM" clone cln_SAPHanaFileSystem_SID_HDBINST_NUM rsc_SAPHanaFileSystem_SID_HDBINST_NUM \ meta clone-node-max="1 interleave="true" location SAPHanaFil_not_on_majority_maker cln_SAPHanaFil_SID_HDBINST_NUM -inf: MAJORITY_MAKER_HOSTNAME
在主要節點上,以超級使用者的身分將
/tmp/cluster.tmp
檔案的內容載入 Corosync:crm configure load update /tmp/cluster.tmp
確認 SAP HANA 系統複製功能已啟用
在主要主機上以 SID_LCadm 身分檢查複製狀態:
#
python $DIR_INSTANCE/exe/python_support/systemReplicationStatus.py
啟用叢集
在主要主機上以超級使用者的身分,將叢集從維護模式中移除:
#
crm configure property maintenance-mode="false"如果系統提示你移除「maintenance」,請輸入
y
。請等待 15 秒,然後在主要主機上以超級使用者的身分檢查叢集狀態:
#
crm status以下範例顯示已啟用且設定正確的叢集狀態:
SLES for SAP 15 SP5 或更早版本
7 nodes configured 21 resources configured Online: [ hana-ha-vm-1 hana-ha-vm-1w1 hana-ha-vm-1w2 hana-ha-vm-2 hana-ha-vm-2w1 hana-ha-vm-2w2 sap-majoritymaker ] Full list of resources: STONITH-hana-ha-vm-1 (stonith:fence_gce): Started hana-ha-vm-1w2 STONITH-hana-ha-vm-1w1 (stonith:fence_gce): Started hana-ha-vm-1 STONITH-hana-ha-vm-1w2 (stonith:fence_gce): Started hana-ha-vm-2 STONITH-sap-majoritymaker (stonith:fence_gce): Started hana-ha-vm-1w2 STONITH-hana-ha-vm-2 (stonith:fence_gce): Started hana-ha-vm-2w1 STONITH-hana-ha-vm-2w1 (stonith:fence_gce): Started hana-ha-vm-2w2 STONITH-hana-ha-vm-2w2 (stonith:fence_gce): Started sap-majoritymaker Clone Set: cln_SAPHanaTopology_HA1_HDB22 [rsc_SAPHanaTopology_HA1_HDB22] Started: [ hana-ha-vm-1 hana-ha-vm-1w1 hana-ha-vm-1w2 hana-ha-vm-2 hana-ha-vm-2w1 hana-ha-vm-2w2 ] Stopped: [ sap-majoritymaker ] Resource Group: g-primary rsc_vip_int-primary (ocf::heartbeat:IPaddr2): Started hana-ha-vm-1 rsc_healthcheck-primary (ocf::heartbeat:anything): Started hana-ha-vm-1 Clone Set: msl_SAPHana_HA1_HDB22 [rsc_SAPHana_HA1_HDB22] (promotable) Masters: [ hana-ha-vm-1 ] Slaves: [ hana-ha-vm-1w1 hana-ha-vm-1w2 hana-ha-vm-2 hana-ha-vm-2w1 hana-ha-vm-2w2 ] Stopped: [ sap-majoritymaker ]
SLES for SAP 15 SP6 以上版本
7 nodes configured 30 resources configured Online: [ hana-ha-vm-1 hana-ha-vm-1w1 hana-ha-vm-1w2 hana-ha-vm-2 hana-ha-vm-2w1 hana-ha-vm-2w2 sap-majoritymaker ] Full list of resources: STONITH-hana-ha-vm-1 (stonith:fence_gce): Started hana-ha-vm-1w2 STONITH-hana-ha-vm-1w1 (stonith:fence_gce): Started hana-ha-vm-1 STONITH-hana-ha-vm-1w2 (stonith:fence_gce): Started hana-ha-vm-2 STONITH-sap-majoritymaker (stonith:fence_gce): Started hana-ha-vm-1w2 STONITH-hana-ha-vm-2 (stonith:fence_gce): Started hana-ha-vm-2w1 STONITH-hana-ha-vm-2w1 (stonith:fence_gce): Started hana-ha-vm-2w2 STONITH-hana-ha-vm-2w2 (stonith:fence_gce): Started sap-majoritymaker Clone Set: cln_SAPHanaTopology_HA1_HDB22 [rsc_SAPHanaTopology_HA1_HDB22] Started: [ hana-ha-vm-1 hana-ha-vm-1w1 hana-ha-vm-1w2 hana-ha-vm-2 hana-ha-vm-2w1 hana-ha-vm-2w2 ] Stopped: [ sap-majoritymaker ] Resource Group: g-primary rsc_vip_int-primary (ocf::heartbeat:IPaddr2): Started hana-ha-vm-1 rsc_healthcheck-primary (ocf::heartbeat:anything): Started hana-ha-vm-1 Clone Set: mst_SAPHana_HA1_HDB22 [rsc_SAPHana_HA1_HDB22] (promotable) Masters: [ hana-ha-vm-1 ] Slaves: [ hana-ha-vm-1w1 hana-ha-vm-1w2 hana-ha-vm-2 hana-ha-vm-2w1 hana-ha-vm-2w2 ] Stopped: [ sap-majoritymaker ] Clone Set: cln_SAPHanaFileSystem_HA1_HDB22 [rsc_SAPHanaFileSystem_HA1_HDB22] Started: [ hana-ha-vm-1 hana-ha-vm-1w1 hana-ha-vm-1w2 hana-ha-vm-2 hana-ha-vm-2w1 hana-ha-vm-2w2 ] Stopped: [ sap-majoritymaker ]
測試容錯移轉
模擬主要主機的失敗情況,測試叢集。在發布系統供使用前,請使用測試系統或在正式版系統上執行測試。
在測試前備份系統。
您可以透過多種方式模擬失敗,包括:
HDB stop
HDB kill
reboot
(在有效節點上)ip link set eth0 down
:適用於具有單一網路介面的執行個體iptables ... DROP
(適用於具有多個網路介面的執行個體)echo c > /proc/sysrq-trigger
這些操作說明會使用 ip link set eth0 down
或 iptables
模擬叢集中兩個主機之間的網路中斷情形。針對只有單一網路介面的執行個體,請使用 ip link
指令;針對具有一或多個網路介面的執行個體,請使用 iptables
指令。這項測試會驗證容錯移轉和圍欄。如果執行個體已定義多個網路介面,您可以在次要主機上使用 iptables
指令,根據主要主機用於叢集通訊的 IP 捨棄傳入和傳出流量,藉此模擬與主要主機的網路連線中斷。
在主機上以超級使用者身分,將網路介面設為離線:
#
ip link set eth0 down或者,如果有多個網路介面處於作用中狀態,請在次要主機上使用
iptables
:#
iptables -A INPUT -s PRIMARY_CLUSTER_IP -j DROP; iptables -A OUTPUT -d PRIMARY_CLUSTER_IP -j DROP使用 SSH 重新連線至任一主機,並切換到超級使用者。
輸入
crm status
以確認主要主機已在包含次要主機的 VM 中啟用。自動重新啟動功能會在叢集中啟用,因此已停止的主機會重新啟動,並假設為次要主機的角色,如以下範例所示。SLES for SAP 15 SP5 或更早版本
Stack: corosync Current DC: hana-ha-vm-2 (version 2.0.1+20190417.13d370ca9-3.9.1-2.0.1+20190417.13d370ca9) - partition with quorum Last updated: Fri Jun 12 16:46:07 2020 Last change: Fri Jun 12 16:46:07 2020 by root via crm_attribute on hana-ha-vm-2 2 nodes configured 8 resources configured Online: [ hana-ha-vm-1 hana-ha-vm-2 hana-ha-vm-1w1 hana-ha-vm-2w1] Full list of resources: STONITH-hana-ha-vm-1 (stonith:fence_gce): Started hana-ha-vm-2 STONITH-hana-ha-vm-2 (stonith:fence_gce): Started hana-ha-vm-1 STONITH-hana-ha-vm-1w1 (stonith:fence_gce): Started hana-ha-vm-2w1 STONITH-hana-ha-vm-1w1 (stonith:fence_gce): Started hana-ha-vm-mm STONITH-hana-ha-vm-mm (stonith:fence_gce): Started hana-ha-vm-1w1 Clone Set: cln_SAPHanaTopology_HA1_HDB22 [rsc_SAPHanaTopology_HA1_HDB22] Started: [ hana-ha-vm-1 hana-ha-vm-2 hana-ha-vm-1w1 hana-ha-vm-2w1 Stopped: [ hana-ha-vm-mm ]] Resource Group: g-primary rsc_vip_int-primary (ocf::heartbeat:IPaddr2): Started hana-ha-vm-2 rsc_healthcheck-primary (ocf::heartbeat:anything): Started hana-ha-vm-2 Clone Set: msl_SAPHana_HA1_HDB22 [rsc_SAPHana_HA1_HDB22] (promotable) Masters: [ hana-ha-vm-2 ] Slaves: [ hana-ha-vm-1 hana-ha-vm-1w1 hana-ha-vm-2w1 Stopped: [ hana-ha-vm-mm ]]
SLES for SAP 15 SP6 以上版本
Stack: corosync Current DC: hana-ha-vm-2 (version 2.1.7+20231219.0f7f88312-150600.6.3.1-2.1.7+20231219.0f7f88312) - partition with quorum Last updated: Thu Dec 12 12:40:27 2024 Last change: Thu Dec 12 12:46:27 2024 by root via crm_attribute on hana-ha-vm-2 5 nodes configured 22 resources configured Online: [ hana-ha-vm-1 hana-ha-vm-2 hana-ha-vm-1w1 hana-ha-vm-2w1] Full list of resources: STONITH-hana-ha-vm-1 (stonith:fence_gce): Started hana-ha-vm-2 STONITH-hana-ha-vm-2 (stonith:fence_gce): Started hana-ha-vm-1 STONITH-hana-ha-vm-1w1 (stonith:fence_gce): Started hana-ha-vm-2w1 STONITH-hana-ha-vm-1w1 (stonith:fence_gce): Started hana-ha-vm-mm STONITH-hana-ha-vm-mm (stonith:fence_gce): Started hana-ha-vm-1w1 Clone Set: cln_SAPHanaTopology_HA1_HDB22 [rsc_SAPHanaTopology_HA1_HDB22] Started: [ hana-ha-vm-1 hana-ha-vm-2 hana-ha-vm-1w1 hana-ha-vm-2w1 Stopped: [ hana-ha-vm-mm ]] Resource Group: g-primary rsc_vip_int-primary (ocf::heartbeat:IPaddr2): Started hana-ha-vm-2 rsc_healthcheck-primary (ocf::heartbeat:anything): Started hana-ha-vm-2 Clone Set: mst_SAPHana_HA1_HDB22 [rsc_SAPHana_HA1_HDB22] (promotable) Masters: [ hana-ha-vm-2 ] Slaves: [ hana-ha-vm-1 hana-ha-vm-1w1 hana-ha-vm-2w1 Stopped: [ hana-ha-vm-mm ]] Clone Set: cln_SAPHanaFileSystem_HA1_HDB22 [rsc_SAPHanaFileSystem_HA1_HDB22] Started: [ hana-ha-vm-1 hana-ha-vm-1w1 hana-ha-vm-2 hana-ha-vm-2w1 ] Stopped: [ sap-majoritymaker ]
評估 SAP HANA 工作負載
如要為在 Google Cloud上執行的 SAP HANA 高可用性工作負載自動執行持續驗證檢查,您可以使用Workload Manager。
您可以使用 Workload Manager,根據 SAP、 Google Cloud和作業系統供應商的最佳做法,自動掃描及評估 SAP HANA 高可用性工作負載。這有助於改善工作負載的品質、效能和可靠性。
如要瞭解 Workload Manager 支援的最佳做法,以便評估在 Google Cloud上執行的 SAP HANA 高可用性工作負載,請參閱 Workload Manager 適用於 SAP 的最佳做法。如要瞭解如何使用 Workload Manager 建立及執行評估作業,請參閱「建立並執行評估作業」。
疑難排解
如要針對 SLES 上 SAP HANA 的高可用性設定排解問題,請參閱「排解 SAP 高可用性設定問題」。
取得 SLES 上的 SAP HANA 支援
如果您需要協助解決 SLES 上 SAP HANA 高可用性叢集的問題,請收集必要的診斷資訊,然後與 Cloud Customer Care 團隊聯絡。詳情請參閱「SLES 高可用性叢集的診斷資訊」。
支援
如果是基礎架構或服務相關問題,請與客戶服務團隊聯絡。 Google Cloud 您可以在 Google Cloud 控制台的「支援總覽」頁面中找到聯絡資訊。如果客戶服務團隊判定問題出在 SAP 系統,就會將您轉介給 SAP 支援團隊。
如要進一步瞭解 SAP 產品相關問題,請使用 SAP 支援登錄您的支援要求。SAP 會評估支援票證,如確定為 Google Cloud基礎架構方面的問題,就會將票證轉移至系統中的適當Google Cloud 元件:BC-OP-LNX-GOOGLE
或 BC-OP-NT-GOOGLE
。
支援相關規定
您必須符合支援方案的最低需求,才能獲得 SAP 系統和Google Cloud基礎架構和服務的支援服務。
如要進一步瞭解Google Cloud上 SAP 的最低支援需求,請參閱:
- 取得 GCP 上的 SAP 支援 Google Cloud
- SAP 注意事項 2456406 - Google Cloud 平台上的 SAP:支援必要條件 (必須使用 SAP 使用者帳戶)
連線至 SAP HANA
如果主機 VM 沒有 SAP HANA 的外部 IP 位址,您只能使用 SSH,透過防禦執行個體連線至 SAP HANA 執行個體,或使用 SAP HANA Studio,透過 Windows 伺服器連線至 SAP HANA 執行個體。
如要透過防禦執行個體連線至 SAP HANA,請使用您選擇的 SSH 用戶端連線至防禦主機,然後連線至 SAP HANA 執行個體。
如要透過 SAP HANA Studio 連線至 SAP HANA 資料庫,請使用遠端桌面用戶端連線至 Windows Server 執行個體。連線之後,請手動安裝 SAP HANA Studio,並存取您的 SAP HANA 資料庫。
部署後工作
完成部署後,請完成下列步驟:
變更 SAP HANA 系統管理員和資料庫超級使用者的臨時密碼。例如:
sudo passwd SID_LCadm
如要瞭解 SAP 提供的密碼變更資訊,請參閱「Reset the SYSTEM User Password of the System Database」。
使用 SAP HANA 執行個體之前,請設定並備份新的 SAP HANA 資料庫。
如果 SAP HANA 系統部署在 VirtIO 網路介面上,建議您確認 TCP 參數
/proc/sys/net/ipv4/tcp_limit_output_bytes
的值已設為1048576
。這項修改可改善 VirtIO 網路介面上的整體網路總處理量,且不會影響網路延遲時間。
如需詳細資訊,請參閱:
後續步驟
詳情請參閱下列資源: