הגדרת מופע של אשכול מעבר לגיבוי בענן של SQL Server שמשתמש ב-Storage Spaces Direct

‫Microsoft SQL Server Always On Failover Cluster Instances ‏(FCI) מאפשרות להפעיל מכונה אחת של SQL Server בכמה צמתים של Windows Server Failover Cluster ‏(WSFC). בכל נקודת זמן, אחד מצמתי האשכול מארח באופן פעיל את מופע ה-SQL. במקרה של כשל, WSFC מעביר אוטומטית את הבעלות על המשאבים של המופע לצומת אחר.

כדי שיהיה אפשר לגשת לנתונים בכל הצמתים של WSFC, צריך למקם אותם באחסון משותף ב-SQL Server FCI. במדריך הזה מוסבר איך אפשר לפרוס מופע של אשכול מעבר לגיבוי בעת כשל של SQL Server 2019 שמשתמש ב-Storage Spaces Direct ‏(S2D) לאחסון משותף. ‫S2D מספקת SAN וירטואלי מבוסס-תוכנה שיכול להשתמש בדיסקים של נתונים במכונות וירטואליות של Compute Engine כדי לאחסן את מסד הנתונים של SQL.

התרשים הבא מדגים את הפריסה:

ארכיטקטורה

בארכיטקטורה היפר-קונברגנטית, המכונות הווירטואליות node-1 ו-node-2 משמשות כצמתים של WSFC ומארחות גם את האחסון המשותף. מכונה וירטואלית שלישית, witness, משמשת להשגת קוורום בתרחיש של מעבר לגיבוי. שלוש המכונות הווירטואליות מפוזרות על פני שלושה אזורים ומשתפות רשת משנה משותפת.

הלקוחות מתקשרים עם מופע SQL Server באמצעות מאזן עומסים פנימי מסוג TCP. מאזן העומסים הזה משתמש בבדיקת תקינות מותאמת אישית כדי לקבוע איזו נקודת WSFC מארחת כרגע את מופע ה-SQL, ומנתב את התעבורה למופע הזה.

ההנחה במאמר הזה היא שכבר פרסתם את Active Directory ב-Google Cloud ושיש לכם ידע בסיסי ב-SQL Server, ב-Active Directory וב-Compute Engine.

מטרות

  • פריסת WSFC שכולל שני מופעים של מכונות וירטואליות של SQL Server ומופע שלישי של מכונה וירטואלית שמשמש כעדות לשיתוף קבצים.
  • פורסים SQL Server FCI ב-WSFC.
  • כדי לוודא שהאשכול פועל, מדמים מעבר לגיבוי.

עלויות

במדריך הזה נעשה שימוש ברכיבים של Google Cloud, והשימוש בהם כרוך בתשלום, כולל:

אתם יכולים להשתמש במחשבון התמחור כדי ליצור הערכת עלויות בהתאם לשימוש החזוי.

לפני שמתחילים

כדי להשלים את המדריך הזה, אתם צריכים:

כדי להשלים את ההדרכה, צריך גם Google Cloud פרויקט:

  1. נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

כדי להימנע מחיובים נוספים אחרי שסיימתם את המדריך, תוכלו למחוק את המשאבים שיצרתם. מידע נוסף זמין במאמר בנושא הסרת המשאבים.

הכנת הפרויקט והרשת

כדי להכין את פרויקט Google Cloud ואת ה-VPC לפריסה של SQL Server FCI, צריך לבצע את הפעולות הבאות:

  1. במסוף Google Cloud , לוחצים על הלחצן Activate Cloud Shell מפעילים את Cloud Shell. כדי לפתוח את Cloud Shell.

    כניסה ל Google Cloud מסוף

  2. מאתחלים את המשתנים הבאים:

    VPC_NAME=VPC_NAME
    SUBNET_NAME=SUBNET_NAME
    

    כאשר:

    • ‫VPC_NAME: השם של ה-VPC
    • ‫SUBNET_NAME: השם של רשת המשנה
  3. מגדירים את מזהה הפרויקט שמוגדר כברירת מחדל:

    gcloud config set project PROJECT_ID
    

    מחליפים את PROJECT_ID במזהה הפרויקט. Google Cloud

  4. מגדירים את האזור שמוגדר כברירת מחדל:

    gcloud config set compute/region REGION
    

    מחליפים את REGION במזהה של האזור שבו רוצים לבצע פריסה.

יצירת כללים לחומת האש

כדי לאפשר ללקוחות להתחבר ל-SQL Server, לאפשר תקשורת בין הצמתים של WSFC ולבצע בדיקות תקינות במאזן העומסים, צריך ליצור כמה כללים של חומת האש. כדי לפשט את יצירת הכללים האלה בחומת האש, משתמשים בתגי רשת:

  • שני הצמתים של WSFC מסומנים בתג wsfc-node.
  • כל השרתים (כולל השרת העד) מתויגים בתג wsfc.

