Sie können verschiedene Optionen verwenden, um die Verteilung
von Shards auf die verschiedenen Container-Server in der Konfiguration zu steuern.
Während des Starts können Sie festlegen, dass die Shard-Verteilung verzögert wird.
Wenn Sie alle Container-Server ausführen, müssen Sie die Verteilung unter Umständen
aussetzen, fortsetzen oder ändern, während Sie die Server verwalten.
Vorgehensweise
Verteilung während des Starts steuern
Sie können steuern, wann mit der Verteilung der Shards
während des Umgebungsstarts begonnen wird.
Eine gewisse Steuerung ist standardmäßig etabliert. Wenn Sie keine Aktionen zur Steuerung der
Verteilung ausführen, wird unverzüglich mit der Shard-Verteilung begonnen.
Bei unverzüglicher Shard-Verteilung werden die Shards möglicherweise nicht gleichmäßig
verteilt, wenn weitere Container-Server gestartet werden, und es werden weitere Verteilungsoperationen ausgeführt, um
die Shards gleichmäßig zu verteilen.
- Gleichmäßige Verteilung der Shards vorübergehend aussetzen, um eine unverzügliche Shard-Verteilung zu verhindern,
wenn die Container-Server gestartet werden.
Bevor Sie Ihre Container-Server starten, verwenden Sie den Befehl
xscmd -c suspendBalancing, um die gleichmäßige Verteilung der Shards für ein bestimmtes
Datengrid und MapSet zu stoppen.
Nach dem Start der Container-Server können Sie den Befehl xscmd -c resumeBalancing
verwenden, um die Verteilung der Shards auf die Container-Server zu starten.
- Eigenschaft placementDeferralInterval konfigurieren.
Die Eigenschaft placementDeferralInterval minimiert die Anzahl der Shard-Verteilungszyklen in den Container-Servern.
Die Shard-Verteilung wird im definierten Zeitintervall ausgelöst.
Setzen Sie die Eigenschaft placementDeferralInterval in der Servereigenschaftendatei für den
Katalogserver. Wenn Sie die integrierte Server-API verwenden, verwenden Sie die Methode
setPlacementDeferralInterval in der Schnittstelle CatalogServerProperties. Diese Eigenschaft legt die Wartezeit in Millisekunden fest,
bevor mit der Verteilung der Shards auf die Container-Server begonnen wird.
Der Standardwert für diese Eigenschaft sind 15 Sekunden.
Wenn der Standardwert verwendet wird, wird die Verteilung beim Start eines Container-Servers erst gestartet, wenn die mit der Eigenschaft
angegebene Zeit abgelaufen ist.
Wenn mehrere Container-Server nacheinander gestartet werden, wird der Zeitgeber für das Verzögerungsintervall
zurückgesetzt, wenn ein neuer Container-Server im angegebenen Intervall gestartet wird.
Angenommen, ein zweiter Container-Server wird 10 Sekunden nach dem ersten Container-Server gestartet. In diesem Fall wird die
Verteilung erst 15 Sekunden nach dem Start des zweiten Container-Servers gestartet.
Wird jedoch ein dritter Container-Server 20 Sekunden nach dem zweiten Container-Server gestartet,
hat die Verteilung für die ersten beiden Container-Server bereits begonnen.
Wenn Container-Server nicht verfügbar sind, wird die Verteilung ausgelöst, sobald der Katalogserver
Kenntnis von diesem Ereignis erhält, so dass eine Wiederherstellung so schnell wie möglich stattfinden kann.
Mithilfe der folgenden Tipps können Sie feststellen, ob die Verteilungsverzögerung auf den richtigen Wert
gesetzt ist:
- Sehen Sie sich während des gleichzeitigen Startens der Container-Server die CWOBJ1001-Nachrichten
in der Datei SystemOut.log für jeden Container-Server an.
Die Zeitmarke dieser Nachrichten in der Protokolldatei jedes Container-Servers
zeigt die tatsächliche Startzeit des Container-Servers an. Sie können die Eigenschaft
placementDeferralInterval anpassen, um weitere Container-Server-Starts einzuschließen.
Wird der erste Container-Server beispielsweise
90 Sekunden vor dem letzten Container-Server gestartet, können Sie die Eigenschaft auf
90 Sekunden setzen.
- Achten Sie darauf, wie lange die CWOBJ1511-Nachrichten nach den
CWOBJ1001-Nachrichten ausgegeben werden. Diese Zeit kann anzeigen, ob die Verzögerung
erfolgreich war.
- In einer Entwicklungsumgebung sollten Sie beim Testen Ihrer Anwendung auch die Länge des Intervalls berücksichtigen.
- Attribut numInitialContainers konfigurieren.
Wenn Sie zuvor das Attribut numInitialContainers verwendet haben, können Sie das
Attribut weiter verwenden. Es wird jedoch empfohlen, anstelle des Attributs numInitialContainers die Befehle xscmd
-c suspendBalancing und xscmd -c resumeBalancing, gefolgt
von placementDeferralInterval, für die Steuerung der Verteilung zu verwenden.
Das Attribut numInitialContainers
gibt die Anzahl der Container-Server an, die erforderlich sind, bevor
die anfängliche Verteilung für die Shards in diesem Element "mapSet"
stattfindet.
Das Attribut numInitialContainers wird in der XML-Deskriptordatei
der Implementierungsrichtlinie definiert. Wenn Sie numInitialContainers und placementDeferralInterval definiert haben,
findet unabhängig vom Wert der Eigenschaft placementDeferralInterval eine Verteilung erst statt, wenn der Wert von numInitialContainers erreicht ist.
Verteilung nach dem Anfangsstart steuern.
- Verteilung erzwingen.
Sie können den Befehl xscmd
-c triggerPlacement -g my_OG -ms my_Map_Set verwenden, in dem my_OG und my_Map_Set auf die Werte
für Ihr Datengrid und Ihr MapSet gesetzt sind, um die Verteilung zu einem bestimmten Zeitpunkt, zu dem die Verteilung sonst nicht stattfindet, zu erzwingen.
Sie können diesen Befehl beispielsweise ausführen, wenn die mit der Eigenschaft
placementDeferralInterval angegebene Zeit noch nicht abgelaufen ist oder wenn eine gleichmäßige Verteilung
ausgesetzt ist.
- Primäres Shard erneut zuordnen.
Verwenden Sie den Befehl xscmd
-c swapShardWithPrimary, um ein Replikat-Shard als neues primäres Shard zuzuordnen.
Das vorherige primäre Shard wird zu einem Replikat.
- Primäre Shards und Replikat-Shards neu verteilen.
Verwenden Sie den Befehl xscmd -c balanceShardTypes, um das Verhältnis
zwischen primären Shards und Replikat-Shards so anzupassen, dass diese in ausgeglichener Anzahl auf die aktiven Container-Server in der Konfiguration verteilt werden.
Das Verhältnis ist innerhalb eines Shards in jedem Container-Server konsistent.
- Verteilung aussetzen oder fortsetzen.
Verwenden Sie den Befehl
xscmd
-c suspendBalancing oder den Befehl
xscmd -c resumeBalancing, um die gleichmäßige
Verteilung von Shards für ein bestimmtes Datengrid und ein bestimmtes MapSet zu stoppen und zu starten.
Wenn die gleichmäßige Verteilung ausgesetzt wurde, können die folgenden Verteilungsaktionen trotzdem ausgeführt werden:
- Es kann eine Shard-Umstufung durchgeführt werden, wenn Container-Server ausfallen.
- Mit dem Befehl xscmd -c swapShardWithPrimary kann ein Shard-Rollentausch durchgeführt werden.
- Mit dem Befehl xscmd -c
triggerPlacement -g myOG -ms myMapSet kann eine gleichmäßige Shard-Verteilung eingeleitet werden.
Nächste Schritte
Sie können die Verteilung in der Umgebung mit dem Befehl
xscmd
-c placementServiceStatus überwachen.