RPM Orchestrator ব্যবহার করে GCE VM-এ AlloyDB Omni হাই অ্যাভেলিবিলিটি ক্লাস্টার ডিপ্লয় করা

১. ভূমিকা

এই কোডল্যাব Google Compute Engine (GCE) ভার্চুয়াল মেশিনে (VM) AlloyDB Omni হাই অ্যাভেলিবিলিটি (HA) ক্লাস্টার ডিপ্লয় করার পদ্ধতি দেখায়। এই কোডল্যাব শেষ করার পরে, আপনি ম্যানেজমেন্ট অপারেশন করার জন্য কন্ট্রোল নোড সহ ৩টি ডেটাবেস নোড এবং ২টি HAProxy নোড নিয়ে গঠিত একটি HA রেফারেন্স আর্কিটেকচার প্রোভিশন করবেন।

পূর্বশর্ত

  • Cloud Console থেকে Google Cloud প্রোজেক্ট ও Cloud Shell অ্যাক্সেস করা।
  • Google Cloud SDK (gcloud) ইনস্টল ও কনফিগার করা থাকতে হবে। gcloud ইনস্টল করা সংক্রান্ত বিবরণের জন্য, gcloud-install দেখুন
  • Terraform v1.9.8 ইনস্টল করা আছে।

আপনি কী শিখবেন

  • 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 ডিপ্লয়মেন্ট স্ট্যাক অ্যাক্সেস করা যায় এমন একটি চালু টার্মিনাল। এই উদ্দেশ্যে আপনি ক্লাউড শেল ব্যবহার করতে পারেন।

২. সেট-আপ ও প্রয়োজনীয়তা

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

Google Cloud প্রোজেক্ট তৈরি করা

  1. Google Cloud Console-এ, প্রোজেক্ট বাছাইকারী পৃষ্ঠায়, Google Cloud প্রোজেক্ট বেছে নিন বা তৈরি করুন।
  2. আপনার Cloud প্রোজেক্টের জন্য বিলিং চালু করা আছে কিনা তা ভাল করে দেখে নিন। কোনও প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে চেক করবেন তা জানুন।

Cloud Shell চালু করুন

Google Cloud আপনার ল্যাপটপ থেকে রিমোটলি অপারেট করা গেলেও, এই কোডল্যাবে আপনি Google Cloud Shell ব্যবহার করবেন, এটি হল ক্লাউডে রান করা একটি কমান্ড লাইন এনভায়রনমেন্ট।

Google Cloud Console থেকে, উপরে ডানদিকের টুলবারে Cloud Shell আইকনে ক্লিক করুন:

Cloud Shell অ্যাক্টিভেট করার আইকন

অথবা, আপনি G তারপরে S টিপতে পারেন। আপনি Google Cloud Console-এর মধ্যে থাকলে অথবা এই লিঙ্ক ব্যবহার করলে এই সিকোয়েন্স Cloud Shell অ্যাক্টিভেট করবে।

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

Google Cloud Shell টার্মিনাল দেখাচ্ছে যে এনভায়রনমেন্ট কানেক্ট হয়েছে

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

৩. Google Cloud Compute Engine ভার্চুয়াল মেশিন তৈরি করা

Terraform স্ক্রিপ্ট তৈরি করা

  1. আপনার প্রোজেক্ট আইডি ও পছন্দসই ক্লাস্টারের নামের জন্য এনভায়রনমেন্ট ভেরিয়েবল নির্ধারণ করুন। আপনি কোডল্যাব জুড়ে এগুলি ব্যবহার করবেন।
    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. আপনি Google Cloud অ্যাকাউন্ট ব্যবহারকারী হিসেবে লগ-ইন করেছেন কিনা তা নিশ্চিত করুন।
    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. আপনি এখন VM প্রোভিশন করতে পারবেন।
    terraform init
    
  2. VM তৈরি করার আগে, VM ও অন্যান্য রিসোর্স তৈরি করার জন্য আপনার কাছে প্রয়োজনীয় অ্যাক্সেস আছে কিনা তা নিশ্চিত করুন। এককথায়, আপনার নিম্নলিখিত অনুমতিগুলি লাগবে।
    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
    
    আপনার ৩টি DB নোড, ২টি HAProxy নোড এবং কন্ট্রোল VM ও সংশ্লিষ্ট জোন অনুযায়ী ইনস্ট্যান্স দেখতে পাবেন। কন্ট্রোল নোডের জন্য ZONE রেকর্ড করুন। এই কোডল্যাবের সময়, পরে আমাদের এটি প্রয়োজন হবে।
    export ZONE=$(gcloud compute instances list \
      --filter="name=$CLUSTER-control"          \
      --format="value(zone)" --project=$PROJECT)
    

৪. ডেপ্লয়মেন্টের জন্য VM প্রস্তুত করা

