הגדרה של מכונה של SQL Server failover cluster שמשתמשת בדיסקים של Hyperdisk Balanced High Availability במצב multi-writer

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

כדי להשתמש ב-SQL Server FCI, הנתונים צריכים להיות באחסון משותף כדי שיהיה אפשר לגשת אליהם בכל הצמתים של WSFC. במדריך הזה מוסבר איך אפשר לפרוס מופע של אשכול מעבר לגיבוי בענן של SQL Server 2022 ולהשתמש ב-Hyperdisk Balanced High Availability במצב מרובה כתיבה כאחסון משותף אזורי (מרובה אזורים).

ארכיטקטורה

ארכיטקטורה

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

מטרות

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

עלויות

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

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

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

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

  • דומיין Active Directory עם בקר דומיין אחד לפחות. אתם יכולים ליצור דומיין Active Directory באמצעות שירות מנוהל ל-Microsoft AD. אפשרות נוספת היא לפרוס סביבת Active Directory בהתאמה אישית ב-Compute Engine ולהגדיר אזור העברת DNS פרטי שמעביר שאילתות DNS לבקרי הדומיין.
  • משתמש ב-Active Directory שיש לו הרשאה לצרף מחשבים לדומיין ויכול להיכנס באמצעות RDP. אם אתם משתמשים ב-Managed Microsoft AD, אתם יכולים להשתמש במשתמש setupadmin.
  • פרויקט Google Cloud ו-VPC עם קישוריות לבקרי הדומיין של Active Directory.
  • תת-רשת לשימוש במכונות הווירטואליות של WSFC.

חשוב לעיין במגבלות של נפחי Hyperdisk במצב ריבוי כתיבה ולבחור אזור שבו זמינה האפשרות Hyperdisk Balanced High Availability.

כדי להשלים את ההדרכה, צריך גם פרויקט: 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 הבודקים: (לא נדרש בהגדרת DNN)

    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 פעיל, והצומת השני משמש כצומת למעבר לגיבוי. שתי המכונות הווירטואליות צריכות לכלול:

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

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

  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. יוצרים את המכונות הווירטואליות ומפעילים את הסוכן של Windows Server Failover Clustering (WSFC) בצמתי ה-WSFC על ידי הגדרת מפתח המטא-נתונים enable-wsfc לערך true:

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

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

      gcloud compute instances tail-serial-port-output NAME
      

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

      מחכים כ-3 דקות עד שרואים את הפלט 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.

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

יצירת דיסקים של Hyperdisk Balanced High Availability במצב multi-writer

עכשיו יוצרים דיסק Hyperdisk Balanced High Availability במצב multi-writer ומצרפים אותו לשני הצמתים של WSFC. אחד היתרונות של Hyperdisk הוא האפשרות להגדיר את מספר פעולות הקלט/פלט (IOPS) ואת קצב העברת הנתונים (throughput) בהתאם לצרכים של האפליקציה. מידע נוסף זמין במאמר מידע על Hyperdisk Balanced High Availability.

  1. חוזרים לסשן הקיים של Cloud Shell.
  2. כדי ליצור דיסק Hyperdisk Balanced High Availability:

    SIZE=200
    
    gcloud compute disks create multiwriter-datadisk-1 \
      --size $SIZE \
      --provisioned-throughput 200 \
      --provisioned-iops 5000 \
      --access-mode READ_WRITE_MANY \
      --type hyperdisk-balanced-high-availability \
      --replica-zones $ZONE_1,$ZONE_2
    
  3. מחברים את הדיסק אל node-1:

    gcloud compute instances attach-disk node-1 \
      --disk multiwriter-datadisk-1 \
      --zone $ZONE_1 \
      --disk-scope=regional
    
  4. מחברים את הדיסק אל node-2:

    gcloud compute instances attach-disk node-2 \
      --disk multiwriter-datadisk-1 \
      --zone $ZONE_2 \
      --disk-scope=regional
    

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