יוצרים כללים לחומת האש שמשתמשים בתגי הרשת האלה:

  1. חוזרים לסשן הקיים של Cloud Shell.
  2. יוצרים כללים לחומת האש עבור צמתי ה-WSFC:

    SUBNET_CIDR=$(gcloud compute networks subnets describe $SUBNET_NAME --format=value\('ipCidrRange'\))
    
    gcloud compute firewall-rules create allow-all-between-wsfc-nodes \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp,udp,icmp \
      --enable-logging \
      --source-tags=wsfc \
      --target-tags=wsfc \
      --network=$VPC_NAME \
      --priority 10000
    
    gcloud compute firewall-rules create allow-sql-to-wsfc-nodes \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp:1433 \
      --enable-logging \
      --source-ranges=$SUBNET_CIDR \
      --target-tags=wsfc-node \
      --network=$VPC_NAME \
      --priority 10000
    
  3. יוצרים כלל חומת אש שמאפשר בדיקות תקינות מטווחי כתובות ה-IP של כלי הבדיקה של Google Cloud:

    gcloud compute firewall-rules create allow-health-check-to-wsfc-nodes \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp \
      --source-ranges=130.211.0.0/22,35.191.0.0/16 \
      --target-tags=wsfc-node \
      --network=$VPC_NAME \
      --priority 10000
    

יצירת מכונות וירטואליות

עכשיו פורסים שתי מכונות וירטואליות לאשכול המעבר לגיבוי. בכל נקודת זמן, רק אחת מהמכונות הווירטואליות האלה משמשת כצומת FCI פעיל, והצומת השני משמש כצומת מעבר לגיבוי. שני מופעי מכונות וירטואליות צריכים לעמוד בדרישות הבאות:

  • הם ממוקמים באותו אזור כדי שמאזן עומסים פנימי של TCP יוכל לגשת אליהם.
  • סוכן האורח שלהם מוגדר לשימוש במצב WSFC. במצב הזה, הסוכן של מערכת ההפעלה האורחת מתעלם מכתובות ה-IP של מאזני עומסים פנימיים כשהוא מגדיר את ממשק הרשת המקומי. ההתנהגות הזו נדרשת כדי למנוע התנגשויות של כתובות IP במהלך אירועי מעבר לגיבוי בעת כשל ב-WSFC.

משתמשים בקובץ אימג' של SQL Server Premium שבו מותקן מראש SQL Server 2019.

