共用方式為


設定多個子網路 Always On 可用性群組和容錯移轉叢集執行個體

適用於:SQL Server - Linux

當 Always On 可用性群組 (AG) 或容錯移轉叢集執行個體 (FCI) 跨越一個以上的站台時,每個站台通常會有自己的網路,亦即每個站台一般都有自己的 IP 位址。

例如,網站 A 的位址開頭為 192.168.1.<x>,網站 B 的位址開頭為 192.168.2.<x>,其中 <x> 是伺服器唯一的 IP 位址部分。 如果網路層沒有適當的路由,這些伺服器將無法互相通訊。

有兩種方式可以處理此案例:

  • 設定網路以橋接兩個不同的子網 (亦即 VLAN)
  • 設定子網之間的路由

VLAN 型解決方案

必要條件:針對 VLAN 型的解決方案,參與 AG 或 FCI 的每部伺服器都需要兩張網路卡 (NIC) 以提供適當可用性 (雙重連階埠 NIC 會是實體伺服器上的單一失敗點),以便在其原生子網路和 VLAN 上指派 IP 位址。 這是網路需求之外的附加需求,例如 iSCSI 也需要自己的網路。

針對 AG 或 FCI 建立的 IP 位址是在 VLAN 上完成。 在下列範例中,VLAN 具有 192.168.3.<x> 的子網路;因此,針對 AG 或 FCI 所建立的 IP 位址是 192.168.3.104。 不需要設定任何額外項目,因為已有單一 IP 位址指派給 AG 或 FCI。

顯示如何使用 VLAN 設定多個子網路的圖表。

使用 Pacemaker 設定

在 Windows 中,Windows Server 容錯移轉叢集 (WSFC) 可原生支援多個子網路,並透過對 IP 位址的 OR 相依性來處理多個 IP 位址。 Linux 沒有 OR 相依性,但有一種方式可以透過 Pacemaker 原生實現適當的多個子網路,不過您無法使用一般的 Pacemaker 命令列。 反之,您需要修改叢集資訊基底 (CIB)。 CIB 是具有 Pacemaker 設定的 XML 檔案。

顯示如何使用 Pacemaker 設定多個子網路的圖表。

更新 CIB

  1. 匯出 CIB。

    sudo pcs cluster cib <filename>
    

    其中 <filename> 是您想要呼叫 CIB 的名稱。

  2. 編輯已產生的檔案。 尋找 <resources> 區段。 您會看到針對 AG 或 FCI 所建立的各種資源。 尋找與 IP 位址建立關聯的資源。 新增 <instance_attributes> 區段,其中包含第二個 IP 位址的資訊,該位址位於現有的 IP 位置之前或之後,但在 <operations> 之前。 其類似於下列語法:

    <instance_attributes id="<NameForAttribute>">
        <nvpair id="<NameForIP>" name="ip" value="<IPAddress>"/>
    </instance_attributes>
    

    其中,<NameForAttribute> 是此屬性的唯一名稱,<NameForIP> 則是與 IP 位址相關聯的名稱,<IPAddress> 則是第二個子網路的 IP 位址。

    下列為範例。

    <instance_attributes id="virtualip-instance_attributes">
        <nvpair id="virtualip-instance_attributes-ip" name="ip" value="192.168.1.102"/>
    </instance_attributes>
    

    根據預設,匯出的 CIB XML 檔案中只有一個 <instance_attributes />。 如果有兩個子網,您需要兩個 <instance_attributes /> 項目。

    以下是兩個子網路項目的範例:

    <instance_attributes id="virtualip-instance_attributes1">
        <rule id="Subnet1-IP" score="INFINITY" boolean-op="or">
            <expression id="Subnet1-Node1" attribute="#uname" operation="eq" value="Node1" />
            <expression id="Subnet1-Node2" attribute="#uname" operation="eq" value="Node2" />
        </rule>
        <nvpair id="IP-In-Subnet1" name="ip" value="192.168.1.102"/>
    </instance_attributes>
    <instance_attributes id="virtualip-instance_attributes2">
        <rule id="Subnet2-IP" score="INFINITY">
            <expression id="Subnet2-Node1" attribute="#uname" operation="eq" value="Node3" />
        </rule>
        <nvpair id="IP-In-Subnet2" name="ip" value="192.168.2.102"/>
    </instance_attributes>
    

    當子網路有一個以上的伺服器時,您會使用 boolean-op="or"

  3. 匯入已修改的 CIB 並重新設定 Pacemaker。

    sudo pcs cluster cib-push <filename>
    

    其中 <filename> 是 CIB 檔案的名稱,包含已修改的 IP 位址資訊。

檢查並驗證容錯移轉

  1. 成功套用已更新設定的 CIB 之後,請 Ping 與 Pacemaker 中 IP 位址資源建立關聯的 DNS 名稱。 其應該會反映與其目前裝載 AG 或 FCI 之子網路建立關聯的 IP 位址。

  2. 將 AG 或 FCI 容錯回復至另一個子網路。

  3. 在 AG 或 FCI 完全上線之後,請 Ping 與 IP 位址建立關聯的 DNS 名稱。 其應該會反映第二個子網路中的 IP 位址。

  4. 如有需要,將 AG 或 FCI 容錯回復至原始子網路。