استقرار کلاستر با قابلیت دسترسی بالای AlloyDB Omni روی ماشین‌های مجازی GCE با استفاده از RPM Orchestrator

۱. مقدمه

این آزمایشگاه کد، استقرار کلاستر با قابلیت دسترسی بالا (HA) از AlloyDB Omni را بر روی ماشین‌های مجازی (VM) موتور محاسبات گوگل (GCE) نشان می‌دهد. در پایان این آزمایشگاه کد، شما یک معماری مرجع HA متشکل از ۳ گره پایگاه داده و ۲ گره HAProxy به همراه یک گره کنترل برای عملیات مدیریتی تهیه خواهید کرد.

پیش‌نیازها

  • دسترسی به پروژه ابری گوگل و پوسته ابری از طریق کنسول ابری.
  • نصب و پیکربندی کیت توسعه نرم‌افزار گوگل کلود ( gcloud )
  • Terraform نسخه ۱.۹.۸ نصب شد.

آنچه یاد خواهید گرفت

  • نحوه ایجاد و آماده‌سازی ماشین‌های مجازی GCE برای AlloyDB Omni.
  • نحوه نصب و اجرای AlloyDB Omni RPM Orchestrator.
  • نحوه نصب و پیکربندی RPM های AlloyDB Omni برای معماری مرجع HA.

آنچه نیاز دارید

  • لینک URL به RPM های AlloyDB Omni و RPM orchestrator را دریافت کنید. برای این کار، باید فرم ثبت نام alloydb omni را پر کنید. لینک ها به ایمیل شما که در سرور URL مخزن قرار دارد ارسال می شوند. متغیرهای محیطی زیر را مقداردهی اولیه کنید تا URL هایی که در طول codelab استفاده خواهند شد، در دسترس باشند.
    export ORCHESTRATOR_ANSIBLE_COLLECTION_PATH="..."
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    export ALLOYDB_OMNI_ORCHESTRATOR_REPOSITORY_URL="..."
    export ALLOYDB_OMNI_COMMON_REPOSITORY_URL=....
    export ETCD_REPOSITORY_URL="..."
    
  • یک ترمینال فعال با دسترسی به پشته استقرار AlloyDB Omni. برای این منظور می‌توانید از cloud shell استفاده کنید.

۲. تنظیمات و الزامات

راه‌اندازی پروژه

ایجاد یک پروژه ابری گوگل

  1. در کنسول گوگل کلود ، در صفحه انتخاب پروژه، یک پروژه گوگل کلود را انتخاب یا ایجاد کنید .
  2. مطمئن شوید که صورتحساب برای پروژه ابری شما فعال است. یاد بگیرید که چگونه بررسی کنید که آیا صورتحساب در یک پروژه فعال است یا خیر .

شروع پوسته ابری

اگرچه می‌توان از راه دور و از طریق لپ‌تاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا می‌شود، استفاده خواهید کرد.

از کنسول گوگل کلود ، روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

آیکون برای فعال کردن Cloud Shell

همچنین می‌توانید دکمه‌های G و سپس S را فشار دهید. اگر در کنسول ابری گوگل باشید یا از این لینک استفاده کنید، این توالی، Cloud Shell را فعال می‌کند.

آماده‌سازی و اتصال به محیط فقط چند لحظه طول می‌کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

ترمینال Google Cloud Shell که نشان می‌دهد محیط متصل شده است

این ماشین مجازی با تمام ابزارهای توسعه‌ای که نیاز دارید، مجهز شده است. این ماشین مجازی یک دایرکتوری خانگی دائمی ۵ گیگابایتی ارائه می‌دهد و روی گوگل کلود اجرا می‌شود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود می‌بخشد. تمام کارهای شما در این آزمایشگاه کد را می‌توان در یک مرورگر انجام داد. نیازی به نصب چیزی ندارید.

۳. ماشین‌های مجازی موتور محاسبات ابری گوگل (Google Cloud Compute Engine) ایجاد کنید

