De PostgreSQL Hyperscale-servergroep Azure Arc en inschalen door meer werkknooppunten toe te voegen

In dit document wordt uitgelegd hoe u kunt uitschalen en schalen in Azure Arc PostgreSQL Hyperscale-servergroep met ingeschakelde functie. Dit doet u door een scenario te nemen. Als u het scenario niet wilt uitvoeren en alleen wilt lezen hoe u kunt uitschalen, gaat u naar de alinea Uitschalen of Inschalen.

U kunt uitschalen wanneer u Postgres-exemplaren (Postgres Hyperscale-werkknooppunten) toevoegt aan Azure Arc PosrgreSQL Hyperscale met ingeschakelde functie.

U schaalt in wanneer u Postgres-exemplaren (Postgres Hyperscale-werkknooppunten) verwijdert uit uw Azure Arc PosrgreSQL Hyperscale met ingeschakelde functie.

Notitie

Omdat het om een preview-functie gaat, is de technologie die in dit artikel wordt behandeld onderhevig aan de Aanvullende gebruiksvoorwaarden voor Microsoft Azure Previews.

De meest recente updates zijn beschikbaar in de release-opmerkingen.

Voor de huidige update wordt de implementatie van de Arc-gegevenscontroller in de modus voor directe connectiviteit alleen ondersteund vanuit Azure Portal.

Aan de slag

Als u al bekend bent met het schaalmodel Azure Arc PostgreSQL Hyperscale of Azure Database for PostgreSQL Hyperscale (Citus), kunt u deze alinea overslaan. Als u dit niet doet, is het raadzaam om eerst te lezen over dit schaalmodel op de documentatiepagina van Azure Database for PostgreSQL Hyperscale (Citus). Azure Database for PostgreSQL Hyperscale (Citus) is dezelfde technologie die wordt gehost als een service in Azure (Platform As A Service ook wel paas genoemd) in plaats van te worden aangeboden als onderdeel van Azure Arc-Data Services:

* Sla in de bovenstaande documenten de secties Aanmelden bij de Azure Portal over & Een Azure Database for PostgreSQL maken - Hyperscale (Citus). Implementeert de resterende stappen in uw Azure Arc implementatie. Deze secties zijn specifiek voor de Azure Database for PostgreSQL Hyperscale (Citus) die worden aangeboden als een PaaS-service in de Azure-cloud, maar de andere onderdelen van de documenten zijn rechtstreeks van toepassing op uw PostgreSQL Hyperscale met Azure Arc-ondersteuning.

Scenario

Dit scenario verwijst naar de PostgreSQL Hyperscale-servergroep die is gemaakt als voorbeeld in de documentatie Een PostgreSQL Hyperscale-servergroep met Azure Arc-functie maken.

Testgegevens laden

In het scenario wordt een voorbeeld gebruikt van openbaar beschikbare GitHub gegevens, die beschikbaar zijn op de Citus Data-website (Citus Data maakt deel uit van Microsoft).

Verbinding maken aan uw postgreSQL Hyperscale-servergroep Azure Arc postgreSQL met ingeschakelde servergroep

De verbindingsgegevens op een lijst zetten

Verbinding maken verbinding maken met Azure Arc PostgreSQL Hyperscale-servergroep door eerst de verbindingsgegevens op te vragen: De algemene indeling van deze opdracht is

azdata arc postgres endpoint list -n <server name>

Bijvoorbeeld:

azdata arc postgres endpoint list -n postgres01

Voorbeelduitvoer:

[
  {
    "Description": "PostgreSQL Instance",
    "Endpoint": "postgresql://postgres:<replace with password>@12.345.123.456:1234"
  },
  {
    "Description": "Log Search Dashboard",
    "Endpoint": "https://12.345.123.456:12345/kibana/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:\"postgres01\"'))"
  },
  {
    "Description": "Metrics Dashboard",
    "Endpoint": "https://12.345.123.456:12345/grafana/d/postgres-metrics?var-Namespace=arc3&var-Name=postgres01"
  }
]
Verbinding maken het clienthulpprogramma van uw keuze.