כדי לספק קול מכריע ולהשיג קוורום בתרחיש של מעבר לגיבוי, צריך לפרוס מכונה וירטואלית שלישית שתשמש כעדות לשיתוף קבצים.

  1. חוזרים לסשן הקיים של Cloud Shell.
  2. יוצרים סקריפט מיוחד לצמתי WSFC. הסקריפט מתקין את התכונה הנדרשת של Windows ויוצר כללי חומת אש עבור WSFC ו-SQL Server:

    cat << "EOF" > specialize-node.ps1
    
    $ErrorActionPreference = "stop"
    
    # Install required Windows features
    Install-WindowsFeature Failover-Clustering -IncludeManagementTools
    Install-WindowsFeature RSAT-AD-PowerShell
    
    # Open firewall for WSFC
    netsh advfirewall firewall add rule name="Allow SQL Server health check" dir=in action=allow protocol=TCP localport=59997
    
    # Open firewall for SQL Server
    netsh advfirewall firewall add rule name="Allow SQL Server" dir=in action=allow protocol=TCP localport=1433
    
    EOF
    
  3. יוצרים את המכונות הווירטואליות. ב-2 המכונות הווירטואליות שמשמשות כצמתים של S2D ו-WSFC, מצרפים דיסקים נוספים של נתונים ומפעילים את מצב WSFC על ידי הגדרת מפתח המטא-נתונים enable-wsfc לערך true:

    REGION=$(gcloud config get-value compute/region)
    PD_SIZE=50
    MACHINE_TYPE=n2-standard-8
    
    gcloud compute instances create node-1 \
      --zone $REGION-a \
      --machine-type $MACHINE_TYPE \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2019-win-2022 \
      --image-project windows-sql-cloud \
      --tags wsfc,wsfc-node \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd \
      --boot-disk-device-name "node-1" \
      --create-disk=name=node-1-datadisk-1,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-1-datadisk-2,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-1-datadisk-3,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-1-datadisk-4,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create node-2 \
      --zone $REGION-b \
      --machine-type $MACHINE_TYPE \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2019-win-2022 \
      --image-project windows-sql-cloud \
      --tags wsfc,wsfc-node \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd \
      --boot-disk-device-name "node-2" \
      --create-disk=name=node-2-datadisk-1,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-2-datadisk-2,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-2-datadisk-3,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-2-datadisk-4,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create "witness" \
      --zone $REGION-c \
      --machine-type n2-standard-2 \
      --subnet $SUBNET_NAME \
      --image-family=windows-2022 \
      --image-project=windows-cloud \
      --tags wsfc \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd \
      --metadata sysprep-specialize-script-ps1="add-windowsfeature FS-FileServer"
    
  4. כדי לצרף את 3 המכונות הווירטואליות ל-Active Directory, מבצעים את הפעולות הבאות לכל אחת מ-3 המכונות הווירטואליות:

    1. כדי לעקוב אחרי תהליך האתחול של המכונה הווירטואלית, אפשר לצפות בפלט של היציאה הטורית שלה:

      gcloud compute instances tail-serial-port-output NAME
      

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

      מחכים כמה דקות עד שרואים את הפלט Instance setup finished, ואז לוחצים על Ctrl+C. בשלב הזה, המכונה הווירטואלית מוכנה לשימוש.

    2. יצירת שם משתמש וסיסמה למכונה הווירטואלית

    3. מתחברים למכונה הווירטואלית באמצעות Remote Desktop ומתחברים באמצעות שם המשתמש והסיסמה שנוצרו בשלב הקודם.

    4. לוחצים לחיצה ימנית על Start (או מקישים על Win+X) ואז לוחצים על Windows PowerShell (Admin).

    5. לוחצים על כן כדי לאשר את ההנחיה להעלאת הרשאות.

    6. מצטרפים עם המחשב לדומיין Active Directory ומפעילים מחדש:

      Add-Computer -Domain DOMAIN -Restart
      

      מחליפים את DOMAIN בשם ה-DNS של דומיין Active Directory.

      מחכים כדקה עד שההפעלה מחדש תסתיים.

שמירת כתובות IP של אשכול

עכשיו אתם יכולים להזמין שתי כתובות IP סטטיות ברשת ה-VPC. לשתי הכתובות יש מטרות שונות:

  • כתובת ה-IP של מאזן העומסים: כתובת ה-IP הזו משמשת את הלקוחות להתחברות ל-SQL Server.
  • כתובת IP של אשכול: כתובת ה-IP הזו משמשת רק באופן פנימי על ידי WSFC.

כדי לשמור את כתובות ה-IP הסטטיות:

  1. שומרים כתובת IP סטטית למאזן העומסים הפנימי ומקליטים את הכתובת במשתנה סביבה חדש בשם LOADBALANCER_ADDRESS:

    gcloud compute addresses create wsfc \
      --subnet $SUBNET_NAME \
      --region $(gcloud config get-value compute/region)
    
    LOADBALANCER_ADDRESS=$(gcloud compute addresses describe wsfc \
      --region $(gcloud config get-value compute/region) \
      --format=value\(address\)) && \
    echo "Load Balancer IP: $LOADBALANCER_ADDRESS"
    

    חשוב לשים לב לכתובת ה-IP, כי תצטרכו אותה בהמשך.

  2. שומרים כתובת IP סטטית אחרת שמשמשת ככתובת IP של האשכול:

    gcloud compute addresses create wsfc-cluster \
      --subnet $SUBNET_NAME \
      --region $(gcloud config get-value compute/region) && \
    CLUSTER_ADDRESS=$(gcloud compute addresses describe wsfc-cluster \
        --region $(gcloud config get-value compute/region) \
        --format=value\(address\)) && \
    echo "Cluster IP: $CLUSTER_ADDRESS"
    

    חשוב לשים לב לכתובת ה-IP, כי תצטרכו אותה בהמשך.

הפרויקט וה-VPC מוכנים עכשיו לפריסה של WSFC ו-SQL Server.

יצירת שיתוף קבצים של עדים

כדי להכין את witness לשמש כעדות לשיתוף קבצים, צריך ליצור שיתוף קבצים ולהעניק לעצמכם ולשני הצמתים של WSFC גישה לשיתוף הקבצים:

  1. מתחברים אל witness באמצעות Remote Desktop. מתחברים באמצעות חשבון המשתמש בדומיין.
  2. לוחצים לחיצה ימנית על Start (או מקישים על Win+X) ואז לוחצים על Windows PowerShell (Admin).
  3. לוחצים על כן כדי לאשר את ההנחיה להעלאת הרשאות.
  4. יוצרים את תיקיית העדים ומשתפים אותה:

    New-Item "C:\QWitness" -Type directory
    
    icacls C:\QWitness\ /grant 'node-1$:(OI)(CI)(M)'
    icacls C:\QWitness\ /grant 'node-2$:(OI)(CI)(M)'
    
    New-SmbShare `
      -Name QWitness `
      -Path "C:\QWitness" `
      -Description "SQL File Share Witness" `
      -FullAccess  $env:username,node-1$,node-2$
    

