RPM Orchestrator ব্যবহার করে GCE VM-গুলিতে AlloyDB Omni উচ্চ প্রাপ্যতা ক্লাস্টার স্থাপন করুন।

১. ভূমিকা

এই কোডল্যাবটি গুগল কম্পিউট ইঞ্জিন (GCE) ভার্চুয়াল মেশিন (VM)-এ অ্যালয়ডিবি অমনি হাই অ্যাভেইলেবিলিটি (HA) ক্লাস্টার স্থাপন প্রদর্শন করে। এই কোডল্যাবের শেষে, আপনি ৩টি ডেটাবেস নোড এবং ২টি HAProxy নোডের সমন্বয়ে একটি HA রেফারেন্স আর্কিটেকচার তৈরি করবেন, যার সাথে ব্যবস্থাপনা কার্যক্রমের জন্য একটি কন্ট্রোল নোডও থাকবে।

পূর্বশর্ত

  • ক্লাউড কনসোল থেকে গুগল ক্লাউড প্রজেক্ট এবং ক্লাউড শেল অ্যাক্সেস করা যায়।
  • Google Cloud SDK ( gcloud ) ইনস্টল এবং কনফিগার করা হয়েছে। gcloud ইনস্টল করার বিস্তারিত তথ্যের জন্য, gcloud-install দেখুন।
  • টেরাফর্ম সংস্করণ ১.৯.৮ ইনস্টল করা হয়েছে।

আপনি যা শিখবেন

  • AlloyDB Omni-এর জন্য কীভাবে GCE VM তৈরি ও প্রস্তুত করতে হয়।
  • AlloyDB Omni RPM Orchestrator কীভাবে ইনস্টল এবং রান করবেন
  • HA রেফারেন্স আর্কিটেকচারের জন্য AlloyDB Omni RPM কীভাবে ইনস্টল এবং কনফিগার করবেন।

আপনার যা যা লাগবে

  • AlloyDB Omni RPM এবং RPM অর্কেস্ট্রেটরের URL লিঙ্ক সংগ্রহ করুন। এর জন্য, আপনাকে alloydb omni সাইনআপ ফর্মটি পূরণ করতে হবে। রিপোজিটরি URL সার্ভার থেকে লিঙ্কগুলি আপনার ইমেইলে পাঠানো হবে। কোডল্যাবের সময় ব্যবহারের জন্য URL-গুলি হাতের কাছে রাখতে নিম্নলিখিত এনভায়রনমেন্ট ভেরিয়েবলগুলি ইনিশিয়ালাইজ করুন।
    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 ডেপ্লয়মেন্ট স্ট্যাকে অ্যাক্সেস সহ একটি কার্যকরী টার্মিনাল। এই উদ্দেশ্যে আপনি ক্লাউড শেল ব্যবহার করতে পারেন।

২. সেটআপ এবং প্রয়োজনীয়তা

প্রজেক্ট সেটআপ

একটি গুগল ক্লাউড প্রজেক্ট তৈরি করুন

  1. গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন
  2. আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন, তা জেনে নিন।

ক্লাউড শেল শুরু করুন

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চালিত একটি কমান্ড লাইন পরিবেশ।

গুগল ক্লাউড কনসোল থেকে, উপরের ডানদিকের টুলবারে থাকা ক্লাউড শেল আইকনটিতে ক্লিক করুন:

ক্লাউড শেল সক্রিয় করার আইকন

বিকল্পভাবে আপনি প্রথমে G এবং তারপর S চাপতে পারেন। আপনি যদি গুগল ক্লাউড কনসোলের মধ্যে থাকেন, তাহলে এই ক্রমটি ক্লাউড শেল সক্রিয় করবে অথবা এই লিঙ্কটি ব্যবহার করুন।

পরিবেশটি প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগবে। এটি শেষ হলে, আপনি এইরকম কিছু দেখতে পাবেন:

গুগল ক্লাউড শেল টার্মিনাল দেখাচ্ছে যে পরিবেশটি সংযুক্ত হয়েছে।

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারের মধ্যেই করা যাবে। আপনাকে কিছুই ইনস্টল করতে হবে না।

৩. গুগল ক্লাউড কম্পিউট ইঞ্জিন ভার্চুয়াল মেশিন তৈরি করুন