آماده‌سازی اسکریپت‌های Terraform

  1. متغیرهای محیطی را برای شناسه پروژه و نام خوشه مورد نظر خود تعریف کنید. از این موارد در سراسر codelab استفاده خواهید کرد.
    export PROJECT="your-project-id"
    export CLUSTER="your-cluster-name"
    
    توجه: شناسه پروژه Google Cloud باید فقط بین ۶ تا ۳۰ کاراکتر باشد. برای اطلاعات بیشتر، به https://docs.cloud.google.com/resource-manager/docs/creating-managing-projects#before_you_begin مراجعه کنید.
  2. مطمئن شوید که با حساب کاربری گوگل کلود وارد سیستم شده‌اید.
    gcloud auth login
    
  3. یک دایرکتوری کاری برای استقرار خود ایجاد کنید و فایل‌های پیکربندی مورد نیاز Terraform را از منبع مخزن خود کپی کنید.
    mkdir -p ~/alloydb-omni/$PROJECT/$CLUSTER
    cd ~/alloydb-omni/$PROJECT/$CLUSTER
    gcloud storage cp gs://alloydb-omni-install/rpm-orchestrator/gce/terraform/*.tf .
    
  4. یک فایل terraform.tfvars ایجاد کنید تا پارامترهای مورد نیاز را طبق معماری مرجع و طبق محتویات زیر مشخص کنید:
    cat > terraform.tfvars <<EOF
    # Required instance counts for reference architecture
    db_instance_count      = 3
    haproxy_instance_count = 2
    control_instance_count = 1
    
    # Optional: Customize if needed with the below variables
    # os_image             = "rocky-linux-cloud/rocky-linux-9"
    # zone                 = "us-west4-c"
    # region_1             = "us-west4"
    # db_instance_type     = "c4-highmem-4"
    # db_disk_type         = "hyperdisk-balanced"
    # db_data_size         =  "50" # GB
    # data_dir             =  "/data"
    EOF
    

اجرای اسکریپت‌های Terraform و اعتبارسنجی

  1. اکنون می‌توانید ماشین‌های مجازی را آماده‌سازی کنید.
    terraform init
    
  2. قبل از ایجاد ماشین‌های مجازی، مطمئن شوید که دسترسی لازم برای ایجاد ماشین‌های مجازی و سایر منابع را دارید. به طور خلاصه، به مجوزهای زیر نیاز خواهید داشت.
    roles/compute.admin
    roles/iam.roleAdmin
    roles/compute.osAdminLogin
    roles/iam.serviceAccountCreator
    roles/iam.serviceAccountUser
    roles/artifactregistry.repoAdmin
    roles/storage.objectUser
    roles/resourcemanager.projectIamAdmin
    roles/serviceusage.serviceUsageAdmin
    
  3. پیکربندی را اعتبارسنجی کنید و پیکربندی را برای تأمین منابع اعمال کنید.
    terraform validate
    terraform apply --auto-approve
    
    توجه: مطمئن شوید که از Terraform نسخه ۱.۹.۸ مطابق با پیکربندی پیاده‌سازی استفاده می‌کنید.
  4. پس از اتمام Terraform، با فهرست کردن نمونه‌های ایجاد شده با استفاده از gcloud ، تأیید کنید که ماشین‌های مجازی با موفقیت ایجاد شده‌اند.
    gcloud compute instances list --filter="name~$CLUSTER" --project=$PROJECT
    
    شما باید نمونه‌های مربوط به ۳ گره پایگاه داده، ۲ گره HAProxy و ماشین مجازی کنترل و مناطق مربوطه را ببینید. منطقه (ZONE) را برای گره کنترل ثبت کنید. بعداً در طول این آزمایش کد به آن نیاز خواهیم داشت.
    export ZONE=$(gcloud compute instances list \
      --filter="name=$CLUSTER-control"          \
      --format="value(zone)" --project=$PROJECT)
    

۴. ماشین‌های مجازی را برای استقرار آماده کنید