פריסת אשכול המעבר לגיבוי

עכשיו משתמשים במכונות הווירטואליות כדי לפרוס WSFC ו-SQL Server.

פריסת WSFC

עכשיו אפשר ליצור את אשכול הגיבוי:

  1. מתחברים אל node-1 באמצעות Remote Desktop. מתחברים באמצעות חשבון המשתמש בדומיין.
  2. לוחצים לחיצה ימנית על Start (או מקישים על Win+X) ואז לוחצים על Windows PowerShell (Admin).
  3. לוחצים על כן כדי לאשר את ההנחיה להעלאת הרשאות.
  4. יוצרים אשכול חדש:

    New-Cluster `
      -Name windows-fci `
      -Node node-1,node-2 `
      -NoStorage `
      -StaticAddress CLUSTER_ADDRESS
    

    מחליפים את CLUSTER_ADDRESS בכתובת ה-IP של האשכול שיצרתם קודם.

    הפקודה יוצרת חשבון מחשב windows-fci בדומיין של Active Directory.

  5. חוזרים לסשן PowerShell ב-witness ומעניקים לחשבון המחשב windows-fci הרשאה לגשת לשיתוף הקבצים:

    icacls C:\QWitness\ /grant 'windows-fci$:(OI)(CI)(M)'
    Grant-SmbShareAccess `
      -Name QWitness `
      -AccountName 'windows-fci$' `
      -AccessRight Full `
      -Force
    
  6. חוזרים להפעלת PowerShell ב-node-1 ומגדירים את האשכול כך שישתמש בשיתוף הקבצים ב-witness כקבוצת קוורום של האשכול:

    Set-ClusterQuorum -FileShareWitness \\witness\QWitness
    
  7. מוודאים שהאשכול נוצר בהצלחה:

    Test-Cluster
    

    יכול להיות שיופיעו אזהרות שאפשר להתעלם מהן בבטחה:

    WARNING: System Configuration - Validate All Drivers Signed: The test reported some warnings..
    WARNING: Network - Validate Network Communication: The test reported some warnings..
    WARNING:
    Test Result:
    HadUnselectedTests, ClusterConditionallyApproved
    Testing has completed for the tests you selected. You should review the warnings in the Report.  A cluster solution is
    supported by Microsoft only if you run all cluster validation tests, and all tests succeed (with or without warnings).
    

    אפשר גם להפעיל את התוסף Failover Cluster Manager MMC כדי לבדוק את תקינות האשכול על ידי הפעלת הפקודה cluadmin.msc.

  8. אם אתם משתמשים ב-Managed AD, אתם צריכים להוסיף את חשבון המחשב שבו נעשה שימוש ב-WSFC לקבוצה Cloud Service Domain Join Accounts כדי שהמחשב יוכל להצטרף לדומיין:

    Install-WindowsFeature RSAT-ADDS
    Add-ADGroupMember `
      -Identity "Cloud Service Domain Join Accounts" `
      -Members windows-fci$
    

הפעלת Storage Spaces Direct