Voer de volgende query uit om te controleren of u momenteel twee (of meer Hyperscale-werkknooppunten) hebt, die elk overeenkomen met een Kubernetes-pod:

SELECT * FROM pg_dist_node;
 nodeid | groupid |                       nodename                        | nodeport | noderack | hasmetadata | isactive | noderole | nodecluster | metadatasynced | shouldhaveshards
--------+---------+-------------------------------------------------------+----------+----------+-------------+----------+----------+-------------+----------------+------------------
      1 |       1 | pg1-1.pg1-svc.default.svc.cluster.local |     5432 | default  | f           | t        | primary  | default     | f              | t
      2 |       2 | pg1-2.pg1-svc.default.svc.cluster.local |     5432 | default  | f           | t        | primary  | default     | f              | t
(2 rows)

Een voorbeeldschema maken

Maak twee tabellen door de volgende query uit te voeren:

CREATE TABLE github_events
(
    event_id bigint,
    event_type text,
    event_public boolean,
    repo_id bigint,
    payload jsonb,
    repo jsonb,
    user_id bigint,
    org jsonb,
    created_at timestamp
);

CREATE TABLE github_users
(
    user_id bigint,
    url text,
    login text,
    avatar_url text,
    gravatar_id text,
    display_login text
);

JSONB is het JSON-gegevenstype in binaire vorm in PostgreSQL. Het slaat een flexibel schema op in één kolom en met PostgreSQL. Het schema bevat een INDEX om elke sleutel en waarde in het schema te indexeren. Met eenINDEX kunt u snel en eenvoudig query's uitvoeren met verschillende voorwaarden rechtstreeks op die nettolading. We gaan dus een aantal indexen maken voordat we onze gegevens laden:

CREATE INDEX event_type_index ON github_events (event_type);
CREATE INDEX payload_index ON github_events USING GIN (payload jsonb_path_ops);

Als u standaardtabellen wilt sharden, moet u voor elke tabel een query uitvoeren. Geef de tabel op die we willen sharden en de sleutel waarin we deze willen sharden. We sharden zowel de gebeurtenissen als de gebruikerstabel op user_id:

SELECT create_distributed_table('github_events', 'user_id');
SELECT create_distributed_table('github_users', 'user_id');

Voorbeeldgegevens laden

De gegevens laden met COPY ... VAN PROGRAMMA:

COPY github_users FROM PROGRAM 'curl "https://examples.citusdata.com/users.csv"' WITH ( FORMAT CSV );
COPY github_events FROM PROGRAM 'curl "https://examples.citusdata.com/events.csv"' WITH ( FORMAT CSV );

Query’s uitvoeren voor de gegevens

Meet nu hoe lang een eenvoudige query duurt met twee knooppunten:

SELECT COUNT(*) FROM github_events;

Noteer de uitvoeringstijd van de query.

Uitschalen

De algemene indeling van de scale-out opdracht is:

azdata arc postgres server edit -n <server group name> -w <target number of worker nodes>

In dit voorbeeld verhogen we het aantal werkknooppunten van 2 naar 4 door de volgende opdracht uit te voeren:

azdata arc postgres server edit -n postgres01 -w 4

Wanneer u knooppunten toevoegt, ziet u de status In behandeling voor de servergroep. Bijvoorbeeld:

azdata arc postgres server list
Name        State          Workers
----------  -------------  ---------
postgres01  Pending 4/5    4

Zodra de knooppunten beschikbaar zijn, wordt de Hyperscale Shard Rebalancer automatisch uitgevoerd en worden de gegevens opnieuw gedistribueerd naar de nieuwe knooppunten. De uitschaalbewerking is een onlinebewerking. Terwijl de knooppunten worden toegevoegd en de gegevens opnieuw worden gedistribueerd over de knooppunten, blijven de gegevens beschikbaar voor query's.

De nieuwe vorm van de servergroep controleren (optioneel)

Gebruik een van de onderstaande methoden om te controleren of de servergroep nu gebruik maakt van de extra werkknooppunten die u hebt toegevoegd.

Met azdata:

