Stateful Application এর জন্য Storage ব্যবস্থাপনা

Persistent Storage এবং Volume Management - ওপেনশিফট (OpenShift) - Latest Technologies

298

Stateful Application-এর জন্য Kubernetes এবং OpenShift-এ স্টোরেজ ব্যবস্থাপনা খুবই গুরুত্বপূর্ণ, কারণ stateful অ্যাপ্লিকেশনগুলো ডেটা পারসিস্টেন্স এবং কনসিসটেন্সি বজায় রাখতে নির্ভরশীল। Stateful Application-এর উদাহরণ হিসেবে ডেটাবেস (যেমন MySQL, MongoDB), মেসেজিং সার্ভার (যেমন RabbitMQ), বা অন্য কোনো অ্যাপ্লিকেশন যা কনফিগারেশন ডেটা বা ফাইল সংরক্ষণ করে, উল্লেখ করা যেতে পারে।

Stateful Application-এর স্টোরেজ ব্যবস্থাপনা করতে Kubernetes এবং OpenShift Persistent Volume (PV), Persistent Volume Claim (PVC), এবং StatefulSet ব্যবহার করে। এগুলো স্টোরেজ প্রভিশনিং, ম্যানেজমেন্ট, এবং স্টোরেজের পারসিস্টেন্স নিশ্চিত করতে সহায়ক।

Stateful Application-এর স্টোরেজ ব্যবস্থাপনার উপায়

১. Persistent Volume (PV) এবং Persistent Volume Claim (PVC) ব্যবহার করা। ২. StatefulSet ব্যবহার করে পডের স্টোরেজ এবং ডেটা পারসিস্টেন্স নিশ্চিত করা। ৩. Storage Class এবং Dynamic Provisioning ব্যবহার করে স্বয়ংক্রিয়ভাবে স্টোরেজ প্রভিশন করা। ৪. Headless Service ব্যবহার করে স্টেটফুল অ্যাপ্লিকেশনের পডগুলোর জন্য স্টেবল নেটওয়ার্ক আইডেন্টিটি নিশ্চিত করা।

১. Persistent Volume (PV) এবং Persistent Volume Claim (PVC)

Stateful Application-এর জন্য PV এবং PVC একটি মৌলিক স্টোরেজ মডেল তৈরি করে। PV হলো Kubernetes ক্লাস্টারের জন্য একটি ফিজিক্যাল স্টোরেজ ইউনিট এবং PVC হলো সেই PV-এর স্টোরেজ দাবি করা একটি অবজেক্ট।

উদাহরণ:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-mysql
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: manual
  nfs:
    path: /mnt/data
    server: 192.168.1.100
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-mysql
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: manual

ব্যাখ্যা:

  • PV: pv-mysql নামে একটি NFS শেয়ার ব্যবহার করে ১০Gi স্টোরেজ প্রভিশন করা হয়েছে।
  • PVC: pvc-mysql নামে একটি PVC তৈরি করা হয়েছে, যা pv-mysql PV থেকে ১০Gi স্টোরেজ দাবি করে।

২. StatefulSet ব্যবহার করা

StatefulSet হলো Kubernetes-এর একটি অবজেক্ট, যা stateful অ্যাপ্লিকেশনগুলোর জন্য ব্যবহৃত হয়। StatefulSet এমন অ্যাপ্লিকেশনের জন্য উপযোগী, যেগুলোকে পারসিস্টেন্ট স্টোরেজ, স্টেবল নেটওয়ার্ক আইডেন্টিটি, এবং অর্ডারড ডিপ্লয়মেন্ট ও স্কেলিং প্রয়োজন।

StatefulSet ব্যবহার করে আপনি Stateful Application-এর জন্য ডেডিকেটেড PVC এবং স্টোরেজ মাউন্ট করতে পারেন, যাতে প্রতিটি পডের নিজস্ব পারসিস্টেন্ট ভলিউম থাকে।

StatefulSet-এর উদাহরণ:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql
spec:
  serviceName: "mysql"
  replicas: 3
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.7
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
  volumeClaimTemplates:
  - metadata:
      name: mysql-persistent-storage
    spec:
      accessModes: ["ReadWriteOnce"]
      resources:
        requests:
          storage: 10Gi

ব্যাখ্যা:

  • replicas: ৩টি পড তৈরি করা হয়েছে, যেগুলো প্রতিটি তাদের নিজস্ব স্টোরেজ ব্যবহার করবে।
  • volumeMounts: /var/lib/mysql পাথে স্টোরেজ মাউন্ট করা হয়েছে, যাতে ডেটা পারসিস্ট থাকে।
  • volumeClaimTemplates: প্রতিটি পডের জন্য একটি পারসিস্টেন্ট ভলিউম ক্লেইম তৈরি করা হয়েছে, যাতে প্রতিটি পড তার নিজস্ব স্টোরেজ ব্যবহার করে।