עכשיו מפעילים את S2D ויוצרים נפח אחסון משותף של אשכול, שמשלב את שלושת הדיסקים הקבועים שיצרתם קודם:

  1. חוזרים לסשן PowerShell ב-node-1.
  2. הפעלת S2D:

    Enable-ClusterStorageSpacesDirect
    

    אם רוצים לשפר את הביצועים של הדיסק, אפשר להוסיף אחסוני SSD מקומיים מסוג SCSI לצמתי S2D בנוסף לדיסקים מתמידים סטנדרטיים שמבוססים על SSD. כונני ה-SSD המקומיים יכולים לשמש כשכבת מטמון של S2D. מספר כונני הקיבולת (במקרה שלנו, דיסקים לאחסון מתמיד מסוג SSD) צריך להיות כפולה של מספר כונני ה-SSD המקומיים. במקום זאת, מריצים את הפקודה הבאה כדי להפעיל את S2D עם שמירת נתונים במטמון:

    Enable-ClusterStorageSpacesDirect -CacheDeviceModel "EphemeralDisk"
    

    כשמוצגת בקשה לאישור, מאשרים את ברירת המחדל. יכול להיות שיופיעו אזהרות שאפשר להתעלם מהן בבטחה:

    WARNING: 2021/04/08-13:12:26.159 Node node-1: No disks found to be used for cache
    WARNING: 2021/04/08-13:12:26.159 Node node-2: No disks found to be used for cache
    
  3. אופציונלית, מגדירים את הזיכרון במטמון של Cluster Shared Volume ‏ (CSV) ל-2048MB כדי לשפר את קצב העברת הנתונים לקריאה:

    (Get-Cluster).BlockCacheSize = 2048
    
  4. יוצרים אמצעי אחסון חדש שמשתמש בגרסאות של ReFS של אמצעי אחסון משותף של אשכולות ובגודל אשכול של 64KB:

    New-Volume `
      -StoragePoolFriendlyName S2D* `
      -FriendlyName FciVolume `
      -FileSystem CSVFS_ReFS `
      -UseMaximumSize `
      -AllocationUnitSize 65536
    

בדיקת מעבר לשירות זמין במקרה של כשל במאגר אחסון

אופציונלי: עכשיו אפשר לבדוק אם המעבר לגיבוי (failover) של מאגר האחסון פועל כמו שצריך:

  1. מתחברים אל node-2 באמצעות Remote Desktop. מתחברים באמצעות חשבון המשתמש בדומיין.
  2. לוחצים לחיצה ימנית על Start (או מקישים על Win+X) ובוחרים באפשרות Run.
  3. מזינים cluadmin.msc ולוחצים על אישור.
  4. בחלונית הימנית, עוברים אל Failover Cluster Manager > windows-fci > Storage > Pools.

    אמור להופיע מאגר בשם Cluster Pool 1 עם Owner node שמוגדר ל-node-1.

  5. חוזרים אל Cloud Shell ומאפסים את מכונת ה-VM node-1 כדי לדמות מעבר לגיבוי:

    gcloud compute instances reset node-1 --zone $REGION-a
    
  6. חוזרים אל Failover Cluster Manager ב-node-2.

  7. כדי לרענן את התצוגה, לוחצים שוב ושוב על F5 כדי לראות את הסטטוס של מאגר האחסון.

    אחרי כ-30 שניות, צומת הבעלים אמור לעבור אוטומטית אל node-2.

הסרת ההתקנה של SQL Server שמוגדרת כברירת מחדל

עכשיו מסירים את התקנת ברירת המחדל של SQL Server משני הצמתים ומחליפים אותה בהגדרת FCI חדשה.

לכל אחד משני הצמתים של WSFC, ‏ node-1 ו-node-2, מבצעים את השלבים הבאים:

  1. לוחצים לחיצה ימנית על Start (או מקישים על Win+X) ואז לוחצים על Windows PowerShell (Admin).
  2. לוחצים על כן כדי לאשר את ההנחיה להעלאת הרשאות.
  3. מסירים את המכונה של SQL Server שמוגדרת כברירת מחדל:

    C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
    
  4. הסרת מנהל התקן של Microsoft OLE:

    Get-Package -Name "Microsoft OLE*" | Uninstall-Package -Force
    
  5. הסרת מנהל התקן Microsoft ODBC:

    Get-Package -Name "Microsoft ODBC*" | Uninstall-Package -Force
    
  6. מפעילים מחדש את המחשב:

    Restart-Computer
    
  7. מחכים כדקה עד שההפעלה מחדש תסתיים.

התקנת SQL Server FCI

לפני שמתקינים את הגדרת ה-FCI החדשה, צריך לוודא ש-node-1 הוא הצומת הפעיל באשכול:

  1. מתחברים מחדש אל node-1 באמצעות Remote Desktop ונכנסים באמצעות המשתמש בדומיין.
  2. לוחצים לחיצה ימנית על Start (או מקישים על Win+X) ובוחרים באפשרות Run.
  3. מזינים cluadmin.msc ולוחצים על אישור.
  4. בחלונית הימנית, עוברים אל Failover Cluster Manager > windows-fci.

    מוודאים שהשרת המארח הנוכחי מוגדר ל-node-1.

    אם current host server מוגדר ל-node-2, לוחצים לחיצה ימנית על windows-fci בחלונית הימנית ובוחרים באפשרות More actions > Move core cluster resources > Select node… > node-1 ואז לוחצים על OK.

  5. בחלונית הימנית, עוברים אל Failover Cluster Manager > windows-fci > Storage > Pools.

    מוודאים שצומת הבעלים של Cluster Pool 1 מוגדר ל-node-1.

    אם צומת הבעלים מוגדר ל-node-2, לוחצים לחיצה ימנית על המאגר, בוחרים באפשרות העברה > בחירת צומת > node-1 ולוחצים על אישור.

עכשיו יוצרים התקנה חדשה של אשכול יתירות כשל של SQL Server ב-node-1:

  1. לוחצים לחיצה ימנית על Start (או מקישים על Win+X) ואז לוחצים על Windows PowerShell (Admin).
  2. לוחצים על כן כדי לאשר את ההנחיה להעלאת הרשאות.
  3. יוצרים חשבון משתמש בדומיין עבור SQL Server וסוכן SQL ומקצים סיסמה:

    Active Directory

    $Credential = Get-Credential -UserName sql_server -Message 'Enter password'
    New-ADUser `
      -Name "sql_server" `
      -Description "SQL Agent and SQL Admin account." `
      -AccountPassword $Credential.Password `
      -Enabled $true -PasswordNeverExpires $true
    

    Managed Microsoft AD

    $Credential = Get-Credential -UserName sql_server -Message 'Enter password'
    New-ADUser `
      -Name "sql_server" `
      -Description "SQL Agent and SQL Admin account." `
      -AccountPassword $Credential.Password `
      -Enabled $true -PasswordNeverExpires $true `
      -Path "OU=Cloud,DOMAIN"
    

    מחליפים את DOMAIN בשם הייחודי של הדומיין, לדוגמה, DC=example,DC=org.

  4. מתחילים בהגדרה של SQL Server:

    & c:\sql_server_install\setup.exe
    
  5. בתפריט הימני, לוחצים על התקנה.

  6. בוחרים באפשרות New SQL Server failover cluster installation (התקנה חדשה של אשכול מעבר לגיבוי בעת כשל של SQL Server).

  7. בדף Microsoft Update, לוחצים על Next (הבא) כדי להתחיל בהתקנה.

  8. בדף Install Failover Cluster Rules (התקנת כללים של אשכולות מעבר לגיבוי בעת כשל), מוצגת אזהרה MSCS cluster verification warnings (אזהרות לגבי אימות אשכול MSCS) ו-Windows firewall (חומת האש של Windows). אפשר להתעלם מהאזהרות האלה וללחוץ על הבא.

  9. בדף Product Key, משאירים את הגדרות ברירת המחדל ולוחצים על Next.

  10. בדף License Terms, בודקים את התנאים ואם הם מקובלים עליכם, לוחצים על Next.

  11. בדף Feature Selection (בחירת תכונות), בוחרים באפשרות Database Engine Services (שירותי מנוע מסד הנתונים) ולוחצים על Next (הבא).

  12. בדף Instance Configuration (הגדרת מופע), מזינים sql בשם הרשת ובמופע בעל השם, ולוחצים על Next (הבא).

  13. בדף Cluster Resource Group, משאירים את ברירות המחדל ולוחצים על Next.

  14. בדף Cluster Disk Selection (בחירת דיסק לאשכול), מפעילים את האפשרות Cluster Virtual Disk (FciVolume) (דיסק וירטואלי לאשכול) ומשביתים את כל הדיסקים האחרים. לוחצים על הבא.

  15. בדף Cluster Network Configuration, מגדירים את ההגדרות הבאות ואז לוחצים על Next:

    • DHCP: clear
    • כתובת IP: מזינים את כתובת ה-IP של מאזן העומסים הפנימי.
  16. בדף Server configuration, מגדירים את ההגדרות הבאות גם ל-SQL Server Agent וגם ל-SQL Server Database Engine:

    • שם החשבון: DOMAIN\sql_server כאשר DOMAIN הוא שם NetBIOS של דומיין Active Directory
    • סיסמה: מזינים את הסיסמה שיצרתם קודם.
  17. בוחרים בכרטיסייה Collation (מיון) ובוחרים את המיון שרוצים להשתמש בו. לאחר מכן לוחצים על Next.

  18. בדף Database Engine Configuration (הגדרת מנוע מסד הנתונים), בוחרים באפשרות Add current user (הוספת המשתמש הנוכחי) כדי להגדיר את המשתמש הנוכחי כאדמין של SQL Server. לוחצים על הבא.

  19. בדף Ready to Install, בודקים את ההגדרות ולוחצים על Install.

  20. אחרי שההתקנה מסתיימת, בוחרים באפשרות סגירה.