Voer de opdracht uit:

azdata arc postgres server list

Hiermee wordt de lijst met servergroepen die in uw naamruimte zijn gemaakt, weergegeven en wordt het aantal werkknooppunten aangegeven. Bijvoorbeeld:

Name        State    Workers
----------  -------  ---------
postgres01  Ready    4

Met kubectl:

Voer de opdracht uit:

kubectl get postgresqls

Hiermee wordt de lijst met servergroepen die in uw naamruimte zijn gemaakt, weergegeven en wordt het aantal werkknooppunten aangegeven. Bijvoorbeeld:

NAME         STATE   READY-PODS   EXTERNAL-ENDPOINT   AGE
postgres01   Ready   4/4          10.0.0.4:31066      4d20h

Met een SQL query:

Verbinding maken servergroep met het clienthulpprogramma van uw keuze en voer de volgende query uit:

SELECT * FROM pg_dist_node;
 nodeid | groupid |                       nodename                        | nodeport | noderack | hasmetadata | isactive | noderole | nodecluster | metadatasynced | shouldhaveshards
--------+---------+-------------------------------------------------------+----------+----------+-------------+----------+----------+-------------+----------------+------------------
      1 |       1 | pg1-1.pg1-svc.default.svc.cluster.local |     5432 | default  | f           | t        | primary  | default     | f              | t
      2 |       2 | pg1-2.pg1-svc.default.svc.cluster.local |     5432 | default  | f           | t        | primary  | default     | f              | t
      3 |       3 | pg1-3.pg1-svc.default.svc.cluster.local |     5432 | default  | f           | t        | primary  | default     | f              | t
      4 |       4 | pg1-4.pg1-svc.default.svc.cluster.local |     5432 | default  | f           | t        | primary  | default     | f              | t
(4 rows)

Ga terug naar het scenario

Als u de uitvoeringstijd van de select count-query wilt vergelijken met de voorbeeldgegevensset, gebruikt u dezelfde count-query. Deze kan worden gebruikt op de vier werkknooppunten, zonder wijzigingen in de SQL-instructie.

SELECT COUNT(*) FROM github_events;

Noteer de uitvoeringstijd.

Notitie

Afhankelijk van uw omgeving, bijvoorbeeld als u uw testservergroep hebt geïmplementeerd met op één knooppunt-VM, ziet u mogelijk een aanzienlijke verbetering in de kubeadm uitvoeringstijd. Bekijk de volgende korte video's om een beter beeld te krijgen van het type prestatieverbetering dat u kunt bereiken met Azure Arc PostgreSQL Hyperscale:

Inschalen

Als u wilt inschalen (het aantal werkknooppunten in uw servergroep wilt verminderen), gebruikt u dezelfde opdracht als om uit te schalen, maar geeft u een kleiner aantal werkknooppunten aan. De werkknooppunten die worden verwijderd, zijn de meest recente knooppunten die zijn toegevoegd aan de servergroep. Wanneer u deze opdracht uitvoeren, verplaatst het systeem de gegevens uit de knooppunten die worden verwijderd en herdistribueert (herverdelingen) deze automatisch naar de resterende knooppunten.

De algemene indeling van de inschaalopdracht is:

azdata arc postgres server edit -n <server group name> -w <target number of worker nodes>

De inschaalbewerking is een onlinebewerking. Uw toepassingen blijven zonder downtime toegang krijgen tot de gegevens terwijl de knooppunten worden verwijderd en de gegevens opnieuw worden verdeeld over de resterende knooppunten.

Volgende stappen

* Sla in de bovenstaande documenten de secties Aanmelden bij de Azure Portal over & Een Azure Database for PostgreSQL maken - Hyperscale (Citus). Implementeert de resterende stappen in uw Azure Arc implementatie. Deze secties zijn specifiek voor de Azure Database for PostgreSQL Hyperscale (Citus) die worden aangeboden als een PaaS-service in de Azure-cloud, maar de andere onderdelen van de documenten zijn rechtstreeks van toepassing op uw PostgreSQL Hyperscale met Azure Arc-ondersteuning.