التوسع وفي مجموعة خوادم PostgreSQL Hyperscale التي تم تمكين Azure Arc عنها عن طريق إضافة المزيد من عقد العمال

يشرح هذا المستند كيفية التوسع والقياس في مجموعة خوادم PostgreSQL Hyperscale ممكنة من Azure Arc. يفعل ذلك عن طريق أخذك من خلال سيناريو. إذا كنت لا تريد تشغيل السيناريو وتريد فقط القراءة حول كيفية التوسع، فانتقل إلى الفقرة تغيير الحجم أو القياس.

يمكنك التوسع عند إضافة مثيلات Postgres (عقد عامل Postgres Hyperscale) إلى مجموعة خوادم PosrgreSQL Hyperscale التي تدعم Azure Arc.

يمكنك القياس عند إزالة مثيلات Postgres (عقد عامل Postgres Hyperscale) من مجموعة خوادم PosrgreSQL Hyperscale التي تدعم Azure Arc.

ملاحظة

كميزة معاينة، تخضع التقنية المقدمة في هذه المقالة إلى شروط الاستخدام التكميلية لمعاينات Microsoft Azure.

تتوفر آخر التحديثات في ملاحظات حول الإصدار.

الشروع في العمل

إذا كنت معتادا بالفعل على نموذج القياس الخاص ب PostgreSQL Hyperscale أو قاعدة بيانات Azure Scale ل PostgreSQL Hyperscale (Citus) الذي تم تمكين Azure Arc له، فيمكنك تخطي هذه الفقرة. إذا لم تكن كذلك، فمن المستحسن أن تبدأ بالقراءة عن نموذج التحجيم هذا في صفحة الوثائق الخاصة بقاعدة بيانات Azure ل PostgreSQL Hyperscale (Citus). قاعدة بيانات Azure ل PostgreSQL Hyperscale (Citus) هي نفس التقنية التي تتم استضافتها كخدمة في Azure (النظام الأساسي كخدمة تعرف أيضا باسم PAAS) بدلا من تقديمها كجزء من خدمات البيانات التي تدعم Azure Arc:

* في المستندات أعلاه، تخطي الأقسام تسجيل الدخول إلى مدخل Azure، &وإنشاء قاعدة بيانات Azure ل PostgreSQL - Hyperscale (Citus). نفذ الخطوات المتبقية في نشر Azure Arc. هذه الأقسام خاصة بقاعدة بيانات Azure ل PostgreSQL Hyperscale (Citus) المقدمة كخدمة PaaS في سحابة Azure ولكن الأجزاء الأخرى من المستندات قابلة للتطبيق مباشرة على PostgreSQL Hyperscale الذي يدعم Azure Arc.

السيناريو

يشير هذا السيناريو إلى مجموعة ملقم PostgreSQL Hyperscale التي تم إنشاؤها كمثال في وثائق مجموعة خوادم PostgreSQL Hyperscale ممكنة ل Azure Arc .

تحميل بيانات التحقق

يستخدم السيناريو عينة من بيانات GitHub المتاحة للجمهور، والمتوفرة من موقع Citus Data على الويب (Citus Data جزء من Microsoft).

الاتصال إلى مجموعة خوادم PostgreSQL Hyperscale التي تدعم Azure Arc

سرد معلومات الاتصال

الاتصال إلى مجموعة خوادم PostgreSQL Hyperscale التي تدعم Azure Arc عن طريق الحصول أولا على معلومات الاتصال: التنسيق العام لهذا الأمر هو

az postgres arc-server endpoint list -n <server name>  --k8s-namespace <namespace> --use-k8s

على سبيل المثال:

az postgres arc-server endpoint list -n postgres01  --k8s-namespace arc --use-k8s

مثال على الإخراج:

{
  "instances": [
    {
      "endpoints": [
        {
          "description": "PostgreSQL Instance",
          "endpoint": "postgresql://postgres:<replace with password>@12.345.567.89:5432"
        },
        {
          "description": "Log Search Dashboard",
          "endpoint": "https://23.456.78.99:5601/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:postgres01'))"
        },
        {
          "description": "Metrics Dashboard",
          "endpoint": "https://34.567.890.12:3000/d/postgres-metrics?var-Namespace=arc&var-Name=postgres01"
        }
      ],
      "engine": "PostgreSql",
      "name": "postgres01"
    }
  ],
  "namespace": "arc"
}
الاتصال باستخدام أداة العميل التي تختارها.

قم بتشغيل الاستعلام التالي للتحقق من أن لديك حاليا عقدتين عاملتين (أو أكثر) (أو أكثر)، كل منهما يتوافق مع جراب Kubernetes:

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)

إنشاء نموذج مخطط

إنشاء جدولين عن طريق تشغيل الاستعلام التالي:

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 هو نوع بيانات JSON في شكل ثنائي في PostgreSQL. يخزن مخططا مرنا في عمود واحد ومع PostgreSQL. سيحتوي المخطط على مؤشر GIN عليه لفهرسة كل مفتاح وقيمة داخله. مع مؤشر GIN ، يصبح من السهل والاستعلام عنه بظروف مختلفة مباشرة على تلك الحمولة. لذلك سنمضي قدما وننشئ فهارس قبل تحميل بياناتنا:

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

لشق الجداول القياسية، قم بتشغيل استعلام لكل جدول. حدد الجدول الذي نريد أن نقطعه ، والمفتاح الذي نريد أن نقطعه عليه. سنقوم بتجميع كل من جدول الأحداث والمستخدمين على user_id:

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