דומיין Active Directory מכיל עכשיו חשבון מחשב sql שמייצג את מופע SQL Server ורשומת DNS תואמת שמפנה לכתובת ה-IP של מאזן העומסים הפנימי.

עכשיו מוסיפים את node-2 לקלאסטר למעבר אוטומטי לגיבוי של SQL Server:

  1. מתחברים אל node-2 באמצעות Remote Desktop ונכנסים באמצעות המשתמש בדומיין.
  2. לוחצים לחיצה ימנית על Start (או מקישים על Win+X) ואז לוחצים על Windows PowerShell (Admin).
  3. לוחצים על כן כדי לאשר את ההנחיה להעלאת הרשאות.
  4. מתחילים בהגדרה של SQL Server:

    & c:\sql_server_install\setup.exe
    
  5. בתפריט הימני, לוחצים על התקנה.

  6. בוחרים באפשרות הוספת צומת לאשכול מעבר לגיבוי בענן של SQL Server.

  7. פועלים לפי ההוראות באשף ההתקנה ומאשרים את הגדרות ברירת המחדל עד שמגיעים לדף Service Accounts (חשבונות שירות).

  8. בדף Service Accounts (חשבונות שירות), מזינים את הסיסמה שיצרתם קודם גם עבור SQL Server Agent וגם עבור SQL Server Database Engine. לוחצים על הבא.

  9. בדף Ready to Install, בודקים את ההגדרות ולוחצים על Install.

  10. אחרי שההתקנה מסתיימת, בוחרים באפשרות סגירה.