شما باید یک جلسه SSH به گره کنترل ایجاد کنید و مراحلی را برای فعال کردن دسترسی SSH به تمام ماشین‌های مجازی (که به آنها گره نیز گفته می‌شود) انجام دهید.

  1. مطمئن شوید که متغیرهای محیطی برای پروژه و کلاستر شما تعریف شده‌اند.
    export PROJECT="your-project-id"
    export CLUSTER="your-cluster-name"
    
  2. کلید SSH را ایجاد کنید و برای ورود به ماشین مجازی کنترل، همان را اضافه کنید.
    # Replace values with your specific GCP project, cluster and zone details
    ssh-keygen -t ed25519 -f $HOME/.ssh/google_compute_engine
    gcloud compute os-login ssh-keys add --key-file=$HOME/.ssh/google_compute_engine.pub --project=$PROJECT
    
  3. یک قانون فایروال ایجاد کنید تا به اتصالات SSH و همچنین ترافیک VRRP اجازه دسترسی بدهد.
    gcloud compute config-ssh --project=$PROJECT
    gcloud compute firewall-rules create $CLUSTER-allow-ssh --network=$CLUSTER --project=$PROJECT --direction=INGRESS --action=allow --rules=tcp:22 --source-ranges="0.0.0.0/0"
    gcloud compute firewall-rules create $CLUSTER-allow-vrrp --network=$CLUSTER --project=$PROJECT --allow=112 --source-ranges="0.0.0.0/0"
    
  4. از طریق SSH به ماشین مجازی کنترل متصل شوید:
    gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECT
    
  5. یک گروه لینوکس روی گره کنترل با نامی مشابه نام کاربری ایجاد کنید:
    sudo groupadd $(id -un)
    sudo usermod -aG $(id -un) $(id -un)
    
  6. Terraform setup چند اسکریپت پیکربندی ایجاد می‌کند و آنها را در دایرکتوری /tmp/ ماشین مجازی کنترل قرار می‌دهد که شامل مواردی مانند نام خوشه، حساب سرویس، نام پروژه و غیره است. با استفاده از اسکریپت‌های راه‌اندازی روی گره کنترل، دسترسی ssh بدون رمز عبور را از گره‌های کنترل به تمام گره‌های خوشه ایجاد کنید.
    /tmp/setup-ssh-for-cluster.sh
    
    مهم : نام کاربری service_account را یادداشت کنید. ما بعداً در این آزمایشگاه کد از آن به عنوان SSH_USER استفاده خواهیم کرد.
  7. برای این کدلاگ، می‌توانیم SELinux را روی تمام گره‌ها غیرفعال کنیم. اسکریپت Terraform فایل '/tmp/run-all.sh' را اضافه می‌کند که می‌تواند برای این منظور استفاده شود.
    /tmp/run-all.sh sudo setenforce 0
    
  8. اگر در AlloyDB Omni ثبت نام کرده‌اید و لینک‌ها را دریافت کرده‌اید، وقت آن رسیده که آن URLها را نیز به متغیرهای محیطی اضافه کنید.
    cat >> ~/.codelab.env <<EOF
    export ORCHESTRATOR_ANSIBLE_COLLECTION_PATH="..."
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    export ALLOYDB_OMNI_ORCHESTRATOR_REPOSITORY_URL="..."
    export ALLOYDB_OMNI_COMMON_REPOSITORY_URL=....
    export ETCD_REPOSITORY_URL="..."
    EOF
    
    یک IP مجازی برای محیط خود از متغیر ورودی cidr_range در فایل terraform/variables.tf انتخاب کنید، به طوری که با گره‌های دیگر تداخل نداشته باشد، همانطور که در مثال زیر نشان داده شده است:
    cat >> ~/.codelab.env <<EOF
    export VIRTUAL_IP="10.1.0.50"
    EOF
    

۵. اجزای نرم‌افزاری مورد نیاز را روی تمام ماشین‌های مجازی نصب کنید