تحميل بيانات العينة

تحميل البيانات مع نسخ ... من البرنامج:

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 );

الاستعلام عن البيانات

والآن قم بقياس المدة التي يستغرقها استعلام بسيط باستخدام عقدتين:

SELECT COUNT(*) FROM github_events;

قم بتدوين وقت تنفيذ الاستعلام.

التوسيع

التنسيق العام لأمر التوسيع هو:

az postgres arc-server edit -n <server group name> -w <target number of worker nodes> --k8s-namespace <namespace> --use-k8s

في هذا المثال، نقوم بزيادة عدد عقد العمال من 2 إلى 4، عن طريق تشغيل الأمر التالي:

az postgres arc-server edit -n postgres01 -w 4 --k8s-namespace arc --use-k8s 

عند إضافة العقد، سترى حالة معلقة لمجموعة الخوادم. على سبيل المثال:

az postgres arc-server list --k8s-namespace <namespace> --use-k8s
{
    "name": "postgres01",
    "replicas": 1,
    "state": "Updating",
    "workers": 4
  }

بمجرد توفر العقد ، يتم تشغيل Hyperscale Shard Rebalancer تلقائيا ، ويعيد توزيع البيانات على العقد الجديدة. عملية التوسع هي عملية عبر الإنترنت. أثناء إضافة العقد وإعادة توزيع البيانات عبر العقد، تظل البيانات متاحة للاستعلامات.

التحقق من الشكل الجديد لمجموعة الخوادم (اختياري)

استخدم إحدى الطريقتين التاليتين للتحقق من أن مجموعة الخوادم تستخدم الآن عقد العمال الإضافية التي أضفتها.

With Azure CLI (az):

قم بتشغيل الأمر.

az postgres arc-server list --k8s-namespace arc --use-k8s

يقوم بإرجاع قائمة مجموعات الخوادم التي تم إنشاؤها في مساحة الاسم الخاصة بك ويشير إلى عدد عقد العمال الخاصة بهم. على سبيل المثال:

{
    "name": "postgres01",
    "replicas": 1,
    "state": "Ready",
    "workers": 4
  }

مع كوبيكتل:

قم بتشغيل الأمر.

kubectl get postgresqls -n arc

يقوم بإرجاع قائمة مجموعات الخوادم التي تم إنشاؤها في مساحة الاسم الخاصة بك ويشير إلى عدد عقد العمال الخاصة بهم. على سبيل المثال:

NAME         STATE   READY-PODS   PRIMARY-ENDPOINT     AGE
postgres01   Ready   5/5          12.345.567.89:5432   9d

لاحظ أن هناك جرابا واحدا أكثر من عدد عقد العاملين. يتم استخدام pod الإضافي لاستضافة مثيل Postgres الذي له دور المنسق

باستخدام استعلام SQL:

الاتصال إلى مجموعة الخادم باستخدام أداة العميل التي تختارها وقم بتشغيل الاستعلام التالي:

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)

العودة إلى السيناريو

إذا كنت ترغب في مقارنة وقت تنفيذ استعلام العد المحدد بمجموعة بيانات العينة، فاستخدم نفس استعلام العدد. يمكن استخدامه عبر عقد العمال الأربعة ، دون أي تغييرات في بيان SQL.

SELECT COUNT(*) FROM github_events;

لاحظ وقت التنفيذ.

ملاحظة

اعتمادا على بيئتك - على سبيل المثال إذا قمت بنشر مجموعة خادم الاختبار الخاصة بك على kubeadm جهاز ظاهري لعقدة واحدة - قد ترى تحسنا متواضعا في وقت التنفيذ. للحصول على فكرة أفضل عن نوع تحسين الأداء الذي يمكنك الوصول إليه باستخدام PostgreSQL Hyperscale الذي يدعم Azure Arc، شاهد مقاطع الفيديو القصيرة التالية:

مقياس في

للتوسع (تقليل عدد عقد العامل في مجموعة الخوادم)، يمكنك استخدام نفس الأمر للتوسع ولكنك تشير إلى عدد أقل من عقد العامل. العقد العاملة التي تتم إزالتها هي أحدث العقد التي تمت إضافتها إلى مجموعة الخادم. عند تشغيل هذا الأمر، يقوم النظام بنقل البيانات من العقد التي تتم إزالتها وإعادة توزيعها (إعادة توازنها) تلقائيا إلى العقد المتبقية.

التنسيق العام لأمر المقياس هو:

az postgres arc-server edit -n <server group name> -w <target number of worker nodes> --k8s-namespace <namespace> --use-k8s

عملية التوسيع هي عملية عبر الإنترنت. تستمر تطبيقاتك في الوصول إلى البيانات دون أي توقف أثناء إزالة العقد وإعادة توزيع البيانات عبر العقد المتبقية.

الخطوات التالية

* في المستندات أعلاه، تخطي الأقسام تسجيل الدخول إلى مدخل Azure، &وإنشاء قاعدة بيانات Azure ل PostgreSQL - Hyperscale (Citus). نفذ الخطوات المتبقية في نشر Azure Arc. هذه الأقسام خاصة بقاعدة بيانات Azure ل PostgreSQL Hyperscale (Citus) المقدمة كخدمة PaaS في سحابة Azure ولكن الأجزاء الأخرى من المستندات قابلة للتطبيق مباشرة على PostgreSQL Hyperscale الذي يدعم Azure Arc.