টেরাফর্ম স্ক্রিপ্ট প্রস্তুত করুন

  1. আপনার প্রজেক্ট আইডি এবং কাঙ্ক্ষিত ক্লাস্টার নামের জন্য এনভায়রনমেন্ট ভেরিয়েবল নির্ধারণ করুন। এই কোডল্যাব জুড়ে আপনাকে এগুলো ব্যবহার করতে হবে।
    export PROJECT="your-project-id"
    export CLUSTER="your-cluster-name"
    
    দ্রষ্টব্য: গুগল ক্লাউড প্রজেক্ট আইডি শুধুমাত্র ৬ থেকে ৩০ অক্ষরের মধ্যে হতে হবে। আরও তথ্যের জন্য, https://docs.cloud.google.com/resource-manager/docs/creating-managing-projects#before_you_begin দেখুন।
  2. নিশ্চিত করুন যে আপনি গুগল ক্লাউড অ্যাকাউন্ট ব্যবহারকারী হিসেবে লগ ইন করেছেন।
    gcloud auth login
    
  3. আপনার ডেপ্লয়মেন্টের জন্য একটি ওয়ার্কিং ডিরেক্টরি তৈরি করুন এবং আপনার রিপোজিটরি সোর্স থেকে প্রয়োজনীয় টেরাফর্ম কনফিগারেশন ফাইলগুলো কপি করুন।
    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
    

টেরাফর্ম স্ক্রিপ্টগুলো চালান এবং যাচাই করুন

  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 v1.9.8 ব্যবহার করছেন।
  4. Terraform-এর কাজ শেষ হলে, gcloud ব্যবহার করে তৈরি হওয়া ইনস্ট্যান্সগুলোর তালিকা দেখে ভার্চুয়াল মেশিনগুলো সফলভাবে তৈরি হয়েছে কিনা তা যাচাই করুন।
    gcloud compute instances list --filter="name~$CLUSTER" --project=$PROJECT
    
    আপনি আপনার ৩টি ডিবি নোড, ২টি এইচএপ্রক্সি নোড, এবং কন্ট্রোল ভিএম ও সংশ্লিষ্ট জোনগুলোর ইনস্ট্যান্স দেখতে পাবেন। কন্ট্রোল নোডটির জোন (ZONE) রেকর্ড করে রাখুন। এই কোডল্যাবের পরবর্তী অংশে আমাদের এটির প্রয়োজন হবে।
    export ZONE=$(gcloud compute instances list \
      --filter="name=$CLUSTER-control"          \
      --format="value(zone)" --project=$PROJECT)
    

৪. ডেপ্লয়মেন্টের জন্য ভিএমগুলো প্রস্তুত করুন।

আপনাকে কন্ট্রোল নোডে একটি SSH সেশন তৈরি করতে হবে এবং সমস্ত VM-গুলিতে (যেগুলোকে নোডও বলা হয়) 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. টেরাফর্ম সেটআপ কয়েকটি কনফিগারেশন স্ক্রিপ্ট তৈরি করে এবং সেগুলোকে কন্ট্রোল ভিএম-এর /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
    
    terraform/variables.tf ফাইলের cidr_range ইনপুট ভেরিয়েবল থেকে আপনার এনভায়রনমেন্টের জন্য এমন একটি ভার্চুয়াল আইপি নির্ধারণ করুন, যা অন্য নোডগুলোর সাথে সাংঘর্ষিক না হয়, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
    cat >> ~/.codelab.env <<EOF
    export VIRTUAL_IP="10.1.0.50"
    EOF
    

৫. সমস্ত ভিএম-এ প্রয়োজনীয় সফ্টওয়্যার উপাদানগুলি ইনস্টল করুন।