مرحله بعدی نصب اجزای مورد نیاز SW روی ماشین‌های مجازی است. این کار می‌تواند در گره کنترل هماهنگ شود. تمام دستورات زیر باید روی گره کنترل اجرا شوند.

  1. اگر از قبل روی گره کنترل نیستید، از طریق SSH به ماشین مجازی کنترل متصل شوید.
    gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECT
    
    وقتی در خط فرمان ssh ماشین مجازی هستید، فایل محیط را منبع (source environment) کنید.
    source ~/.codelab.env
    
  2. روی گره کنترل، Ansible و کتابخانه‌های پایتون مورد نیاز را نصب کنید.
    sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm -y
    sudo dnf install -y ansible
    sudo dnf install -y python3-grpcio python3-protobuf python3-googleapis-common-protos python3-grpcio-status
    
  3. در مرحله بعد، فایل tar مجموعه RPM Orchestrator Ansible را دانلود و نصب کنید.
    gcloud storage cp "gs://${ORCHESTRATOR_ANSIBLE_COLLECTION_PATH#https://storage.googleapis.com/}google-alloydbomni_orchestrator-*.tar.gz" .
    ansible-galaxy collection install google-alloydbomni_orchestrator-0.1.0-6.tar.gz
    ansible-galaxy collection list | grep alloydbomni_orchestrator
    
    نکته: مطمئن شوید که متغیر ORCHESTRATOR_ANSIBLE_COLLECTION_PATH در انتها دارای علامت "/" باشد.
  4. هماهنگ‌کننده از یک فایل مشخصات استقرار در قالب فهرست Ansible برای درک توپولوژی خوشه شما استفاده می‌کند. فایلی با نام deployment_spec.yaml با جزئیات گره خود در گره کنترل ایجاد کنید.
    cat > deployment_spec.yaml <<EOF
    alloydbomni:
      vars:
        cluster_manager:
          name: "$CLUSTER"
        etcd:
          setup: true
          config_forcewrite: true
        alloydbomni:
          major_version: "18"
          repo_url: $ALLOYDB_OMNI_REPOSITORY_URL
        alloydbomni_monitor:
          repo_url: $ALLOYDB_OMNI_COMMON_REPOSITORY_URL
        alloydbomni_cluster_manager:
          repo_url: $ALLOYDB_OMNI_ORCHESTRATOR_REPOSITORY_URL
        alloydbomni_node_manager:
          repo_url: $ALLOYDB_OMNI_ORCHESTRATOR_REPOSITORY_URL
        pgbouncer:
          repo_url: $ALLOYDB_OMNI_COMMON_REPOSITORY_URL
        pgbackrest:
          repo_url: $ALLOYDB_OMNI_COMMON_REPOSITORY_URL
    
      children:
        primary_instance_nodes:
          hosts:
            $CLUSTER-db1:
            $CLUSTER-db2:
            $CLUSTER-db3:
        load_balancer_nodes:
          hosts:
            $CLUSTER-haproxy1:
            $CLUSTER-haproxy2:
    EOF
    
    نکته: فایل تولید شده را بررسی کنید تا مطمئن شوید که به مقادیر معتبر اشاره دارد.
  5. یک playbook با نام install.yaml ایجاد کنید که به نقش install از مجموعه orchestrator ارجاع دهد.
    cat > install.yaml <<EOF
    - name: Install AlloyDB Omni cluster components
      hosts: all
      vars:
        ansible_become: true
        ansible_user: $SSH_USER
        ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa
      roles:
        - role: google.alloydbomni_orchestrator.install
    EOF
    
    نکته: فایل تولید شده را بررسی کنید تا مطمئن شوید که به مقادیر معتبر اشاره دارد.
  6. با استفاده از فایل inventory خود، playbook را اجرا کنید تا RPMها را در تمام گره‌های مشخص شده دانلود و نصب کنید.
    ansible-playbook -i deployment_spec.yaml install.yaml
    

۶. کلاستر Omni بوت‌استرپ AlloyDB