৩. Storage Class এবং Dynamic Provisioning

Storage Class এবং Dynamic Provisioning ব্যবহার করে Kubernetes স্বয়ংক্রিয়ভাবে PV তৈরি করতে পারে। যখন একটি PVC তৈরি হয় এবং সেটিতে একটি স্টোরেজ ক্লাস উল্লেখ করা থাকে, তখন Kubernetes স্বয়ংক্রিয়ভাবে সেই স্টোরেজ ক্লাসের মাধ্যমে উপযুক্ত PV তৈরি করে এবং PVC-এর সাথে সংযুক্ত করে। এটি স্টোরেজ ম্যানেজমেন্টকে আরও সহজ করে।

Storage Class-এর উদাহরণ:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast-storage
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
  zone: us-east-1a
reclaimPolicy: Retain

ব্যাখ্যা:

  • provisioner: kubernetes.io/aws-ebs প্রোভিশনার ব্যবহার করা হয়েছে, যা AWS EBS ভলিউম তৈরি করে।
  • reclaimPolicy: Retain পলিসি ব্যবহার করা হয়েছে, যাতে PV-এর মালিকানা পরিবর্তন হলে এটি সংরক্ষণ করা হয়।

৪. Headless Service ব্যবহার করা

StatefulSet-এর জন্য একটি Headless Service তৈরি করা হয়, যা প্রতিটি পডের জন্য একটি স্টেবল DNS নাম প্রদান করে। এটি পডগুলোর মধ্যে যোগাযোগ এবং ডেটা সিঙ্ক্রোনাইজেশনের জন্য প্রয়োজনীয়।

Headless Service-এর উদাহরণ:

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  clusterIP: None
  selector:
    app: mysql
  ports:
  - port: 3306
    targetPort: 3306

ব্যাখ্যা:

  • clusterIP: None হিসাবে সেট করা হয়েছে, যা এই সার্ভিসকে একটি হেডলেস সার্ভিস হিসেবে তৈরি করে।
  • প্রতিটি পডের নিজস্ব DNS নাম থাকবে, যেমন mysql-0.mysql, mysql-1.mysql ইত্যাদি।

Stateful Application-এর স্টোরেজ ব্যবস্থাপনার সুবিধা

  1. পারসিস্টেন্স: StatefulSet এবং PVC ব্যবহার করে প্রতিটি পডের জন্য পারসিস্টেন্ট স্টোরেজ নিশ্চিত করা যায়, যাতে পড রিস্টার্টের পরেও ডেটা হারিয়ে না যায়।
  2. স্টেবল নেটওয়ার্ক আইডেন্টিটি: Headless Service ব্যবহার করে প্রতিটি পডের জন্য স্টেবল DNS নাম নিশ্চিত করা যায়, যাতে পডগুলোর মধ্যে যোগাযোগ সঠিকভাবে হয়।
  3. ডাইনামিক প্রভিশনিং: Storage Class ব্যবহার করে Kubernetes স্বয়ংক্রিয়ভাবে স্টোরেজ প্রভিশন করতে পারে, যা স্টোরেজ ম্যানেজমেন্টকে আরও সহজ করে।

সংক্ষেপে

বৈশিষ্ট্যব্যবহৃত উপাদানকাজ
স্টোরেজ প্রভিশনিংPV, PVC, Storage Classস্টোরেজ স্পেস বরাদ্দ এবং সংযুক্ত করা
স্টেটফুল ডিপ্লয়মেন্টStatefulSetপডের জন্য স্টোরেজ এবং নেটওয়ার্ক আইডেন্টিটি নিশ্চিত করা
নেটওয়ার্কিংHeadless Serviceপডগুলোর মধ্যে যোগাযোগ নিশ্চিত করা

উপসংহার

Stateful Application-এর জন্য স্টোরেজ ব্যবস্থাপনা Kubernetes এবং OpenShift-এ অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি অ্যাপ্লিকেশনের ডেটা পারসিস্টেন্স এবং কনসিসটেন্সি নিশ্চিত করে। PV, PVC, StatefulSet, এবং Storage Class ব্যবহার করে ডেটাবেস বা অন্য স্টেটফুল অ্যাপ্লিকেশনগুলোকে কার্যকরভাবে ম্যানেজ করা এবং স্কেল করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...