גיבוי אשכולות משתמשים ב-AWS

בדף הזה מוסבר איך לגבות את מאגר הנתונים etcd בהתקנת GKE on AWS כדי לשחזר נתונים מאירועים שעלולים לפגוע בנתוני etcd של האשכול.

מגבלות

  • השימוש בקובץ גיבוי לשחזור נתוני etcd הוא מוצא אחרון. אנחנו לא ממליצים לשחזר מקובץ גיבוי אלא אם האשכול הרוס לחלוטין. כדי לקבל עזרה בהחלטה על דרך הפעולה הטובה ביותר, אפשר לפנות לתמיכה של Google.

  • התהליך הזה לא מגבה נתונים מעומסי העבודה, כולל PersistentVolumes.

  • אי אפשר להשתמש בגיבוי הזה כדי לשחזר אשכול מגרסה אחרת של GKE ב-AWS.

גיבוי של אשכול משתמשים

גיבוי של אשכול משתמשים הוא תמונת מצב של מאגר ה-etcd של אשכול המשתמשים. מאגר etcd מכיל את כל אובייקטי Kubernetes ואובייקטים מותאמים אישית שמייצגים את מצב האשכול. התמונה מכילה את הנתונים שנדרשים כדי ליצור מחדש את עומסי העבודה חסרי המצב של האשכול.

כדי ליצור תמונת מצב של מאגר הנתונים etcd, פועלים לפי השלבים הבאים:

  1. פותחים מעטפת במופע של שירות הניהול שמריץ את etcd עבור האשכול.

    1. מוצאים את כתובת ה-IP של מופע שירות הניהול של האשכול.

      export CLUSTER_ID=$(terraform output cluster_id)
      export MANAGEMENT_IP=$(aws ec2 describe-instances \
        --filters "Name=tag:Name,Values=$CLUSTER_ID-management-0" \
        --query "Reservations[*].Instances[*].PrivateIpAddress" \
        --output text)
      
    2. משתמשים בכלי ssh כדי לפתוח חיבור למופע של שירות הניהול.

      חיבור ישיר

      ssh -i ~/.ssh/anthos-gke ubuntu@$MANAGEMENT_IP
      

      מארח מבוצר

      export BASTION_DNS=$(terraform output bastion_dns_name)
      ssh -i ~/.ssh/anthos-gke -J ubuntu@$BASTION_DNS ubuntu@$MANAGEMENT_IP
      
  2. יוצרים ספרייה לאחסון נתוני הגיבוי של etcd.

    mkdir ./etcd-backups
    
  3. משתמשים בכלי ps של שורת הפקודה כדי למצוא את מזהה התהליך של תהליך etcd במכונה הזו.

    ps -e | grep etcd
    

    בפלט מוצגים פרטים על תהליך etcd. הרכיב הראשון הוא מזהה התהליך של etcd. בשלבים הבאים, מחליפים את ETCD_PID במזהה התהליך הזה.

  4. יוצרים סקריפט במערכת הקבצים של מאגר etcd כדי ליצור snapshot. הסקריפט הזה מריץ את etcdctl כדי להתחבר לדימון etcd ולבצע snapshot כדי לגבות את מסד הנתונים של etcd.

    cat << EOT > /tmp/etcdbackup.sh
    # Extract a snapshot of the anthos-gke etcd state database
    
    export ETCDCTL_API=3
    
    etcdctl \
     --endpoints=https://127.0.0.1:2379 \
     --cacert=/secrets/server-ca.crt \
     --cert=/secrets/server.crt \
     --key=/secrets/server.key \
     snapshot save /tmp/snapshot.db
    EOT
    
    chmod a+x /tmp/etcdbackup.sh
    sudo mv /tmp/etcdbackup.sh /proc/ETCD_PID/root/tmp/etcdbackup.sh
    
  5. משתמשים בפקודה nsenter כדי להריץ את הסקריפט בקונטיינר etcd וליצור את התמונה.

    sudo nsenter --all --target ETCD_PID /tmp/etcdbackup.sh
    
  6. מעתיקים את קובץ התמונה מכלי הקיבול etcd.

    sudo cp /proc/ETCD_PID/root/tmp/snapshot.db ./etcd-backups
    
  7. מעתיקים את כל הקבצים בספרייה ‎ /secrets של מאגר etcd לספריית הגיבוי. הקבצים האלה מכילים את האישורים שמצפינים ומאמתים את התקשורת בין etcd לבין תהליכים אחרים באשכול. ביחד, קובץ התמונה וקובצי האישורים הם גיבוי מלא של סטטוס אשכול etcd.

    sudo cp -r /proc/ETCD_PID/root/secrets ./etcd-backups
    
  8. משתמשים בכלי tar כדי לארוז את קובצי הגיבוי של etc לקובץ tar נוח.

    tar -cvf etcd-backup.tar etcd-backup
    
  9. יוצאים למחשב המקומי ומשתמשים בכלי scp כדי להעתיק את הקובץ etcd-backup.tar ממופע שירות הניהול. בדוגמה הזו נעשה שימוש במשתני הסביבה BASTION_DNS ו-MANAGEMENT_IP שהוגדרו קודם.

    scp -i ~/.ssh/anthos-gke -J ubuntu@$BASTION_DNS \
     ubuntu@$MANAGEMENT_IP:~/etcd-backup/backup.tar
    

למידע נוסף