純主從式

功能 > 叢集 > 主從式 > 純主從式

警告

LevelDB 儲存已從生產環境中移除。此頁面僅作為先前版本的歸檔頁面。請改用共用儲存主/從式

純主從式

此功能已被棄用,將在 5.8 版本中移除

此功能將在 5.8 版本中移除,因為它尚未發展到可供生產環境使用的程度。建議您改用共用儲存主/從式複製的 LevelDB 儲存。請參閱AMQ-4165

純主從式配置提供了一個基本、不共享任何資源的完全複製拓撲,它不依賴共享檔案系統或共享資料庫。

純主從式如何運作

  • 主代理的從屬代理會消耗來自主代理的所有訊息狀態 - 訊息、確認和交易狀態。
    當從屬代理主動連線到主代理時,它不會允許或啟動任何網路或傳輸連接器,它的唯一目的是複製主代理的狀態。

  • 只有當訊息交換已成功傳遞到從屬代理時,主代理才會回應客戶端。例如,一個 commit
    在客戶端的交易中,除非主代理和從屬代理都處理了該 commit,否則不會完成。

  • 如果主代理發生故障(例如,硬體故障),從屬代理可以選擇兩種操作模式
    1. 啟動其所有網路和傳輸連接器 - 允許連線到主代理的客戶端在從屬代理上恢復。
    2. 或者可以配置為關閉。在這種模式下,從屬代理僅用於複製主代理的狀態。
  • 客戶端應使用容錯移轉傳輸來首先連線到主代理,然後連線到從屬代理。例如,使用類似以下的 URL
    failover://(tcp://masterhost:61616,tcp://slavehost:61616)?randomize=false
    

    randomize 屬性只是停用隨機性,以便傳輸始終首先嘗試主代理,如果無法連線到主代理,則嘗試從屬代理。請注意,從屬代理在成為主代理之前不會接受連線

純主從式的限制

  • 只有一個從屬代理可以連線到主代理
  • 如果沒有關閉從屬代理,則無法重新引入發生故障的主代理(沒有自動容錯回復)
  • 代理之間沒有自動同步。這是一個手動過程。

復原純主從式拓撲

這是一個手動過程 - 一旦主代理發生故障,確保拓撲再次同步的唯一方法是手動

  • 關閉從屬代理(客戶端不需要關閉 - 如果它們是容錯移轉客戶端,它們會等到拓撲重新建立)
  • 將資料目錄從從屬代理複製到主代理的資料目錄上
  • 重新啟動主代理和從屬代理

配置純主從式

您不應配置主代理和從屬代理之間的連線。連線是使用從屬代理的配置自動建立的。如果明確配置網路連線,則當主代理處於高負載時,可能會遇到競爭條件。

主代理不需要任何特殊配置 - 它在從屬代理附加自身之前是一個正常的代理。
要將代理識別為從屬代理 - 只需設定一個屬性(見下文),如這個範例所示 - 因此配置非常簡單

<broker masterConnectorURI="tcp://masterhost:62001" shutdownOnMasterFailure="false">
  <persistenceAdapter>
      <journaledJDBC journalLogFiles="5" dataDirectory="${activemq.base}/data/broker2" />
    </persistenceAdapter>

    <transportConnectors>
	  <transportConnector uri="tcp://slavehost:61616"/>
   </transportConnectors>
</broker>

代理屬性|預設值|描述 —|—|— masterConnectorURI|null|主代理的 URI,例如 tcp://masterhost:62001 shutdownOnMasterFailure|false|如果為 true,則當主代理發生故障時,從屬代理將關閉,否則從屬代理將接管成為新的主代理。從屬代理確保每個訊息和確認在另一台機器上都有一個單獨的副本,可以防止災難性的硬體故障。如果主代理發生故障,您可能希望從屬代理也關閉,因為您可能總是希望將訊息複製到 2 個實體位置,以防止在災難性資料中心或硬體故障時訊息遺失。如果您希望系統在主代理故障後繼續運行,則將此標誌保留為 false。waitForSlave|false|版本 5.2+,如果為 true,則主代理將等到從屬代理附加後再完成其啟動順序 shutdownOnSlaveFailure|false|版本 5.2+,如果為 true,則如果從屬代理連線遺失,主代理將關閉,確保主代理不會與從屬代理失去同步。

配置從屬代理的身份驗證

在 ActiveMQ Classic 4.1 或更高版本中,您可以使用 <masterConnector/> 元素作為替代的 XML 配置機制,如以下範例中所示,以配置從屬代理將用於連線到主代理的使用者名稱和密碼

<broker brokerName="slave" useJmx="false"  deleteAllMessagesOnStartup="true"  xmlns="https://activemq.dev.org.tw/schema/core">
  <services>
    <masterConnector remoteURI= "tcp://127.0.0.1:62001" userName="James" password="Cheese"/>
  </services>

  <transportConnectors>
    <transportConnector uri="tcp://127.0.0.1:62002"/>
  </transportConnectors>
</broker>

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 Apache 軟體基金會的商標。版權所有 © 2024,Apache 軟體基金會。根據 Apache 許可證 2.0 授權。