در این مرحله، تمام اجزای مورد نیاز را روی تمام گره‌ها نصب کرده‌ایم و آماده‌ایم تا کلاستر AlloyDB Omni را بوت‌استرپ کنیم.

  1. اگر از قبل روی گره کنترل نیستید، از طریق SSH به ماشین مجازی کنترل متصل شوید.
    gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECT
    
    وقتی در خط فرمان ssh ماشین مجازی هستید، فایل محیط را منبع (source environment) کنید.
    source ~/.codelab.env
    
  2. برای رمز عبور خود یک هش ایجاد کنید و آن را یادداشت کنید.
    encoded_password=$(echo -n "your unique password" | base64)
    
  3. برای ایجاد کلاستر، AlloyDB Omni باید نحوه پیکربندی آن را بداند. برای مشخصات کلاستر پایگاه داده، فایلی با نام dbcluster.yaml ایجاد کنید.
    cat > dbcluster.yaml <<EOF
    Secret:
      metadata:
        name: db-pw-$CLUSTER
      spec:
        type: Opaque
        data:
          $CLUSTER: $encoded_password
    ---
    DBCluster:
      metadata:
        name: $CLUSTER
      spec:
        databaseVersion: 18.1.0
        mode: ""
        availability:
          numberOfStandbys: 2
          enableAutoFailover: true
          enableAutoHeal: true
          autoFailoverTriggerThreshold: 2
          autoHealTriggerThreshold: 2
          healthcheckPeriodSeconds: 5
          replayReplicationSlotsOnStandbys: false
        primarySpec:
          adminUser:
            passwordRef:
              name: db-pw-$CLUSTER
          resources:
            cpu: 4
            memory: 32Gi
            disks:
            - name: DataDisk
              path: $PGDATA
          dbLoadBalancerOptions:
            gcp:
              loadBalancerIP: "$VIRTUAL_IP"
              loadBalancerType: "internal"
              loadBalancerInterface: "eth0"
    EOF
    
  4. یک playbook با نام bootstrap.yaml ایجاد کنید که به نقش ansible در bootstrap برای ایجاد AlloyDB Omni Cluster اشاره خواهد کرد.
    cat > bootstrap.yaml <<EOF
    - name: Create DBCluster
      hosts: localhost
      vars:
        ansible_become: true
        ansible_user: $SSH_USER
        ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa
      roles:
      - role: google.alloydbomni_orchestrator.bootstrap
    EOF
    
  5. برای ایجاد خوشه، playbook خود را اجرا کنید
    ansible-playbook bootstrap.yaml -i deployment_spec.yaml -e resource_spec=dbcluster.yaml
    

۷. (اختیاری) پیکربندی PgBouncer Connection Pooler

AlloyDB Omni با استفاده از PgBouncer از ادغام اتصال سبک پشتیبانی می‌کند. می‌توانید PgBouncer را بلافاصله پس از آماده‌سازی کلاستر خود پیکربندی و بوت‌استرپ کنید.

  1. یک فایل مشخصات منبع با نام pgbouncer.yaml ایجاد کنید که connection pooler را با کلاستر پایگاه داده شما مرتبط کند:
    cat > pgbouncer.yaml <<EOF
    PgBouncer:
      metadata:
        name: pgbouncer-pooler
      spec:
        dbclusterRef: $CLUSTER
        allowSuperUserAccess: true
        accessMode: "rw"
        port: 6432
    EOF
    
  2. با استفاده از همان bootstrap.yaml playbook که قبلاً ایجاد شده است، PgBouncer pooler را بوت‌استرپ کنید و فایل مشخصات جدید را به آن ارسال کنید:
    ansible-playbook bootstrap.yaml -i deployment_spec.yaml -e resource_spec=pgbouncer.yaml
    

۸. بررسی خوشه Omni مربوط به AlloyDB

برای تأیید اینکه کلاستر شما به درستی کار می‌کند و با استفاده از متعادل‌کننده بار قابل دسترسی است، می‌توانید با استفاده از کلاینت استاندارد PostgreSQL از گره کنترل به آن متصل شوید.

  1. مخزن کلاینت PostgreSQL 18 و بسته آن را روی گره کنترل نصب کنید:
    sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    sudo dnf install -y postgresql18
    
  2. با استفاده از IP مجازی که قبلاً رزرو شده است، به کلاستر متصل شوید. از شما رمز عبوری که در dbcluster.yaml رمزگذاری کرده‌اید، درخواست می‌شود:
    /usr/pgsql-18/bin/psql -h $VIRTUAL_IP -U postgres -W
    
  3. پس از اتصال، می‌توانید کوئری‌های SQL پایه را برای تأیید وضعیت کلاستر اجرا کنید، برای مثال، بررسی نسخه پایگاه داده:
    postgres=# SELECT version();
    
    باید خروجی را ببینید که نشان می‌دهد PostgreSQL 18 با AlloyDB Omni در حال اجرا است. برای خروج از اعلان \q را تایپ کنید.

۹. (اختیاری) پشتیبان‌گیری از داده‌ها با استفاده از pgBackRest

