Ich möchte wissen, wie Amazon Aurora für MySQL oder PostgreSQL den Workload zwischen den Leserknoten verteilt.
Lösung
Verwenden Sie den Leser-Endpunkt, um eine Verbindung zu den Leserknoten in einem Amazon Aurora Cluster herzustellen.
Führen Sie einen Shell-Befehl aus, um die Rotationsverteilung der Verbindungen zu überprüfen. Um zu ermitteln, wie Aurora Ihre Verbindungen zum Leser-Endpunkt zu verteilen versucht, führen Sie einen Befehl aus, der dem folgenden Beispiel ähnelt:
while sleep 5; do dig xxx-cluster.cluster-ro-xxxxxx.us-east1.rds.amazonaws.com|grep CNAME; done
Jedes Mal, wenn Sie den Leser-Endpunkt auflösen, erhalten Sie eine Instance-IP-Adresse, mit der Sie eine Verbindung herstellen können. Diese IP-Adresse wird auf Basis der Rotationsverteilung ausgewählt.
In folgenden Szenarien ist die DB-Verbindung zu den einzelnen Lesereplikaten möglicherweise nicht gleichmäßig verteilt:
- Ein Client speichert DNS-Informationen im Cache. Die ungleichmäßige Verteilung tritt auf, wenn der Client zwischengespeicherte Verbindungseinstellungen verwendet, um eine Verbindung zum selben Aurora-Replikat herzustellen. DNS-Caching kann überall stattfinden, auch auf der Ebene Ihres Netzwerks, im Betriebssystem oder im Anwendungscontainer.
- Wenn die DB Instance einen Failover durchführt, werden Verbindungen möglicherweise vom Leser-Endpunkt umgeleitet. Der Leser-Endpunkt leitet vielleicht vorübergehend Verbindungen zur primären DB Instance für den DB Cluster um. Diese Umleitung erfolgt, wenn ein Aurora-Replikat zur primären DB Instance hochgestuft wird.
- Das Lesereplikat ist nicht verfügbar oder besteht eine Zustandsprüfung nicht.
- Die Anwendung ist in Java geschrieben und Sie schalten das TTL Caching nicht aus oder passen es nicht an. Wenn Sie das TTL Caching nicht deaktivieren oder anpassen, können virtuelle Java-Maschinen (JVMs) DNS-Daten auf unbestimmte Zeit zwischenspeichern. Weitere Informationen finden Sie unter Setting the JVM TTL for DNS name lookups.
- Werden die Verbindungen gleichzeitig hergestellt, werden sie an denselben Leser-Endpunkt gesendet.
Um mehr Flexibilität zu erhalten, können Sie benutzerdefinierte Endpunkte für Ihre Workload-Verteilung verwenden. Beispielsweise sind benutzerdefinierte Endpunkte nützlich, wenn Sie innerhalb des Clusters unterschiedliche DB-Instance-Größen verwenden.
Verwandte Informationen
Amazon Aurora connection management