עכשיו אתם יכולים להזמין שתי כתובות IP סטטיות ב-VPC. כתובת IP אחת משמשת ככתובת ה-IP של אשכול WSFC, והשנייה משמשת את מאזן העומסים הפנימי.

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

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

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

  2. שמירת כתובת IP סטטית נוספת שמשמשת ככתובת IP של האשכול: (לא נדרש בהגדרת DNN)

    gcloud compute addresses create wsfc-cluster \
      --subnet $SUBNET_NAME \
      --region $REGION && \
    CLUSTER_ADDRESS=$(gcloud compute addresses describe wsfc-cluster \
      --region $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
    
    New-SmbShare `
    -Name QWitness `
    -Path 'C:\QWitness' `
    -Description 'SQL File Share Witness' `
    -FullAccess  $env:username,node-1$,node-2$
    
    Grant-SmbShareAccess -Name 'QWitness' -AccountName 'node-1$' -AccessRight Full -Force
    Grant-SmbShareAccess -Name 'QWitness' -AccountName 'node-2$' -AccessRight Full -Force
    

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

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

פריסת WSFC

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

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

    • להגדרת מאזן עומסים
    New-Cluster `
      -Name sql-cluster `
      -Node node-1,node-2 `
      -NoStorage `
      -StaticAddress CLUSTER_ADDRESS
    

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

    • להגדרת DNN
    New-Cluster `
      -Name sql-cluster `
      -Node node-1,node-2 `
      -NoStorage `
      -ManagementPointNetworkType Distributed
    
  5. חוזרים לסשן PowerShell ב-witness ומעניקים לאובייקט המחשב הווירטואלי של האשכול הרשאה לגשת לשיתוף הקבצים:

    icacls C:\QWitness\ /grant 'sql-cluster$:(OI)(CI)(M)'
    Grant-SmbShareAccess `
      -Name QWitness `
      -AccountName 'sql-cluster$' `
      -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).
    

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

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

    Add-ADGroupMember `
      -Identity "Cloud Service Domain Join Accounts" `
      -Members sql-cluster$
    

הוספת דיסק לאשכול

עכשיו מאתחלים את דיסק ה-Hyperdisk Balanced High Availability שנוצר קודם ומוסיפים אותו לאשכול:

  1. חוזרים לסשן PowerShell ב-node-1.
  2. מאתחלים את הדיסק Hyperdisk Balanced High Availability:

    $NodeName = [System.Net.Dns]::GetHostName()
    
    $ClusterDisks = Get-PhysicalDisk -CanPool $True |
      Where-Object { ($_ |
        Get-PhysicalDiskStorageNodeView |
        Select-Object -Property StorageNodeObjectId) -like ('*' + $NodeName + '*') }
    Initialize-Disk -Number $ClusterDisks[0].DeviceId
    
  3. בדיסק, יוצרים מחיצה חדשה שמשתמשת במערכת הקבצים NTFS ומפרמטים את הדיסק עם גודל בלוק של 64KB:

    New-Partition -DiskNumber $ClusterDisks[0].DeviceId `
        -UseMaximumSize  -DriveLetter D | Format-Volume `
        -FileSystem NTFS -newfilesystemlabel DataDisk -AllocationUnitSize 65536
    
  4. מוסיפים את הדיסק לאשכול:

    Get-ClusterAvailableDisk | Add-ClusterDisk
    

    הדיסק מופיע אוטומטית ב-node-2 כי דיסק Hyperdisk Balanced High Availability הבסיסי מצורף לשתי מכונות ה-VM.

  5. פותחים את הצמדת ה-MMC של Failover Cluster Manager:

    cluadmin.msc
    

בדיקת מעבר לשכפול במקרה של כשל בדיסק

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

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

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

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

    gcloud compute instances reset node-1
    
  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 > sql-cluster.

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

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

  5. בחלונית הימנית של החלון, עוברים אל Failover Cluster Manager > sql-cluster > Storage > Disks.

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

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

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

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

    $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
    
  4. מפעילים את ההגדרה של SQL Server:

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

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

  7. בדף Edition, מסמנים את התיבה I have a SQL Server license only ולוחצים על Next.

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

  9. בדף Microsoft Update (עדכון של מיקרוסופט), בוחרים באפשרות Next (הבא) כדי להתחיל בהתקנה.

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

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

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

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

  14. בדף Cluster Disk Selection, בוחרים באפשרות Cluster Disk 1 ולוחצים על Next.

  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. אחרי שההתקנה מסתיימת, בוחרים באפשרות סגירה.

עכשיו מוסיפים את 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 $ZONE_1
    gcloud compute instance-groups unmanaged add-instances wsfc-group-1 \
    --zone $ZONE_1 \
    --instances node-1
    
    gcloud compute instance-groups unmanaged create wsfc-group-2 \
    --zone $ZONE_2
    gcloud compute instance-groups unmanaged add-instances wsfc-group-2 \
    --zone $ZONE_2 \
    --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 של אשכול WSFC.

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

    gcloud compute backend-services create wsfc-backend \
    --load-balancing-scheme internal \
    --region $REGION \
    --health-checks wsfc-healthcheck \
    --protocol tcp
    
    gcloud compute backend-services add-backend wsfc-backend \
    --instance-group wsfc-group-1 \
    --instance-group-zone $ZONE_1 \
    --region $REGION
    
    gcloud compute backend-services add-backend wsfc-backend \
    --instance-group wsfc-group-2 \
    --instance-group-zone $ZONE_2 \
    --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
    

הגדרת משאב DNN ושם DNS של DNN

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

  1. חוזרים לסשן PowerShell ב-node-1.
  2. מריצים את הסקריפט כדי ליצור משאב DNN

      $DNNResourceName='fci-dnn'
      $DNN_DNSName='fcidnn'
    
      # create the DNN resource
      Add-ClusterResource -Name $DNNResourceName -ResourceType 'Distributed Network Name' -Group 'SQL Server (MSSQLSERVER)'
    
      # set the DNS name of the DNN resource
      Get-ClusterResource -Name $DNNResourceName | Set-ClusterParameter -Name DnsName -Value $DNN_DNSName
    
      # start the DNN resource
      Start-ClusterResource -Name $DNNResourceName
    
  3. הפעלה מחדש של node-1 ושל node-2

בדיקת אשכול הגיבוי האוטומטי

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

הכנת לקוח

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

  1. חוזרים לסשן הקיים של Cloud Shell.
  2. יוצרים מופע חדש של VM:

    gcloud compute instances create sqlclient \
      --machine-type n2-standard-2 \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2022-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
    

    מחכים כ-3 דקות עד שמופיע הפלט 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 באמצעות שם הרשת שלו sql ומריצים שאילתה על הטבלה dm_os_cluster_nodes:

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

    מחליפים את SQL_SERVER_NAME ב-sql בשביל הגדרת מאזן עומסים או ב-fcidnn בשביל הגדרת DNN.

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

    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
    
  5. חוזרים על השאילתה:

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

    מחליפים את SQL_SERVER_NAME ב-sql בשביל הגדרת מאזן עומסים או ב-fcidnn בשביל הגדרת DNN.

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

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

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

הסרת המשאבים

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

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

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

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

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

    כניסה לדף Manage resources

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

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