本指南說明如何在 Red Hat Enterprise Linux (RHEL) 或 SUSE Linux Enterprise Server (SLES) 高可用性 (HA) 叢集中,使用內部傳遞網路負載平衡器來管理虛擬 IP (VIP) 位址,自動部署 SAP HANA。
本指南會根據 Google Cloud、SAP 和作業系統供應商的最佳做法,使用 Cloud Deployment Manager 部署兩部 Compute Engine 虛擬機器 (VM)、兩個 SAP HANA 擴充系統、具備內部通道 Network Load Balancer 實作的虛擬 IP 位址 (VIP),以及以作業系統為基礎的 HA 叢集。
其中一個 SAP HANA 系統設定為主要活動系統,另一個則設為次要備用系統。您可以在相同的地區內部署這兩個 SAP HANA 系統,但最好在不同區域。
已部署叢集包含下列功能和特色:
- Pacemaker 高可用性叢集資源管理員。
- Google Cloud 防護機制。
- 使用第 4 級 TCP 內部負載平衡器實作的虛擬 IP (VIP),包括:
- 您為 VIP 選取的 IP 位址預留
- 兩個 Compute Engine 執行個體群組
- TCP 內部負載平衡器
- Compute Engine 健康狀態檢查
- 在 RHEL HA 叢集中:
- Red Hat 高可用性模式
- Red Hat 資源代理程式和圍欄套件
- 在 SLES HA 叢集中:
- SUSE 高可用性模式。
- SUSE SAPHanaSR 資源代理程式套件。
- 同步系統複製功能。
- 預先載入記憶體。
- 自動將故障的執行個體重新啟動為新的次要執行個體。
如要部署沒有 Linux 高可用性叢集或待命主機的 SAP HANA 系統,請改用 SAP HANA 部署指南。
本指南適用對象為進階 SAP HANA 使用者,其熟悉如何針對 SAP HANA 進行 Linux 高可用性設定。
必備條件
建立 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
。詳情請參閱:
建立網路
基於安全性考量,請建立新的網路。您可以新增防火牆規則或使用另一個存取權控管方法,藉此控管具有存取權的對象。
如果您的專案具有預設的虛擬私有雲網路,請勿使用。請建立您自己專屬的虛擬私有雲網路,確保系統只套用您明確建立的防火牆規則。
在部署期間,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 建立連入連線後,系統會允許該連線上雙向的流量。
SAP HANA 的 HA 叢集至少需要兩個防火牆規則,一個允許 Compute Engine 健康檢查檢查叢集節點的健康狀態,另一個則允許叢集節點彼此通訊。如果您未使用共用 VPC 網路,則需要為節點間的通訊建立防火牆規則,但不需為健康狀況檢查建立防火牆規則。Deployment Manager 範本會為健康狀態檢查建立防火牆規則,您可以在部署完成後視需要修改。
如果您使用共用虛擬私有雲網路,網路管理員需要在主專案中建立這兩種防火牆規則。
您也可以建立防火牆規則,允許外部存取指定的通訊埠,或限制相同網路上 VM 之間的存取。若使用 default
虛擬私人雲端網路類型,一些其他的預設規則也適用,例如 default-allow-internal
規則,允許相同網路中 VM 之間所有通訊埠的連線。
根據適用於環境的 IT 政策,您可能需要區隔或限制資料庫主機的連線,這些功能可以透過建立防火牆規則來完成。
根據您的情境,您可以建立防火牆規則,允許下列項目存取:
- 列於所有 SAP 產品的 TCP/IP 中的預設 SAP 通訊埠。
- 從電腦或公司網路環境到 Compute Engine VM 執行個體的連線。如果不確定要使用哪一個 IP 位址,請詢問貴公司的網路管理員。
- 連往 VM 執行個體的 SSH 連線,包括瀏覽器中的 SSH。
- 使用 Linux 第三方工具連到 VM 的連線。請建立防火牆規則以允許工具透過防火牆存取。
建立防火牆規則的步驟如下:
主控台
在 Google Cloud 控制台中,前往「VPC Network」(虛擬私有雲網路) 「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
建立已安裝 SAP HANA 的高可用性 Linux 叢集。
以下說明如何使用 Cloud Deployment Manager 建立具備 2 個 SAP HANA 系統的 RHEL 或 SLES 叢集:在一個 VM 執行個體上的主要單一主機 SAP HANA 系統;以及在相同 Compute Engine 地區中另一個 VM 執行個體上建立的備用 SAP HANA 系統。SAP HANA 系統使用的是同步系統複製模式,備用系統會預先載入已複製的資料。
您將在 Deployment Manager 的設定檔範本中定義 SAP HANA 高可用性叢集的設定選項。
以下操作說明使用的是 Cloud Shell,不過這些步驟通常也適用於 Google Cloud CLI。
確認目前的永久磁碟和 CPU 等資源配額足夠您即將安裝的 SAP HANA 系統使用。如果配額不足則會部署失敗。如要瞭解 SAP HANA 配額需求,請參閱 SAP HANA 的定價與配額考量事項一文。
開啟 Cloud Shell;如果您在本機工作站上安裝了 Google Cloud CLI,請開啟終端機。
在 Cloud Shell 或 gcloud CLI 中輸入以下指令,將 SAP HANA 高可用性叢集的
template.yaml
設定檔範本下載到您的工作目錄:$
wget https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana_ha_ilb/template.yaml或者,您也可以重新命名
template.yaml
檔案,藉此識別其定義的設定。在 Cloud Shell 程式碼編輯器中開啟
template.yaml
檔案;如果您目前使用 gcloud CLI,請選擇您要用的文字編輯器。如要開啟 Cloud Shell 程式碼編輯器,請按一下 Cloud Shell 終端機視窗右上角的鉛筆圖示。
在
template.yaml
檔案中,使用安裝的值取代括號及其內容,即可更新屬性值。屬性說明如下表所示。如果要在不安裝 SAP HANA 的情況下建立 VM 執行個體,請刪除以
sap_hana_
開頭的所有資料行。屬性 資料類型 說明 type
字串 指定在部署期間要使用的 Deployment Manager 範本位置、類型和版本。
YAML 檔案包含兩個
type
規格,其中一個已註解掉。預設啟用的type
規格會將範本版本指定為latest
。註解掉的type
規格會指定具有時間戳記的特定範本版本。如果您需要所有部署都使用相同的範本版本,請使用包含時間戳記的
type
規格。primaryInstanceName
字串 主要 SAP HANA 系統的 VM 執行個體名稱。使用小寫英文字母、數字或連字號指定。 secondaryInstanceName
字串 次要 SAP HANA 系統的 VM 執行個體名稱。使用小寫英文字母、數字或連字號指定。 primaryZone
字串 部署主要 SAP HANA 系統的區域。主要和次要系統的區域須位於同一地區。 secondaryZone
字串 部署次要 SAP HANA 系統的區域。主要和次要系統的區域須位於同一地區。 instanceType
字串 您需要執行 SAP HANA 的 Compute Engine 虛擬機器類型。如果您需要自訂 VM 類型,請指定預先定義的 VM 類型,並將 vCPU 數量設為最接近您所需數量的數字,但仍要大於該數字。部署完成後,請修改 vCPU 數量和記憶體容量。 network
字串 建立負責管理 VIP 的負載平衡器的網路名稱。 如果您使用共用虛擬私有雲網路,則必須將主專案的 ID 新增為網路名稱的父項目錄。例如:
host-project-id/network-name
。subnetwork
字串 您為 HA 叢集使用的子網路名稱。 如果您使用共用虛擬私有雲網路,必須將主專案的 ID 新增為子網路名稱的父項目錄。例如:
host-project-id/subnetwork-name
。linuxImage
字串 要用於 SAP HANA 的 Linux 作業系統映像檔或映像檔系列的名稱。如要指定映像檔系列,請在系列名稱加上 family/
前置詞,例如family/rhel-8-2-sap-ha
或family/sles-15-sp2-sap
。如要指定特定映像檔,請只指定映像檔名稱。如需可用的映像檔系列清單,請參閱 Cloud Console 中的「映像檔」頁面。linuxImageProject
字串 您要使用的映像檔所屬的 Google Cloud專案。這個專案可能是您自己的專案或 Google Cloud 映像檔專案。如為 RHEL,請指定 rhel-sap-cloud
。如為 SLES,請指定suse-sap-cloud
。如需 Google Cloud映像檔專案清單,請參閱 Compute Engine 說明文件中的「映像檔」頁面。sap_hana_deployment_bucket
字串 專案中 Cloud Storage 值區的名稱,其中包含您在上一個步驟中上傳的 SAP HANA 安裝檔案。 sap_hana_sid
字串 SAP HANA 系統 ID。此 ID 必須包含 3 個英數字元,並以字母開頭。所有字母都必須是大寫。 sap_hana_instance_number
整數 SAP HANA 系統的執行個體編號,從 0 到 99。預設值為 0。 sap_hana_sidadm_password
字串 作業系統管理員的臨時密碼,用於部署期間。部署完成後,請變更密碼。密碼至少必須為 8 個字元,並包含至少 1 個大寫字母、1 個小寫字母與 1 個數字。 sap_hana_system_password
字串 資料庫超級使用者的臨時密碼。部署作業完成後,請變更密碼。密碼至少必須為 8 個字元,並包含至少 1 個大寫字母、1 個小寫字母與 1 個數字。 sap_vip
字串 您要用於 VIP 的 IP 位址。IP 位址必須位於已指派給子網路的 IP 位址範圍內。Deployment Manager 範本會為您預留這個 IP 位址。在啟用中的 HA 叢集中,這個 IP 位址一律會指派給啟用中的 SAP HANA 執行個體。 primaryInstanceGroupName
字串 定義主要節點的非代管執行個體群組名稱。如果省略參數,預設名稱為 ig-primaryInstanceName
。secondaryInstanceGroupName
字串 定義次要節點的非代管執行個體群組名稱。如果省略這個參數,預設名稱為 ig-secondaryInstanceName
。loadBalancerName
字串 定義 TCP 內部負載平衡器的名稱。 nic_type
字串 選用,但如果目標機器和 OS 版本提供此選項,則建議使用。指定要與 VM 執行個體搭配使用的網路介面。您可以指定 GVNIC
或VIRTIO_NET
值。如要使用 Google Virtual NIC (gVNIC),您必須指定支援 gVNIC 的 OS 映像檔,做為linuxImage
屬性的值。如需作業系統映像檔清單,請參閱「作業系統詳細資料」。如果您未為此屬性指定值,系統會根據您為
這個引數適用於 Deployment Manager 範本instanceType
屬性指定的機器類型,自動選取網路介面。202302060649
以上版本。以下範例顯示已完成的設定檔範本,其中定義了 SAP HANA 的高可用性叢集。叢集會使用內部直通式網路負載平衡器來管理 VIP。
Deployment Manager 會部署設定檔中定義的 Google Cloud資源,然後由指令碼接手設定作業系統、安裝 SAP HANA、設定複寫作業,以及設定 Linux HA 叢集。
按一下
RHEL
或SLES
,即可查看適用於您作業系統的範例。RHEL
resources: - name: sap_hana_ha type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana_ha_ilb/sap_hana_ha.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_ha_ilb/sap_hana_ha.py # properties: primaryInstanceName: example-ha-vm1 secondaryInstanceName: example-ha-vm2 primaryZone: us-central1-a secondaryZone: us-central1-c instanceType: n2-highmem-32 network: example-network subnetwork: example-subnet-us-central1 linuxImage: family/rhel-8-1-sap-ha linuxImageProject: rhel-sap-cloud # SAP HANA parameters sap_hana_deployment_bucket: my-hana-bucket sap_hana_sid: HA1 sap_hana_instance_number: 00 sap_hana_sidadm_password: TempPa55word sap_hana_system_password: TempPa55word # VIP parameters sap_vip: 10.0.0.100 primaryInstanceGroupName: ig-example-ha-vm1 secondaryInstanceGroupName: ig-example-ha-vm2 loadBalancerName: lb-ha1 # Additional optional properties networkTag: hana-ha-ntwk-tag serviceAccount: sap-deploy-example@example-project-123456.iam.gserviceaccount.com
SLES
resources: - name: sap_hana_ha type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana_ha_ilb/sap_hana_ha.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_ha_ilb/sap_hana_ha.py # properties: primaryInstanceName: example-ha-vm1 secondaryInstanceName: example-ha-vm2 primaryZone: us-central1-a secondaryZone: us-central1-c instanceType: n2-highmem-32 network: example-network subnetwork: example-subnet-us-central1 linuxImage: family/sles-15-sp1-sap linuxImageProject: suse-sap-cloud # SAP HANA parameters sap_hana_deployment_bucket: my-hana-bucket sap_hana_sid: HA1 sap_hana_instance_number: 00 sap_hana_sidadm_password: TempPa55word sap_hana_system_password: TempPa55word # VIP parameters sap_vip: 10.0.0.100 primaryInstanceGroupName: ig-example-ha-vm1 secondaryInstanceGroupName: ig-example-ha-vm2 loadBalancerName: lb-ha1 # Additional optional properties networkTag: hana-ha-ntwk-tag serviceAccount: sap-deploy-example@example-project-123456.iam.gserviceaccount.com
建立執行個體:
$
gcloud deployment-manager deployments create deployment-name --config template-name.yaml上述指令會叫用 Deployment Manager,該工具會設定 Google Cloud 基礎架構,然後將控制權交給指令碼,以便安裝及設定 SAP HANA 和 HA 叢集。
在 Deployment Manager 控制期間,系統會將狀態訊息寫入 Cloud Shell。指令碼叫用後,系統會將狀態訊息寫入 Logging,並在 Google Cloud 主控台中顯示,如「檢查記錄」一節所述。
完成時間可能有所不同,但整個程序通常會在 30 分鐘內完成。
驗證 HANA HA 系統的部署作業
驗證 SAP HANA HA 叢集包含多種不同程序:
- 檢查記錄
- 檢查 VM 和 SAP HANA 安裝項目的配置
- 檢查叢集設定
- 檢查負載平衡器和執行個體群組的健康狀態
- 使用 SAP HANA Studio 檢查 SAP HANA 系統
- 執行容錯移轉測試
檢查記錄
在 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 與永久磁碟。
重新執行部署。
- 如果顯示
檢查 VM 和 SAP HANA 安裝項目的設定
SAP HANA 系統部署後如沒有任何錯誤,請使用 SSH 連線到 VM。您可以從 Compute Engine 的「VM instances」(VM 執行個體) 頁面按一下 VM 執行個體的 SSH 按鈕,或者使用您偏好的 SSH 方法。
變更為超級使用者:
sudo su -
在命令提示字元中輸入
df -h
。確保畫面顯示/hana
目錄的輸出內容,例如/hana/data
。RHEL
[root@example-ha-vm1 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 126G 0 126G 0% /dev tmpfs 126G 54M 126G 1% /dev/shm tmpfs 126G 25M 126G 1% /run tmpfs 126G 0 126G 0% /sys/fs/cgroup /dev/sda2 30G 5.4G 25G 18% / /dev/sda1 200M 6.9M 193M 4% /boot/efi /dev/mapper/vg_hana-shared 251G 52G 200G 21% /hana/shared /dev/mapper/vg_hana-sap 32G 477M 32G 2% /usr/sap /dev/mapper/vg_hana-data 426G 9.8G 417G 3% /hana/data /dev/mapper/vg_hana-log 125G 7.0G 118G 6% /hana/log /dev/mapper/vg_hanabackup-backup 512G 9.3G 503G 2% /hanabackup tmpfs 26G 0 26G 0% /run/user/900 tmpfs 26G 0 26G 0% /run/user/899 tmpfs 26G 0 26G 0% /run/user/1003
SLES
example-ha-vm1:~ # df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 126G 8.0K 126G 1% /dev tmpfs 189G 54M 189G 1% /dev/shm tmpfs 126G 34M 126G 1% /run tmpfs 126G 0 126G 0% /sys/fs/cgroup /dev/sda3 30G 5.4G 25G 18% / /dev/sda2 20M 2.9M 18M 15% /boot/efi /dev/mapper/vg_hana-shared 251G 50G 202G 20% /hana/shared /dev/mapper/vg_hana-sap 32G 281M 32G 1% /usr/sap /dev/mapper/vg_hana-data 426G 8.0G 418G 2% /hana/data /dev/mapper/vg_hana-log 125G 4.3G 121G 4% /hana/log /dev/mapper/vg_hanabackup-backup 512G 6.4G 506G 2% /hanabackup tmpfs 26G 0 26G 0% /run/user/473 tmpfs 26G 0 26G 0% /run/user/900 tmpfs 26G 0 26G 0% /run/user/0 tmpfs 26G 0 26G 0% /run/user/1003
輸入適用於您作業系統的狀態指令,即可查看新叢集的狀態:
RHEL
pcs status
SLES
crm status
您會看到類似以下示例的結果,其中兩個 VM 執行個體都已啟動,
example-ha-vm1
為處於活動狀態的主要執行個體:RHEL
[root@example-ha-vm1 ~]# pcs status Cluster name: hacluster Cluster Summary: * Stack: corosync * Current DC: example-ha-vm1 (version 2.0.3-5.el8_2.4-4b1f869f0f) - partition with quorum * Last updated: Wed Jul 7 23:05:11 2021 * Last change: Wed Jul 7 23:04:43 2021 by root via crm_attribute on example-ha-vm2 * 2 nodes configured * 8 resource instances configured Node List: * Online: [ example-ha-vm1 example-ha-vm2 ] Full List of Resources: * STONITH-example-ha-vm1 (stonith:fence_gce): Started example-ha-vm2 * STONITH-example-ha-vm2 (stonith:fence_gce): Started example-ha-vm1 * Resource Group: g-primary: * rsc_healthcheck_HA1 (service:haproxy): Started example-ha-vm2 * rsc_vip_HA1_00 (ocf::heartbeat:IPaddr2): Started example-ha-vm2 * Clone Set: SAPHanaTopology_HA1_00-clone [SAPHanaTopology_HA1_00]: * Started: [ example-ha-vm1 example-ha-vm2 ] * Clone Set: SAPHana_HA1_00-clone [SAPHana_HA1_00] (promotable): * Masters: [ example-ha-vm2 ] * Slaves: [ example-ha-vm1 ] Failed Resource Actions: * rsc_healthcheck_HA1_start_0 on example-ha-vm1 'error' (1): call=29, status='complete', exitreason='', last-rc-change='2021-07-07 21:07:35Z', queued=0ms, exec=2097ms * SAPHana_HA1_00_monitor_61000 on example-ha-vm1 'not running' (7): call=44, status='complete', exitreason='', last-rc-change='2021-07-07 21:09:49Z', queued=0ms, exec=0ms Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
SLES
example-ha-vm1:~ # crm status Cluster Summary: * Stack: corosync * Current DC: example-ha-vm1 (version 2.0.4+20200616.2deceaa3a-3.9.1-2.0.4+20200616.2deceaa3a) - partition with quorum * Last updated: Wed Jul 7 22:57:59 2021 * Last change: Wed Jul 7 22:57:03 2021 by root via crm_attribute on example-ha-vm1 * 2 nodes configured * 8 resource instances configured Node List: * Online: [ example-ha-vm1 example-ha-vm2 ] Full List of Resources: * STONITH-example-ha-vm1 (stonith:external/gcpstonith): Started example-ha-vm2 * STONITH-example-ha-vm2 (stonith:external/gcpstonith): Started example-ha-vm1 * Resource Group: g-primary: * rsc_vip_int-primary (ocf::heartbeat:IPaddr2): Started example-ha-vm1 * rsc_vip_hc-primary (ocf::heartbeat:anything): Started example-ha-vm1 * Clone Set: cln_SAPHanaTopology_HA1_HDB00 [rsc_SAPHanaTopology_HA1_HDB00]: * Started: [ example-ha-vm1 example-ha-vm2 ] * Clone Set: msl_SAPHana_HA1_HDB00 [rsc_SAPHana_HA1_HDB00] (promotable): * Masters: [ example-ha-vm1 ] * Slaves: [ example-ha-vm2 ]
將以下指令中的
SID_LC
替換為您在設定檔範本中指定的 SID 值,以變更 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:安裝和設定。
檢查叢集設定
請檢查叢集的參數設定。請檢查叢集軟體顯示的設定,以及叢集設定檔中的參數設定。將您的設定與下方範例中的設定進行比較,這些設定是由本指南所使用的自動化動作指令碼建立。
按一下所用作業系統的分頁。
RHEL
顯示叢集資源設定:
pcs config show
以下範例顯示在 RHEL 8.1 以上版本中,由自動化指令碼建立的資源設定。
如果您執行的是 RHEL 7.7 或更早版本,資源定義
Clone: SAPHana_HA1_00-clone
就不會包含Meta Attrs: promotable=true
。Cluster Name: hacluster Corosync Nodes: example-rha-vm1 example-rha-vm2 Pacemaker Nodes: example-rha-vm1 example-rha-vm2 Resources: Group: g-primary Resource: rsc_healthcheck_HA1 (class=service type=haproxy) Operations: monitor interval=10s timeout=20s (rsc_healthcheck_HA1-monitor-interval-10s) start interval=0s timeout=100 (rsc_healthcheck_HA1-start-interval-0s) stop interval=0s timeout=100 (rsc_healthcheck_HA1-stop-interval-0s) Resource: rsc_vip_HA1_00 (class=ocf provider=heartbeat type=IPaddr2) Attributes: cidr_netmask=32 ip=10.128.15.100 nic=eth0 Operations: monitor interval=3600s timeout=60s (rsc_vip_HA1_00-monitor-interval-3600s) start interval=0s timeout=20s (rsc_vip_HA1_00-start-interval-0s) stop interval=0s timeout=20s (rsc_vip_HA1_00-stop-interval-0s) Clone: SAPHanaTopology_HA1_00-clone Meta Attrs: clone-max=2 clone-node-max=1 interleave=true Resource: SAPHanaTopology_HA1_00 (class=ocf provider=heartbeat type=SAPHanaTopology) Attributes: InstanceNumber=00 SID=HA1 Operations: methods interval=0s timeout=5 (SAPHanaTopology_HA1_00-methods-interval-0s) monitor interval=10 timeout=600 (SAPHanaTopology_HA1_00-monitor-interval-10) reload interval=0s timeout=5 (SAPHanaTopology_HA1_00-reload-interval-0s) start interval=0s timeout=600 (SAPHanaTopology_HA1_00-start-interval-0s) stop interval=0s timeout=300 (SAPHanaTopology_HA1_00-stop-interval-0s) Clone: SAPHana_HA1_00-clone Meta Attrs: promotable=true Resource: SAPHana_HA1_00 (class=ocf provider=heartbeat type=SAPHana) Attributes: AUTOMATED_REGISTER=true DUPLICATE_PRIMARY_TIMEOUT=7200 InstanceNumber=00 PREFER_SITE_TAKEOVER=true SID=HA1 Meta Attrs: clone-max=2 clone-node-max=1 interleave=true notify=true Operations: demote interval=0s timeout=3600 (SAPHana_HA1_00-demote-interval-0s) methods interval=0s timeout=5 (SAPHana_HA1_00-methods-interval-0s) monitor interval=61 role=Slave timeout=700 (SAPHana_HA1_00-monitor-interval-61) monitor interval=59 role=Master timeout=700 (SAPHana_HA1_00-monitor-interval-59) promote interval=0s timeout=3600 (SAPHana_HA1_00-promote-interval-0s) reload interval=0s timeout=5 (SAPHana_HA1_00-reload-interval-0s) start interval=0s timeout=3600 (SAPHana_HA1_00-start-interval-0s) stop interval=0s timeout=3600 (SAPHana_HA1_00-stop-interval-0s) Stonith Devices: Resource: STONITH-example-rha-vm1 (class=stonith type=fence_gce) Attributes: pcmk_delay_max=30 pcmk_monitor_retries=4 pcmk_reboot_timeout=300 port=example-rha-vm1 project=sap-certification-env zone=us-central1-a Operations: monitor interval=300s timeout=120s (STONITH-example-rha-vm1-monitor-interval-300s) start interval=0 timeout=60s (STONITH-example-rha-vm1-start-interval-0) Resource: STONITH-example-rha-vm2 (class=stonith type=fence_gce) Attributes: pcmk_monitor_retries=4 pcmk_reboot_timeout=300 port=example-rha-vm2 project=sap-certification-env zone=us-central1-c Operations: monitor interval=300s timeout=120s (STONITH-example-rha-vm2-monitor-interval-300s) start interval=0 timeout=60s (STONITH-example-rha-vm2-start-interval-0) Fencing Levels: Location Constraints: Resource: STONITH-example-rha-vm1 Disabled on: example-rha-vm1 (score:-INFINITY) (id:location-STONITH-example-rha-vm1-example-rha-vm1--INFINITY) Resource: STONITH-example-rha-vm2 Disabled on: example-rha-vm2 (score:-INFINITY) (id:location-STONITH-example-rha-vm2-example-rha-vm2--INFINITY) Ordering Constraints: start SAPHanaTopology_HA1_00-clone then start SAPHana_HA1_00-clone (kind:Mandatory) (non-symmetrical) (id:order-SAPHanaTopology_HA1_00-clone-SAPHana_HA1_00-clone-mandatory) Colocation Constraints: g-primary with SAPHana_HA1_00-clone (score:4000) (rsc-role:Started) (with-rsc-role:Master) (id:colocation-g-primary-SAPHana_HA1_00-clone-4000) Ticket Constraints: Alerts: No alerts defined Resources Defaults: migration-threshold=5000 resource-stickiness=1000 Operations Defaults: timeout=600s Cluster Properties: cluster-infrastructure: corosync cluster-name: hacluster dc-version: 2.0.2-3.el8_1.2-744a30d655 have-watchdog: false stonith-enabled: true stonith-timeout: 300s Quorum: Options:
顯示叢集設定檔
corosync.conf
:cat /etc/corosync/corosync.conf
以下範例顯示自動化指令碼為 RHEL 8.1 以上版本設定的參數。
如果您使用的是 RHEL 7.7 或更早版本,
transport:
的值為udpu
,而非knet
:totem { version: 2 cluster_name: hacluster transport: knet join: 60 max_messages: 20 token: 20000 token_retransmits_before_loss_const: 10 crypto_cipher: aes256 crypto_hash: sha256 } nodelist { node { ring0_addr: example-rha-vm1 name: example-rha-vm1 nodeid: 1 } node { ring0_addr: example-rha-vm2 name: example-rha-vm2 nodeid: 2 } } quorum { provider: corosync_votequorum two_node: 1 } logging { to_logfile: yes logfile: /var/log/cluster/corosync.log to_syslog: yes timestamp: on }
SLES
顯示叢集資源設定:
crm config show
本指南使用的自動化指令碼會建立下列範例所示的資源設定:
node 1: example-ha-vm1 \ attributes hana_ha1_op_mode=logreplay lpa_ha1_lpt=1635380335 hana_ha1_srmode=syncmem hana_ha1_vhost=example-ha-vm1 hana_ha1_remoteHost=example-ha-vm2 hana_ha1_site=example-ha-vm1 node 2: example-ha-vm2 \ attributes lpa_ha1_lpt=30 hana_ha1_op_mode=logreplay hana_ha1_vhost=example-ha-vm2 hana_ha1_site=example-ha-vm2 hana_ha1_srmode=syncmem hana_ha1_remoteHost=example-ha-vm1 primitive STONITH-example-ha-vm1 stonith:external/gcpstonith \ op monitor interval=300s timeout=120s \ op start interval=0 timeout=60s \ params instance_name=example-ha-vm1 gcloud_path="/usr/bin/gcloud" logging=yes pcmk_reboot_timeout=300 pcmk_monitor_retries=4 pcmk_delay_max=30 primitive STONITH-example-ha-vm2 stonith:external/gcpstonith \ op monitor interval=300s timeout=120s \ op start interval=0 timeout=60s \ params instance_name=example-ha-vm2 gcloud_path="/usr/bin/gcloud" logging=yes pcmk_reboot_timeout=300 pcmk_monitor_retries=4 primitive rsc_SAPHanaTopology_HA1_HDB00 ocf:suse:SAPHanaTopology \ operations $id=rsc_sap2_HA1_HDB00-operations \ op monitor interval=10 timeout=600 \ op start interval=0 timeout=600 \ op stop interval=0 timeout=300 \ params SID=HA1 InstanceNumber=00 primitive rsc_SAPHana_HA1_HDB00 ocf:suse:SAPHana \ operations $id=rsc_sap_HA1_HDB00-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=HA1 InstanceNumber=00 PREFER_SITE_TAKEOVER=true DUPLICATE_PRIMARY_TIMEOUT=7200 AUTOMATED_REGISTER=true primitive rsc_vip_hc-primary anything \ params binfile="/usr/bin/socat" cmdline_options="-U TCP-LISTEN:60000,backlog=10,fork,reuseaddr /dev/null" \ op monitor timeout=20s interval=10s \ op_params depth=0 primitive rsc_vip_int-primary IPaddr2 \ params ip=10.128.15.101 cidr_netmask=32 nic=eth0 \ op monitor interval=3600s timeout=60s group g-primary rsc_vip_int-primary rsc_vip_hc-primary ms msl_SAPHana_HA1_HDB00 rsc_SAPHana_HA1_HDB00 \ meta notify=true clone-max=2 clone-node-max=1 target-role=Started interleave=true clone cln_SAPHanaTopology_HA1_HDB00 rsc_SAPHanaTopology_HA1_HDB00 \ meta clone-node-max=1 target-role=Started interleave=true location LOC_STONITH_example-ha-vm1 STONITH-example-ha-vm1 -inf: example-ha-vm1 location LOC_STONITH_example-ha-vm2 STONITH-example-ha-vm2 -inf: example-ha-vm2 colocation col_saphana_ip_HA1_HDB00 4000: g-primary:Started msl_SAPHana_HA1_HDB00:Master order ord_SAPHana_HA1_HDB00 Optional: cln_SAPHanaTopology_HA1_HDB00 msl_SAPHana_HA1_HDB00 property cib-bootstrap-options: \ have-watchdog=false \ dc-version="1.1.24+20210811.f5abda0ee-3.18.1-1.1.24+20210811.f5abda0ee" \ cluster-infrastructure=corosync \ cluster-name=hacluster \ maintenance-mode=false \ stonith-timeout=300s \ stonith-enabled=true rsc_defaults rsc-options: \ resource-stickiness=1000 \ migration-threshold=5000 op_defaults op-options: \ timeout=600
顯示叢集設定檔
corosync.conf
:cat /etc/corosync/corosync.conf
本指南使用的自動化指令碼會在
corosync.conf
檔案中指定參數設定,如以下範例所示:totem { version: 2 secauth: off crypto_hash: sha1 crypto_cipher: aes256 cluster_name: hacluster clear_node_high_bit: yes token: 20000 token_retransmits_before_loss_const: 10 join: 60 max_messages: 20 transport: udpu interface { ringnumber: 0 bindnetaddr: 10.128.1.63 mcastport: 5405 ttl: 1 } } logging { fileline: off to_stderr: no to_logfile: no logfile: /var/log/cluster/corosync.log to_syslog: yes debug: off timestamp: on logger_subsys { subsys: QUORUM debug: off } } nodelist { node { ring0_addr: example-ha-vm1 nodeid: 1 } node { ring0_addr: example-ha-vm2 nodeid: 2 } } quorum { provider: corosync_votequorum expected_votes: 2 two_node: 1 }
檢查負載平衡器和執行個體群組的健康狀態
如要確認負載平衡器和健康狀態檢查設定正確無誤,請在 Google Cloud 主控台中檢查負載平衡器和執行個體群組。
在 Google Cloud 控制台中開啟「負載平衡」頁面:
在負載平衡器清單中,確認已為高可用性叢集建立負載平衡器。
在「Load balancer details」(負載平衡器詳細資料) 頁面的「Backend」(後端) 區段中,確認「Instance group」(執行個體群組) 下方「Healthy」(健康狀態良好) 資料欄中的值是否為「1/1」和「0/1」。容錯移轉後,健康狀態指標「1/1」會切換至新的有效執行個體群組。
使用 SAP HANA Studio 檢查 SAP HANA 系統
您可以使用 SAP HANA 主控台或 SAP HANA Studio 監控及管理高可用性叢集中的 SAP HANA 系統。
使用 SAP HANA Studio 連線至 HANA 系統。定義連線時請指定下列值:
- 在「Specify System」(指定系統) 面板上,將浮動 IP 位址指定為「主機名稱」。
- 在「Connection Properties」(連線屬性) 面板中,為資料庫使用者驗證指定您在 template.yaml 檔案中為 sap_hana_system_password 屬性指定的資料庫超級使用者名稱和密碼。
如需 SAP 提供的 SAP HANA Studio 安裝相關資訊,請參閱 SAP HANA 安裝與更新指南。
SAP HANA Studio 連線至 HANA HA 系統後,按兩下視窗左側導覽窗格中的系統名稱,即可查看系統總覽。
在「Overview」(總覽) 分頁的「General Information」(一般資訊) 下方確認以下事項:
- 「Operational Status」(運作狀態) 顯示「All services started」(所有裝置已啟動)。
- 「System Replication Status」(系統複製狀態) 顯示「All services are active and in sync」(所有服務皆啟用中且保持同步)。
按一下「General Information」(一般資訊) 下方的 [System Replication Status] (系統複製狀態) 連結以查看複寫模式。「System Replication」(系統複製) 分頁的「REPLICATION_MODE」(複寫模式) 欄位的
SYNCMEM
即表示已同步複製。
如有任何驗證步驟指出安裝失敗,請採取以下步驟:
- 解決錯誤。
- 從「Deployments」(部署) 頁面刪除部署。
- 按照上一節的最後一個步驟重新建立執行個體。
執行容錯移轉測試
執行容錯移轉測試:
使用 SSH 連線至主要 VM。按一下每個 VM 執行個體的 SSH 按鈕,即可從 Compute Engine 的 VM 執行個體頁面連線,或者可以使用您偏好的 SSH 方法。
在命令提示字元中,輸入下列指令:
sudo ip link set eth0 down
ip link set eth0 down
指令會藉由分割主要主機的通訊功能觸發容錯移轉。使用 SSH 重新連線至任一主機,並切換到超級使用者。
確認主要主機已在包含次要主機的 VM 中啟用。自動重新啟動功能會在叢集中啟用,因此已停止的主機會重新啟動,並假設為次要主機的角色。
RHEL
pcs status
SLES
crm status
以下範例顯示每個主機上的角色已切換。
RHEL
[root@example-ha-vm1 ~]# pcs status Cluster name: hacluster Cluster Summary: * Stack: corosync * Current DC: example-ha-vm1 (version 2.0.3-5.el8_2.3-4b1f869f0f) - partition with quorum * Last updated: Fri Mar 19 21:22:07 2021 * Last change: Fri Mar 19 21:21:28 2021 by root via crm_attribute on example-ha-vm2 * 2 nodes configured * 8 resource instances configured Node List: * Online: [ example-ha-vm1 example-ha-vm2 ] Full List of Resources: * STONITH-example-ha-vm1 (stonith:fence_gce): Started example-ha-vm2 * STONITH-example-ha-vm2 (stonith:fence_gce): Started example-ha-vm1 * Resource Group: g-primary: * rsc_healthcheck_HA1 (service:haproxy): Started example-ha-vm2 * rsc_vip_HA1_00 (ocf::heartbeat:IPaddr2): Started example-ha-vm2 * Clone Set: SAPHanaTopology_HA1_00-clone [SAPHanaTopology_HA1_00]: * Started: [ example-ha-vm1 example-ha-vm2 ] * Clone Set: SAPHana_HA1_00-clone [SAPHana_HA1_00] (promotable): * Masters: [ example-ha-vm2 ] * Slaves: [ example-ha-vm1 ]
SLES
example-ha-vm2:~ # Cluster Summary: * Stack: corosync * Current DC: example-ha-vm2 (version 2.0.4+20200616.2deceaa3a-3.9.1-2.0.4+20200616.2deceaa3a) - partition with quorum * Last updated: Thu Jul 8 17:33:44 2021 * Last change: Thu Jul 8 17:33:07 2021 by root via crm_attribute on example-ha-vm2 * 2 nodes configured * 8 resource instances configured Node List: * Online: [ example-ha-vm1 example-ha-vm2 ] Full List of Resources: * STONITH-example-ha-vm1 (stonith:external/gcpstonith): Started example-ha-vm2 * STONITH-example-ha-vm2 (stonith:external/gcpstonith): Started example-ha-vm1 * Resource Group: g-primary: * rsc_vip_int-primary (ocf::heartbeat:IPaddr2): Started example-ha-vm2 * rsc_vip_hc-primary (ocf::heartbeat:anything): Started example-ha-vm2 * Clone Set: cln_SAPHanaTopology_HA1_HDB00 [rsc_SAPHanaTopology_HA1_HDB00]: * Started: [ example-ha-vm1 example-ha-vm2 ] * Clone Set: msl_SAPHana_HA1_HDB00 [rsc_SAPHana_HA1_HDB00] (promotable): * Masters: [ example-ha-vm2 ] * Slaves: [ example-ha-vm1 ]
在控制台的「Load Balancer details」頁面中,確認新的有效主要執行個體在「Healthy」資料欄中顯示「1/1」。視需要重新整理頁面。
例如:
在 SAP HANA Studio 中,按兩下導覽窗格中的系統項目以重新整理系統資訊,確定仍與系統保持連線。
按一下 [System Replication Status] (系統複製狀態) 連結,確認主要主機和次要主機皆已切換主機並處於啟用狀態。
驗證 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 代理程式監控 HA 叢集,請務必遵循「代理程式高可用性設定」中的指示。如要進一步瞭解如何使用Google Cloud的 SAP 代理程式收集 SAP HANA 監控指標,請參閱「SAP HANA 監控指標收集」。
啟用 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)
設定 SAP HANA 的 Google 監控代理程式
或者,您可以設定 SAP HANA 的 Google 監控代理程式,該程式會從 SAP HANA 收集指標,然後將指標傳送至 Monitoring。您可以運用 Monitoring 建立指標資訊主頁、根據指標門檻設定自訂快訊,以及執行其他動作。
如要監控 HA 叢集,請在叢集外的 VM 執行個體上安裝監控代理程式。將叢集的浮動 IP 位址指定為要監控的主機執行個體 IP 位址。
如要進一步瞭解如何為 SAP HANA 設定 Google 監控代理程式,請參閱 SAP HANA 監控代理程式使用者指南。
連線至 SAP HANA
請注意,由於以下指示並沒有為 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 資料庫。
設定 HANA 主動/主動 (啟用讀取)
自 SAP HANA 2.0 SPS1 起,您可以在 Pacemaker 叢集中設定 HANA 主動/主動 (啟用讀取)。如需操作說明,請參閱:
執行部署後工作
使用 SAP HANA 執行個體之前,建議您執行下列部署後步驟。詳情請參閱 SAP HANA 安裝與更新指南。
變更 SAP HANA 系統管理員和資料庫超級使用者的臨時密碼。
使用最新的修補程式更新 SAP HANA 軟體。
安裝其他任何元件,例如 Application Function Libraries (AFL) 或 Smart Data Access (SDA)。
設定並備份新的 SAP HANA 資料庫。詳情請參閱 SAP HANA 作業指南。
後續步驟
- 如要進一步瞭解 VM 管理與監控,請參閱 SAP HANA 作業指南。