ActiveMQ Artemis:沒有 HA 策略“縮減”的消息耗盡
在 ActiveMQ Artemis HA 集群 (v2.13.0) 中,
<scale-down/>
如果主實例失敗,HA 策略的屬性會導致備份代理將所有掛起的消息移動到剩餘的活動實例之一。一旦耗盡,從代理將自行停止並等待主實例再次上線。這種行為有效地減少了集群中代理對的數量,即使只有一個主代理失敗。對?未設置該
<scale-down/>
屬性時,從代理在主故障時變為活動,並且集群中的活動代理的數量不會改變。但是,我想知道如果故意關閉(即,SIGTERM
),實時備份實例是否仍將掛起的消息移動到其他代理。此行為將在代理有意關閉的情況下保留所有消息,同時在發生故障時保留活動代理的數量。
這種行為有效地減少了集群中代理對的數量,即使只有一個主代理失敗。對?
這是正確的。
未設置該屬性時,從代理在主故障時變為活動,並且集群中的活動代理的數量不會改變。
這也是正確的。
但是,我想知道如果故意關閉(即 SIGTERM),實時備份實例是否仍會將未決消息移動到其他代理。
如果
scale-down
未配置,則不會移動任何消息。縮減功能實際上是為雲案例設計的,在這些案例中,只有實時集群會根據需求增長和縮小。當集群收縮時,即將消失的代理需要一種方法來保存其消息,以便將它們轉儲到集群中的另一個代理。此外,由於雲本身提供的管理和冗餘,雲基礎設施通常會使 HA 配置變得毫無意義。例如,如果一個節點發生故障,那麼雲基礎設施可以簡單地重新啟動它。在這種情況下,代理可以簡單地重新附加到它之前使用的任何儲存,並且在崩潰(或其他任何東西)之前存在的所有持久消息仍然存在。
在我看來,雖然技術上可以在具有實時和備份的 HA 配置中使用縮減,但我認為這樣做沒有多大意義,因為實時和備份已經共享消息數據(通過共享-儲存或複制)。
最後,值得注意的是,可以使用
ActiveMQServerControl
MBean 以管理方式執行縮減。