安裝設定SAP HANA2.0 使用RHEL7高可用叢集

最後更新: 2018-10-14 03:26 pm

Print Friendly, PDF & Email

前言

安裝前準備

網路

網路拓墣圖

IP表(101 = erpprddb01 ; 102 = erpprddb02 ; 103 = erpprddb)

網斷(功能) 網路接口 網路位址
VLAN 253 (SAP Data LAN) team0 192.168.1.101 ; 192.168.1.102 ; 192.168.1.103
VLAN 255 (SAP MGMT LAN)
VLAN 256 (SAP Replication LAN) team1 192.168.10.101 ; 192.168.10.102
VLAN 257 (Cluster Heartbeat LAN) team2 192.168.20.101 ; 192.168.20.102
VLAN 258 (SAP Backup LAN)

*MGMT LAN為x86伺服器的管理端口像是,HPE iLO、DELL iDRAC、 IBM IMM2等等。

*備份網段給備份軟體使用

這篇LAB不使用MGMT LAN 和 Backup LAN

網路配置team0如下,其他team1、team2配置一樣,不贅述。

兩節點設定

項次
SID HDB
Instance Number 02
node1 FQDN erpprddb01.skywebster.com
node2FQDN erpprddb02.skywebster.com
node1 HANA 站台名稱 DC1
node2 HANA 站台名稱 DC2
SAP HANA “SYSTEM” 使用者密碼 之前安裝時設定的密碼
SAP HANA administrative user hdbadm

確保兩節點均可以名稱解析

配置兩節點無密碼登入(建議)

設定節點間無密碼登入

檢視金鑰

SSH第一次登入時會問yes/no然後把指紋寫在.ssh/know_hosts,避免yes/no提示

改名公開金鑰,此名稱表示已授權

其它節點同步金鑰

安裝SAP HANA

兩節點除了主機名稱不一樣以外,其他配置均要相同。

參考:安裝SAP HANA 2.0 在RHEL7

配置System Replication

確認狀態

確認狀態正常

兩台均要確認log_mode 參數必須是 normal

*如果 -p 的密碼參數無法辨識,不打-p 用互動模式輸入密碼

初始備份

初始備份要做完,system replication 才能作業,由於新裝機沒資料,故做個形式備份到/tmp/foo開頭的檔案

對於”single container systems”

對於“multiple container systems” 備份SYSTEMDB和所有的Tenant DB,故做個形式備份到/tmp/systemdb、/tmp/DB_HDB開頭的檔案。

備份SYSTEMDB

正常用hana studio 備份的話目錄 /usr/sap/HDB/HDB02/backup/data/SYSTEMDB

備份Tenant DB

正常用hana studio 備份的話目錄 /usr/sap/HDB/HDB02/backup/data/DB_HDB

設定主節點

主節點啟用SR

檢視狀態

設定次節點

次節點需要被註冊到主節點上,故要先關掉資料庫

在HANA 2.0之後要複SAP HANA system PKI SSFS_RH2.KEY 和 SSFS_RH2.DAT 檔案主節點到次節點

複寫模式與操作模式

補充:修改複寫模式的方式

補充:修改操作模式

註冊次節點

次節點啟動SAP HANA

確認狀態

調整SR網路

一般10G會用Jumbo Frame(MTU 9000),並將抄寫的網段綁到另這網卡上

檢視主節點的global.ini

檢視次節點global.ini

兩節點的global.ini檔案尾增加以下參數,分開Data Lan 和 ReplicationLan

兩節點重啟HANA DB生效

次節點關閉DB

主節點關閉DB

主節點開啟DB

次節點開啟DB

檢查team1是否有封包

測試接管

在次節點執行接管

檢視狀態

主節點重新註冊

在主節點執行關閉DB

在主節點重新註冊

主節點啟動DB

檢視狀態

在主節點執行接管

檢視狀態

在副節點執行關閉DB

在副節點重新註冊

在次節點開啟DB

檢視狀態

檢查SAP HANA 系統抄寫的狀態

single container 和 multi container顯示結果會略有不同,這邊以multi container為例(只有在主站台才能看得到狀態)

創建SAP HANA 給叢集監控的使用者

只有在SAP HANA 1.0 SPS12之前的版本需要實做。

<略>

創建SAP HANA Pacemaker 叢集

再一次的配置前檢查

  • SAP HANA 開機啟動必須關閉,因為其資源要透過叢集管理。
  • 在所有節點中SAP HANA 系統抄寫和接手必須要工作正常並無錯誤。
  • SAP HANA 較早的版本必須要自己創建監控帳號給叢集做監控用。
  • 所有的節點必需要定閱 ‘High-availability’ 和 ‘RHEL for SAP HANA’ (RHEL 6,RHEL 7) 頻道。其中”RHEL for SAP HANA”頻道只能用公司域名註冊訂閱試用。

安裝套件

全部節點均要

配置Corosync

利用hacluster使用者對叢集做驗證,其憑證會存在/var/lib/pcsd/tokens