הגדרת בדיקות תקינות

בשלב האחרון, מגדירים את האשכול לחשיפת נקודת קצה לבדיקת תקינות שאפשר להשתמש בה במאזן עומסים פנימי:

  1. חוזרים לסשן PowerShell ב-node-2
  2. מאתחלים משתנה עם כתובת ה-IP של מאזן העומסים.

    $LoadBalancerIP = 'IP_ADDRESS'
    

    מחליפים את IP_ADDRESS בכתובת ה-IP של wsfcהכתובת שהזמנתם קודם.

  3. מגדירים את אשכול הגיבוי למעבר אוטומטי כך שיגיב לשירות בדיקת תקינות:

    $SqlGroup = Get-ClusterGroup |
      Where-Object {$_.Name.StartsWith("SQL Server")}
    $SqlIpAddress = Get-ClusterResource |
      Where-Object {$_.Name.StartsWith("SQL IP Address")}
    
    $SqlIpAddress | Set-ClusterParameter -Multiple @{
     'Address'=$LoadBalancerIP;
     'ProbePort'= 59997;
     'SubnetMask'='255.255.255.255';
     'Network'= (Get-ClusterNetwork).Name;
     'EnableDhcp'=0; }
    
  4. מפעילים מחדש את משאב האוסף:

    $SqlIpAddress | Stop-ClusterResource
    $SqlIpAddress | Start-ClusterResource
    
  5. מפעילים מחדש את קבוצת האשכולות:

    $SqlGroup | Stop-ClusterGroup
    $SqlGroup | Start-ClusterGroup
    

יצירת מאזן עומסים פנימי

כדי לספק נקודת קצה אחת ללקוחות SQL Server, צריך לפרוס מאזן עומסים פנימי. מאזן העומסים משתמש בבדיקת תקינות כדי לוודא שתעבורת הנתונים מופנית לצומת הפעיל של WSFC.

  1. חוזרים לסשן הקיים של Cloud Shell.
  2. יוצרים שתי קבוצות של מופעים לא מנוהלים, אחת לכל אזור, ומוסיפים את שני הצמתים לקבוצות:

    gcloud compute instance-groups unmanaged create wsfc-group-1 --zone $REGION-a
    gcloud compute instance-groups unmanaged add-instances wsfc-group-1 --zone $REGION-a \
      --instances node-1
    
    gcloud compute instance-groups unmanaged create wsfc-group-2 --zone $REGION-b
    gcloud compute instance-groups unmanaged add-instances wsfc-group-2 --zone $REGION-b \
      --instances node-2
    
  3. יוצרים בדיקת תקינות שמאזן העומסים יכול להשתמש בה כדי לקבוע איזה צומת פעיל.

    gcloud compute health-checks create tcp wsfc-healthcheck \
      --check-interval="2s" \
      --healthy-threshold=1 \
      --unhealthy-threshold=2 \
      --port=59997 \
      --timeout="1s"
    

    בדיקת תקינות המערכת בודקת את יציאה 59997, שהיא היציאה שהגדרתם קודם כ-ProbePort למשאב של כתובת ה-IP של SQL Server.

  4. יוצרים שירות לקצה העורפי ומוסיפים את שתי קבוצות המכונות:

    gcloud compute backend-services create wsfc-backend \
      --load-balancing-scheme internal \
      --region $(gcloud config get-value compute/region) \
      --health-checks wsfc-healthcheck \
      --protocol tcp
    
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group-1 \
      --instance-group-zone $REGION-a \
      --region $REGION
    
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group-2 \
      --instance-group-zone $REGION-b \
      --region $REGION
    
  5. יוצרים את מאזן העומסים הפנימי:

    gcloud compute forwarding-rules create wsfc-sql \
      --load-balancing-scheme internal \
      --address $LOADBALANCER_ADDRESS \
      --ports 1433 \
      --network $VPC_NAME \
      --subnet $SUBNET_NAME \
      --region $REGION \
      --backend-service wsfc-backend
    