AlloyDB Omni با pgBackRest ادغام می‌شود تا پشتیبان‌گیری‌ها را مستقیماً در فضای ذخیره‌سازی ابری مدیریت کند. می‌توانید یک طرح پشتیبان‌گیری پیکربندی کنید و یک پشتیبان‌گیری بر اساس تقاضا را در باکت GCS ایجاد شده توسط تنظیمات Terraform خود راه‌اندازی کنید.

  1. یک فایل مشخصات طرح پشتیبان‌گیری با نام backup_plan.yaml ایجاد کنید که به سطل GCS تأمین‌شده شما اشاره کند:
    cat > backup_plan.yaml <<EOF
    BackupPlan:
      metadata:
        name: pgb-plan
      spec:
        dbclusterRef: $CLUSTER
        backupLocation:
          type: GCS
          gcsOptions:
            bucket: $CLUSTER-gcs-backups
            key: /backups
    EOF
    
  2. یک Playbook در Ansible با نام backup.yaml ایجاد کنید که به نقش مدیریت پشتیبان‌گیری اشاره داشته باشد:
    cat > backup.yaml <<EOF
    - name: Manage AlloyDB Omni Backups
      hosts: localhost
      vars:
        ansible_become: true
        ansible_user: $SSH_USER
        ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa
      roles:
        - role: google.alloydbomni_orchestrator.backup
    EOF
    
  3. طرح پشتیبان‌گیری را با استفاده از فایل backup.yaml playbook اعمال کنید:
    ansible-playbook backup.yaml -i deployment_spec.yaml -e resource_spec=backup_plan.yaml
    
  4. پس از اینکه طرح با موفقیت ایجاد شد، یک فایل منبع پشتیبان بر اساس تقاضا با نام create_backup.yaml ایجاد کنید.
    cat > create_backup.yaml <<EOF
    Backup:
      metadata:
        name: on-demand-backup
      spec:
        backupPlanRef: pgb-plan
        dbclusterRef: $CLUSTER
    EOF
    
  5. برای شروع پشتیبان‌گیری، playbook را اجرا کنید:
    ansible-playbook backup.yaml -i deployment_spec.yaml -e resource_spec=create_backup.yaml
    
  6. برای تأیید وضعیت پشتیبان، یک playbook با نام status.yaml ایجاد کنید:
- name: Fetch AlloyDB Omni Resource Status
hosts: localhost
vars:
  ansible_become: true
  ansible_user: $SSH_USER
  ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa
roles:
  - role: google.alloydbomni_orchestrator.status
EOF
  1. برای فهرست کردن تمام نسخه‌های پشتیبان ، playbook را اجرا کنید:
ansible-playbook status.yaml -i deployment_spec.yaml -e resource_type=Backup
  1. روش دیگر ، برای دریافت اطلاعات دقیق در مورد یک نسخه پشتیبان خاص که قبلاً ایجاد شده است، از -e resource_name=on-demand-backup استفاده کنید:
ansible-playbook status.yaml -i deployment_spec.yaml \
  -e resource_type=Backup \
  -e resource_name=on-demand-backup

۱۰. منابع پاکسازی