創建叢集

設置叢集名稱為ERPPRDDB_CLUSTER、其憑證設定超時時間為10秒加入時間為100毫秒

啟動叢集並設置為開機不啟動

注意:這邊設定開機不自動啟動叢集,這是因為我們之後HANA System Replication DB抄寫註冊是選“手動”人工介入,如果我們開機時啟動,沒註冊的節點會起不來,導致錯誤的發生。

檢查叢集結點通訊是否異常

確認兩節點Quroum設定正常

檢視叢集的狀態

預設為stop表示當受影響的節點發生遺失quorum時,停止資源。紅帽不建議設為ignore,而是用two_node模式和auto_tie_breaker模式,而不是忽略雙節點群集的仲裁,或者可以在更大的群集中使用auto_tie_breaker和/或last_man_standing

暫時關掉Stonith

配置隔離裝置

需先配置從SAN 或 ISCSI來的20mb硬碟<略>

這邊Lab 只有兩條路如下

安裝與配置請參考: fence_agent sbd配置

sbd設定

檢視叢集stonith

啟用Stonith

兩節點的設定

開啟wait_for_all

當兩節點叢集創建時 two_node 模式會自動設定,且wait_for_all也會自動開啟,這可以避免兩節點的fence loop,雖然沒有顯示在corosync.conf上,但我們可以手動調整。

關閉叢集服務

修改corosync.conf

同步設定檔到其他節點

重啟叢集服務

如果在做仲裁遺失時測試發現,兩節點的政策沒生效,可能需要在所有叢集執行

設定隔離延遲

避免fence races(隔離競賽),其中一個節點必須要設定隔離延遲。這將會幫助保持叢集的穩定。但是不能避免”叢集節點一直重開機”,如果當節點間的通訊中斷的話。

設定delay=N 表示當節點失效時要延遲N秒才會被隔離,所以有10秒時間去隔離第二節點。如果叢集網路仍然正常且因為其他原因第一節點故障。第一節點仍然會被隔離但有10秒的延遲。

如果用共享的隔離裝置,必須分開成兩個隔離裝置利用參數pcmk_host_list(叢集節點名稱)、和port(隔離裝置列出來的虛擬機名稱、IP、Port)

配置常規叢集屬性

在測試SAP HANA時,您可能希望通過使用以下命令設置粘性和遷移閾值來限制故障轉移的數量。這些設置是可選的,因此在Pacemaker中正確設置SAP HANA時不需要這些設置。命令只應在一個節點上執行,但它們將在整個集群中生效。

復原

在之前的版本可能需要改no-quorum-policy為ignore,但現在的版本不需要修改,用預設即可

以下指令會重置這個政策

創建 cloned SAPHanaTopology 資源

SAPHanaTopology資源會在每個節點上收集SAP HANA系統複製的狀態和配置。

檢視參數

以上得知SAPHanaTopology需要配置SID、InstanceNumber

資源作業

若要確保資源健全,您可加入一項監控作業至資源定義中。若您不為資源指定一項監控作業,就預設值,pcs 指令會建立一項監控作業,其間隔會由資源代理程式來判斷。若資源代理程式不提供預設的監控間隔,pcs 指令將會建立一項間隔為 60 秒的監控作業。

作業內容

欄位 詳述
id 動作的獨特名稱。系統會在您配置一項作業時指定此名稱。
name 需進行的動作。常用的值為:monitorstartstop
interval 進行作業的頻率(秒)。預設值為:0,代表永不。
timeout 在宣告動作失敗前所需等待的時間。若您發現您的系統包含了一項資源花費許多時間啟用或停用,或是在啟用時會執行一項非遞迴的監控動作,並需要比系統所允許之時間(在宣告啟用動作失敗之前)還要久的時間,您可將預設值 20 更改為更長的時間,或更改「op defaults」中的 timeout 值。
on-fail
此動作失敗時所進行的動作。允許的值有:
ignore – 假設資源並未失效
block – 不在資源上進行任何其它作業
stop – 停下資源,並且不在其它地方啟用它
restart – 停下資源並將它重新啟用(可能在不同的節點上)
fence – 針對於資源失效的節點進行 STONITH
standby – 將資源失效於的節點上的所有資源移掉
當 STONITH 啟用時,stop 作業的預設值為 fence,停用時則為 block。所有其它作業的預設值皆為 restart
enabled  若是 false 的話,作業便會被視為不存在。允許的值為:truefalse

以下SAP HANA 的兩個資源,配置有調整作業內容的timeout ,而不是用預設,這是參考公司資料庫部門SUSE經驗所配置的。我想可能資料庫啟動關閉的時間需要花費較長的時間,預設timeout的時間不夠用。

創建SAPHanaTopology cloned 資源

檢視設定參數

資源啟動後,您將看到以節點屬性的形式存儲的收集信息,可以使用命令crm_mon -A1查看。

創建 Master/Slave SAPHana 資源