পরবর্তী ধাপ হলো ভিএমগুলোতে প্রয়োজনীয় সফটওয়্যার কম্পোনেন্টগুলো ইনস্টল করা। এই কাজটি কন্ট্রোল নোড থেকে সমন্বয় করা যেতে পারে। নিচের সমস্ত কমান্ড কন্ট্রোল নোডে চালাতে হবে।

  1. যদি ইতিমধ্যে কন্ট্রোল নোডে সংযুক্ত না থাকেন, তবে SSH-এর মাধ্যমে কন্ট্রোল ভিএম-এ সংযোগ করুন।
    gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECT
    
    একবার আপনি কন্ট্রোল ভিএম-এর এসএসএইচ প্রম্পটে প্রবেশ করলে, এনভায়রনমেন্ট ফাইলটি সোর্স করুন।
    source ~/.codelab.env
    
  2. কন্ট্রোল নোডে অ্যানসিবল এবং প্রয়োজনীয় পাইথন লাইব্রেরিগুলো ইনস্টল করুন।
    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. এরপর, RPM Orchestrator Ansible collection tar ফাইলটি ডাউনলোড করে ইনস্টল করুন।
    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. অর্কেস্ট্রেটর আপনার ক্লাস্টার টপোলজি বোঝার জন্য অ্যানসিবল ইনভেন্টরি ফরম্যাটে একটি ডেপ্লয়মেন্ট স্পেসিফিকেশন ফাইল ব্যবহার করে। কন্ট্রোল নোডে আপনার নোডের বিবরণ দিয়ে 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. install.yaml নামে একটি প্লেবুক তৈরি করুন যা অর্কেস্ট্রেটর কালেকশন থেকে install রোলটিকে রেফারেন্স করে।
    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. আপনার ইনভেন্টরি ফাইল ব্যবহার করে প্লেবুকটি চালান, যাতে নির্দিষ্ট সমস্ত নোড জুড়ে RPM-গুলো ডাউনলোড ও ইনস্টল হয়।
    ansible-playbook -i deployment_spec.yaml install.yaml
    

৬. বুটস্ট্র্যাপ অ্যালয়ডিবি অমনি ক্লাস্টার

এই পর্যায়ে, আমরা সমস্ত নোডে প্রয়োজনীয় সকল উপাদান ইনস্টল করেছি। আমরা এখন অ্যালয়ডিবি অমনি ক্লাস্টার বুটস্ট্র্যাপ করার জন্য প্রস্তুত।

  1. যদি ইতিমধ্যে কন্ট্রোল নোডে সংযুক্ত না থাকেন, তবে SSH-এর মাধ্যমে কন্ট্রোল ভিএম-এ সংযোগ করুন।
    gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECT
    
    একবার আপনি কন্ট্রোল ভিএম-এর এসএসএইচ প্রম্পটে প্রবেশ করলে, এনভায়রনমেন্ট ফাইলটি সোর্স করুন।
    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. bootstrap.yaml নামে একটি প্লেবুক তৈরি করুন, যা AlloyDB Omni ক্লাস্টার তৈরির জন্য বুটস্ট্র্যাপ অ্যানসিবল রোলকে নির্দেশ করবে।
    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. ক্লাস্টার তৈরি করতে আপনার প্লেবুকটি চালান।
    ansible-playbook bootstrap.yaml -i deployment_spec.yaml -e resource_spec=dbcluster.yaml
    

৭. (ঐচ্ছিক) পিজিবাউন্সার কানেকশন পুলার কনফিগার করুন

AlloyDB Omni, PgBouncer ব্যবহার করে লাইটওয়েট কানেকশন পুলিং সমর্থন করে। আপনার ক্লাস্টার প্রোভিশন করার ঠিক পরেই আপনি PgBouncer কনফিগার এবং বুটস্ট্র্যাপ করতে পারেন।

  1. pgbouncer.yaml নামে একটি রিসোর্স স্পেসিফিকেশন ফাইল তৈরি করুন যা কানেকশন পুলারকে আপনার ডাটাবেস ক্লাস্টারের সাথে যুক্ত করবে:
    cat > pgbouncer.yaml <<EOF
    PgBouncer:
      metadata:
        name: pgbouncer-pooler
      spec:
        dbclusterRef: $CLUSTER
        allowSuperUserAccess: true
        accessMode: "rw"
        port: 6432
    EOF
    
  2. পূর্বে তৈরি করা একই bootstrap.yaml প্লেবুক ব্যবহার করে এবং নতুন স্পেসিফিকেশন ফাইলটি পাস করে PgBouncer পুলারটি বুটস্ট্র্যাপ করুন:
    ansible-playbook bootstrap.yaml -i deployment_spec.yaml -e resource_spec=pgbouncer.yaml
    