কন্ট্রোল নোডে SSH সেশন তৈরি করতে হবে এবং সব VM-এ (এগুলিকে নোডও বলা হয়) SSH অ্যাক্সেস চালু করার ধাপগুলি সম্পূর্ণ করতে হবে।

  1. আপনার প্রোজেক্ট ও ক্লাস্টারের জন্য এনভায়রনমেন্ট ভেরিয়েবল নির্দিষ্ট করা আছে কিনা তা নিশ্চিত করুন।
    export PROJECT="your-project-id"
    export CLUSTER="your-cluster-name"
    
  2. SSH কী তৈরি করুন এবং কন্ট্রোল VM-এ লগ-ইন করার জন্য সেটি যোগ করুন।
    # 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-এর মাধ্যমে কন্ট্রোল VM-এ কানেক্ট করুন:
    gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECT
    
  5. কন্ট্রোল নোডে ইউজারনেমের মতো একই নামে Linux গ্রুপ তৈরি করুন:
    sudo groupadd -f $(id -un)
    sudo usermod -aG $(id -un) $(id -un)
    
  6. Terraform সেট-আপ কিছু কনফিগারেশন স্ক্রিপ্ট তৈরি করে এবং কন্ট্রোল VM-এর /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 ইনপুট ভেরিয়েবল থেকে আপনার এনভায়রনমেন্টের জন্য একটি ভার্চুয়াল IP ঠিক করুন যাতে এটি অন্য নোডের সাথে কনফ্লিক্ট না করে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
    cat >> ~/.codelab.env <<EOF
    export VIRTUAL_IP="10.1.0.50"
    EOF
    

৫. সব VM-এ প্রয়োজনীয় সফ্টওয়্যার কম্পোনেন্ট ইনস্টল করুন

পরবর্তী ধাপ হল VM-এ প্রয়োজনীয় SW কম্পোনেন্ট ইনস্টল করা। এটি কন্ট্রোল নোডে কোঅর্ডিনেট করা যেতে পারে। নিচে উল্লেখ করা সব কমান্ড কন্ট্রোল নোডে এক্সিকিউট করতে হবে।

  1. কন্ট্রোল নোডে আগে থেকে চালু না থাকলে, SSH-এর মাধ্যমে কন্ট্রোল VM-এ কানেক্ট করুন।
    gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECT
    
    কন্ট্রোল VM ssh প্রম্পটে পৌঁছে গেলে, সোর্স এনভায়রনমেন্ট ফাইল।
    source ~/.codelab.env
    
  2. কন্ট্রোল নোডে, Ansible এবং প্রয়োজনীয় Python লাইব্রেরি ইনস্টল করুন।
    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 কালেকশন tar ফাইল ডাউনলোড করুন এবং সেটি ইনস্টল করুন।
    gcloud storage cp "gs://${ORCHESTRATOR_ANSIBLE_COLLECTION_PATH#https://storage.googleapis.com/}google-alloydbomni_orchestrator-*.tar.gz" .
    COLLECTION_FILE=$(ls -1 google-alloydbomni_orchestrator-*.tar.gz \
      | sort -V | tail -n 1)
    ansible-galaxy collection install "$COLLECTION_FILE"
    ansible-galaxy collection list | grep alloydbomni_orchestrator
    
    sort -V ও tail -n 1 কমান্ড লেটেস্ট ভার্সন সহ ফাইল বেছে নেয়। মনে রাখবেন: 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. অর্কিস্ট্রেটর কালেকশন থেকে ইনস্টল রোল রেফারেন্স করে install.yaml নামে একটি প্লেবুক তৈরি করুন।
    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
    

৬. AlloyDB Omni ক্লাস্টার বুটস্ট্র্যাপ করা

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

  1. কন্ট্রোল নোডে আগে থেকে চালু না থাকলে, SSH-এর মাধ্যমে কন্ট্রোল VM-এ কানেক্ট করুন।
    gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECT
    
    কন্ট্রোল VM ssh প্রম্পটে পৌঁছে গেলে, সোর্স এনভায়রনমেন্ট ফাইল।
    source ~/.codelab.env
    
  2. আপনার পাসওয়ার্ডের জন্য হ্যাশ তৈরি করুন এবং ইনস্টল করা AlloyDB Omni ডেটাবেস ভার্সন ফেচ করুন:
    encoded_password=$(echo -n "your unique password" | base64)
    DB_VERSION=$(/tmp/run-all.sh -t db 'rpm -q --qf "%{VERSION}\n" alloydbomni18' | tail -n 1)
    echo "$DB_VERSION"
    
  3. ক্লাস্টার তৈরি করতে, AlloyDB Omni-কে এটি কীভাবে কনফিগার করতে হয় তা জানতে হবে। DB ক্লাস্টার স্পেসিফিকেশনের জন্য 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: $DB_VERSION
        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
      roles:
      - role: google.alloydbomni_orchestrator.bootstrap
    EOF
    
  5. ক্লাস্টার তৈরি করতে আপনার প্লেবুক রান করান
    ansible-playbook bootstrap.yaml -i deployment_spec.yaml -e resource_spec=dbcluster.yaml
    

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

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

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

Cloud Storage-এ সরাসরি ব্যাক-আপ ম্যানেজ করার জন্য 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 নামের একটি Ansible প্লেবুক তৈরি করুন:
    cat > backup.yaml <<EOF
    - name: Manage AlloyDB Omni Backups
      hosts: localhost
      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 প্লেবুক তৈরি করুন:
cat > status.yaml <<EOF
- name: Fetch AlloyDB Omni Resource Status
  hosts: localhost
  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
      roles:
      - role: google.alloydbomni_orchestrator.delete
    EOF
    
  2. ansible-playbook ব্যবহার করে প্লেবুক এক্সিকিউট করুন। আপনি ব্যাক-আপ কনফিগার করে থাকলে, প্রথমে ব্যাক-আপ ও 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 ওয়ার্ক ডিরেক্টরিতে নেভিগেট করুন।
    মনে রাখবেন: আপনি যদি Cloud Shell-এ নতুন করে লগ-ইন করে থাকেন, তাহলে এগুলি সেট করতে ভুলবেন না:
    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 সম্পর্কে আরও জানতে পারবেন।

১২. সমীক্ষা

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

শুধু এটি পড়ুন এটি পড়ুন এবং অনুশীলন সম্পূর্ণ করুন