בדיקה של אשכול הגיבוי

השלמתם את ההתקנה של אשכול יתירות הכשל, אבל עדיין צריך לבדוק אם האשכול פועל כמו שצריך.

הכנת לקוח

יוצרים מכונה וירטואלית חדשה שאפשר להשתמש בה כדי להתחבר לאשכול הגיבוי:

  1. חוזרים לסשן הקיים של Cloud Shell.
  2. יוצרים מכונה וירטואלית חדשה:

    gcloud compute instances create sqlclient \
      --zone $REGION-a \
      --machine-type n2-standard-2 \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2019-win-2022 \
      --image-project windows-sql-cloud \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd
    
  3. כדי לעקוב אחרי תהליך האתחול של המכונה הווירטואלית, אפשר לצפות בפלט של היציאה הטורית שלה:

    gcloud compute instances tail-serial-port-output sqlclient
    

    מחכים כמה דקות עד שרואים את הפלט Instance setup finished, ואז מקישים על Ctrl+C. בשלב הזה, המכונה הווירטואלית מוכנה לשימוש.

  4. יצירת שם משתמש וסיסמה למכונה הווירטואלית

  5. מתחברים למכונה הווירטואלית באמצעות Remote Desktop ומתחברים באמצעות שם המשתמש והסיסמה שנוצרו בשלב הקודם.

  6. לוחצים לחיצה ימנית על Start (או מקישים על Win+X) ואז לוחצים על Windows PowerShell (Admin).

  7. לוחצים על כן כדי לאשר את ההנחיה להעלאת הרשאות.

  8. צירוף המחשב לדומיין Active Directory:

    Add-Computer -Domain DOMAIN
    

    מחליפים את DOMAIN בשם ה-DNS של דומיין Active Directory.

  9. מפעילים מחדש את המחשב:

    Restart-Computer
    

    מחכים כדקה עד שההפעלה מחדש תסתיים.

הרצת הבדיקה

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

  1. מתחברים אל sqlclient באמצעות Remote Desktop ונכנסים באמצעות המשתמש בדומיין.
  2. לוחצים לחיצה ימנית על Start (או מקישים על Win+X) ואז לוחצים על Windows PowerShell.
  3. מתחברים לאשכול SQL Server באמצעות TCP/IP ושם ה-DNS sql ומריצים שאילתה בטבלה dm_os_cluster_nodes:

    & "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" `
       -S tcp:sql -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    

    הפלט אמור להיראות כך:

    NodeName                       status      status_description is_current_owner
    ------------------------------ ----------- ------------------ ----------------
    NODE-1                                   0 up                                1
    NODE-2                                   0 up                                0
    
    (2 rows affected)
    

    שימו לב ש-node-1 הוא הבעלים הנוכחי של משאב אשכול הגיבוי האוטומטי של SQL Server.

  4. חוזרים אל Cloud Shell ומפילים את מכונת ה-VM node-1 כדי לבדוק את תרחיש המעבר לגיבוי.

    gcloud compute instances stop node-1 --zone $REGION-a
    
  5. חוזרים על השאילתה:

    & "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" `
       -S tcp:sql -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    

    עכשיו הפלט אמור להיראות כך:

    NodeName                       status      status_description is_current_owner
    ------------------------------ ----------- ------------------ ----------------
    NODE-1                                   1 down                              0
    NODE-2                                   0 up                                1
    
    (2 rows affected)
    

    שימו לב שלמרות האובדן של node-1, השאילתה מצליחה ומראה שnode-2 הוא הבעלים הנוכחי של אשכול הגיבוי.

מגבלות

  • התכונה S2D נתמכת רק ב-Windows Server 2016 ומעלה.
  • ב-S2D, כל דיסק מכיל רק תצוגה חלקית של הנתונים הכוללים. לכן, צילום תמונת מצב של דיסק מתמשך לא יספיק לגיבוי הנתונים. במקום זאת, צריך להשתמש בגיבוי SQL מקורי.

הסרת המשאבים

אחרי שמסיימים את המדריך, אפשר למחוק את המשאבים שנוצרו, כדי שהם יפסיקו להשתמש במכסה ולצבור חיובים. בסעיפים הבאים מוסבר איך למחוק או להשבית את המשאבים האלו.

מחיקת הפרויקט

הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך.

כדי למחוק את הפרויקט:

  1. במסוף Google Cloud , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

המאמרים הבאים