৮. AlloyDB Omni ক্লাস্টার যাচাই করুন

আপনার ক্লাস্টারটি সঠিকভাবে কাজ করছে এবং লোড ব্যালেন্সার ব্যবহার করে অ্যাক্সেসযোগ্য কিনা তা যাচাই করতে, আপনি কন্ট্রোল নোড থেকে স্ট্যান্ডার্ড 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. পূর্বে সংরক্ষিত ভার্চুয়াল আইপি ব্যবহার করে ক্লাস্টারে সংযোগ করুন। আপনাকে dbcluster.yaml- এ এনকোড করা পাসওয়ার্ডটি দিতে বলা হবে।
    /usr/pgsql-18/bin/psql -h $VIRTUAL_IP -U postgres -W
    
  3. একবার সংযুক্ত হয়ে গেলে, আপনি ক্লাস্টারের অবস্থা যাচাই করার জন্য সাধারণ SQL কোয়েরি চালাতে পারেন, যেমন—ডাটাবেসের সংস্করণ পরীক্ষা করা:
    postgres=# SELECT version();
    
    আপনি এমন একটি আউটপুট দেখতে পাবেন যা নির্দেশ করে যে AlloyDB Omni সহ PostgreSQL 18 চলছে। প্রম্পট থেকে বের হতে \q টাইপ করুন।

৯. (ঐচ্ছিক) pgBackRest ব্যবহার করে ডেটা ব্যাক আপ করুন।

AlloyDB Omni সরাসরি ক্লাউড স্টোরেজে ব্যাকআপ পরিচালনা করার জন্য pgBackRest-এর সাথে সমন্বিত হয়। আপনি একটি ব্যাকআপ প্ল্যান কনফিগার করতে পারেন এবং আপনার Terraform সেটআপ দ্বারা তৈরি GCS বাকেটে একটি অন-ডিমান্ড ব্যাকআপ চালু করতে পারেন।

  1. আপনার প্রোভিশন করা GCS বাকেটকে নির্দেশ করে backup_plan.yaml নামে একটি ব্যাকআপ প্ল্যান স্পেসিফিকেশন ফাইল তৈরি করুন:
    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. 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 প্লেবুক ব্যবহার করে ব্যাকআপ প্ল্যানটি প্রয়োগ করুন:
    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. ব্যাকআপ শুরু করতে প্লেবুকটি চালান:
    ansible-playbook backup.yaml -i deployment_spec.yaml -e resource_spec=create_backup.yaml
    
  6. ব্যাকআপের অবস্থা যাচাই করতে, একটি 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. সমস্ত ব্যাকআপের তালিকা পেতে প্লেবুকটি চালান:
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. 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 ব্যবহার করে প্লেবুকটি চালান। যদি আপনি ব্যাকআপ কনফিগার করে থাকেন, তাহলে প্রথমে 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 কনফিগার করে থাকেন, তাহলে এরপর কানেকশন পুলার রিসোর্সটি ডিলিট করুন:
    ansible-playbook teardown.yaml -i deployment_spec.yaml  -e "resource_type=PgBouncer" -e "resource_name=pgbouncer-pooler"
    
    তারপর, resource_type হিসেবে DBCluster নির্দিষ্ট করুন এবং ডাটাবেস ক্লাস্টারটি নিজেই মুছে ফেলুন:
    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
    

১১. অভিনন্দন

কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন।

আমরা যা আলোচনা করেছি

  • AlloyDB Omni-এর জন্য কীভাবে GCE VM তৈরি ও প্রস্তুত করতে হয়।
  • AlloyDB Omni RPM Orchestrator কীভাবে ইনস্টল এবং রান করবেন
  • HA রেফারেন্স আর্কিটেকচারের জন্য AlloyDB Omni RPM কীভাবে ইনস্টল এবং কনফিগার করবেন।

আপনি ডকুমেন্টেশনে AlloyDB Omni সম্পর্কে আরও পড়তে পারেন।

১২. জরিপ

আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?

শুধু একবার পড়ে দেখুন এটি পড়ুন এবং অনুশীলনগুলো সম্পূর্ণ করুন।