SAPHana資源負責啟動,停止和重新定位SAP HANA數據庫。此資源必須作為主/從群集資源運行。

檢視設定參數

屬性 是否需要 預設值 描述
PREFER_SITE_TAKEOVER no yes 群集是否應該切換到副實例而不是在本地重新啟動主服務器? (“不”:更喜歡在本地重啟;“是”:更喜歡接管到遠程站點)
AUTOMATED_REGISTER no false 在接管和DUPLICATE_PRIMARY_TIMEOUT之後,之前的SAP HANA主站台是否應該註冊為次要? (“假”:不,需要人工干預;“是”:是的,前者將由資源代理註冊為次要)
DUPLICATE_PRIMARY_TIMEOUT yes 7200  如果發生雙主要情況,雙主時間戳之間所需的時間差(以秒為單位)。如果時間差小於時間間隔,則群集將一個或兩個實例保持在“等待”狀態。這是為了讓管理員有機會對故障轉移做出反應。在時差通過後,將註冊失敗的前主要。在註冊到新主數據庫之後,系統複寫將覆蓋所有數據。

創建SAPHana 資源

檢視設定參數

查看狀態

創建VIP資源

群集將包含虛擬IP地址,以便訪問SAP HANA的主實例。

創建VIP用IPaddr2資源

檢視設定參數

創建constraints

為了正確操作,我們需要確保在啟動SAPHana資源之前啟動SAPHanaTopology資源,並且還要確保在運行SAPHana主資源的節點上存在虛擬IP地址。為此,需要創建以下2個constraint。

constraint –  在 SAPHana資源之前啟動 SAPHanaTopology資源
  • symmetrical = false屬性定義我們只關心資源的開始,並且它們不需要以相反的順序停止。
  • 兩種資源(SAPHana和SAPHanaTopology)都具有interleave = true屬性,允許在節點上並行啟動這些資源。這允許儘管有順序但我們不會等待所有節點啟動SAPHanaTopology,然而我們可以在SAPHanaTopology運行時立即在任何節點上啟動SAPHana資源。

設定constraint

檢視constraint

constraint – 將 IPaddr2 和 主SAPHana放在一起

請注意,constraint的分數是2000而不是默認的INFINITY。這允許集群取消IPaddr2資源,以防SAPHana資源中沒有提升Master,因此仍可以用SAP Management Console或SAP LVM等地址查詢狀態的工具用此地址查詢有關SAP實例的信息。

檢視constraint

配置pind資源

在Pacemaker中偵測網路連線變動的資源是pingd,其行為就好像在舊版rgmanager上的資源一樣,在舊版起叢集IP就會有pingd的功能,但新版叢集IP單獨只做IP服務,網路監控則是pingd。

檢視pingd資源配置選項

dampen: 等待進一步變更發生的所需時間(dampen)。這會避免一項資源在叢集節點於不同時間點發現失去連線時,在叢集之間跳來跳去。

multiplier: 連接的 ping 節點會乘以這個值以取得一項分數。當配置了多重的 ping 節點時會相當有幫助。

host_list: 要判斷目前連線狀態為何所需聯絡的機器。允許的值包括可解析的 DNS 主機名稱、IPv4 與 IPv6 位址。

配置pingd資源

為既有的資源SAPHana_HDB_02-master配置位置限制式規則。這會使SAPHana_HDB_02-master資源移至一部能夠 ping 192.168.1.1的主機(若該資源目前執行於的主機無法 ping 192.168.1.1的話)

檢視狀態

檢視constraint

切換與驗證

手動移轉

erpprddb01 -> erpprddb02

檢視叢集狀態

檢視constraint

注意:節點1 erpprddb01-hb的分數會變成-INFINITY表示,SAPHana_HDB_02-master資源永遠不會跑在erpprddb01-hb節點上

erpprddb01 DB被關閉了

用客戶端hana studo檢查測試資料是否還在

erpprddb01註冊

清除掉constraint的限制

檢視constraint狀態

檢視叢集狀態

在erpprddb02檢視系統抄寫狀態

erpprddb02 -> erpprddb01

檢視叢集狀態

檢視constraint

注意:節點2 erpprddb01-hb的分數會變成-INFINITY表示,SAPHana_HDB_02-master資源永遠不會跑在erpprddb02-hb節點上

erpprddb02 DB被關閉了

用客戶端hana studo檢查測試資料是否還在

erpprddb02註冊

清除掉constraint的限制

檢視constraint狀態

檢視叢集狀態

在erpprddb01檢視系統抄寫狀態

自動移轉(關閉主DB)

erpprddb01 -> erpprddb02

在erpprddb02上監控叢集

在erpprddb01上關閉DB

在erpprddb02上監控叢集

用客戶端hana studo檢查測試資料是否還在

erpprddb01註冊

erpprddb01啟動DB

叢集清除故障訊息

在erpprddb02上監控叢集

erpprddb02 -> erpprddb01

在erpprddb01上監控叢集

在erpprddb02上關閉DB