وقتی کار استقرار تمام شد، می‌توانید منابع تأمین‌شده را از بین ببرید تا از تحمیل هزینه‌ها جلوگیری کنید.

  1. یک playbook با نام teardown.yaml ایجاد کنید:
    cat > teardown.yaml <<EOF
    - name: Tear down AlloyDB Omni cluster
      hosts: localhost
      vars:
        ansible_become: true
        ansible_user: $SSH_USER
        ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa
      roles:
      - role: google.alloydbomni_orchestrator.delete
    EOF
    
  2. با استفاده از ansible-playbook، فایل playbook را اجرا کنید. اگر پشتیبان‌گیری پیکربندی کرده‌اید، ابتدا منابع Backup و BackupPlan را حذف کنید:
    ansible-playbook teardown.yaml -i deployment_spec.yaml  -e "resource_type=Backup" -e "resource_name=on-demand-backup"
    ansible-playbook teardown.yaml -i deployment_spec.yaml  -e "resource_type=BackupPlan" -e "resource_name=pgb-plan"
    
    اگر PgBouncer را پیکربندی کرده‌اید، در مرحله بعد منبع connection pooler را حذف کنید:
    ansible-playbook teardown.yaml -i deployment_spec.yaml  -e "resource_type=PgBouncer" -e "resource_name=pgbouncer-pooler"
    
    سپس، DBCluster را به عنوان resource_type مشخص کنید و خود کلاستر پایگاه داده را حذف کنید:
    ansible-playbook teardown.yaml -i deployment_spec.yaml  -e "resource_type=DBCluster" -e "resource_name=$CLUSTER"
    
  3. پس از حذف کلاستر، از گره کنترل خارج شوید، به ترمینال خود برگردید و به دایرکتوری کاری Terraform خود بروید.
    توجه : اگر تازه وارد پوسته ابری شده‌اید، به یاد داشته باشید که این موارد را تنظیم کنید:
    export PROJECT="your-project-id"
    export CLUSTER="your-cluster-name"
    
  4. قانون فایروال VRRP را حذف کنید و منابع مدیریت شده توسط Terraform را از بین ببرید:
    gcloud compute firewall-rules delete -q "$CLUSTER-allow-vrrp" --project="$PROJECT"
    gcloud compute firewall-rules delete -q "$CLUSTER-allow-ssh" --project="$PROJECT"
    terraform destroy
    
  5. در صورت درخواست، تخریب را تأیید کنید. از آنجایی که منابع یا مسیرهای شبکه باقی مانده ممکن است گاهی اوقات مانع از تخریب کامل شوند، دستورات پاکسازی ایمن زیر را اجرا کنید تا مطمئن شوید که تمام قوانین فایروال، دروازه‌های NAT، روترها، مسیرها، زیرشبکه‌ها و شبکه‌ها به طور کامل حذف شده‌اند. REGION با منطقه استقرار خاص خود، مانند 'us-central1'، جایگزین کنید:
    # Delete any remaining firewall rules associated with the cluster
    gcloud compute firewall-rules list --project=$PROJECT 2> /dev/null | grep ^$CLUSTER- | cut -f1 -d' ' | \
      while read rule; do gcloud compute firewall-rules delete --project=$PROJECT --quiet $rule; done
    
    # Delete the Cloud NAT gateway and router if they still exist
    gcloud compute routers nats describe $CLUSTER-nat-gw --router=$CLUSTER-router --region=REGION --project=$PROJECT 2>/dev/null \
      && gcloud compute routers nats delete $CLUSTER-nat-gw --router=$CLUSTER-router --region=REGION --project=$PROJECT --quiet
    
    gcloud compute routers describe $CLUSTER-router --region=REGION --project=$PROJECT 2>/dev/null \
      && gcloud compute routers delete $CLUSTER-router --region=REGION --project=$PROJECT --quiet
    
    # Delete any remaining custom routes
    gcloud compute routes list --project=$PROJECT --filter="network:$CLUSTER" --format="value(name)" 2>/dev/null | \
      while read route; do gcloud compute routes delete --project=$PROJECT --quiet $route 2>/dev/null || true; done
    
    # Delete the subnet and network if they still exist
    gcloud compute networks subnets describe $CLUSTER --region=REGION --project=$PROJECT 2>/dev/null \
      && gcloud compute networks subnets delete $CLUSTER --region=REGION --project=$PROJECT --quiet
    
    gcloud compute networks describe $CLUSTER --project $PROJECT 2> /dev/null \
      && gcloud compute networks delete $CLUSTER --project $PROJECT --quiet
    

۱۱. تبریک

تبریک می‌گویم که آزمایشگاه کد را تمام کردی.

آنچه ما پوشش داده‌ایم

  • نحوه ایجاد و آماده‌سازی ماشین‌های مجازی GCE برای AlloyDB Omni.
  • نحوه نصب و اجرای AlloyDB Omni RPM Orchestrator.
  • نحوه نصب و پیکربندی RPM های AlloyDB Omni برای معماری مرجع HA.

می‌توانید اطلاعات بیشتر در مورد AlloyDB Omni را در مستندات مطالعه کنید.

۱۲. نظرسنجی

چگونه از این آموزش استفاده خواهید کرد؟

فقط آن را بخوانید آن را بخوانید و تمرین‌ها را انجام دهید