ทีละขั้นตอน: วิธีการกำหนดค่าอินสแตนซ์คลัสเตอร์ล้มเหลวของ SQL Server (FCI) ใน Microsoft Azure IaaS
ปรับปรุง 7/19/2016 – ขั้นตอนด้านล่างอธิบายการปรับใช้ใน Azure "Classic" ถ้าคุณกำลังปรับใช้คลัสเตอร์ SQL ใน Azure Resource Manager (ARM) คุณควรเห็นบทความของฉันที่นี่ https://clusteringformeremortals.com/2016/04/23/deploying-microsoft-sql-server-2014-failover-clusters-in-azure-resource-manager-arm/
ก่อนที่เราจะเริ่มต้นเราจะสมมติฐานว่าคุณมีความคุ้นเคยกับ failover clustering และ Microsoft Azure เล็กน้อยและได้ลงชื่อสมัครใช้บัญชี Azure แล้ว ในคู่มือแบบทีละขั้นตอนนี้เราจะอ้างถึงแหล่งข้อมูลเพิ่มเติมสำหรับการอ่านเพิ่มเติม รวมอยู่ในคู่มือนี้เป็นภาพหน้าจอและตัวอย่างโค้ด สีฟ้าเป็นผลิตภัณฑ์ที่พัฒนาอย่างรวดเร็วดังนั้นประสบการณ์ของคุณอาจแตกต่างจากที่อธิบายไว้ แต่คุณควรจะสามารถปรับและปรับได้ตามต้องการ ฉันจะพยายามเก็บบทความนี้ไว้เสมอเมื่อฉันเพิ่มความคิดเห็นเพิ่มเติมตามที่เวลาดำเนินการ Azure Portal ใหม่ยังคงอยู่ในระยะแสดงตัวอย่างจากการเขียนบทความนี้ ดังนั้นเราจะใช้พอร์ทัลที่ได้รับการสนับสนุนในปัจจุบันพร้อมกับ PowerShell ในตัวอย่างทั้งหมดของเรา
ในระดับสูงขั้นตอนต่อไปนี้จำเป็นต้องดำเนินการเพื่อสร้างการใช้งาน SQL Server ที่พร้อมใช้งานบน Azure IaaS ถ้าคุณมีโดเมนที่ทำงานอยู่แล้วใน Azure IaaS คุณสามารถข้ามรายการ 1-3 ได้
เราจะดูที่แต่ละขั้นตอนด้านล่างนี้อย่างละเอียด
- สร้างเครือข่ายเสมือนจริงของคุณ
- สร้างบริการ Cloud
- สร้างที่เก็บข้อมูลบัญชี
- สร้าง Azure VMs และ Storage ของคุณ
- กำหนดค่า Active Directory
- สร้างคลัสเตอร์
- สร้างทรัพยากรคลัสเตอร์แบบรีเลตต์
- ติดตั้ง SQL ลงในคลัสเตอร์
- สร้าง Balancer โหลดภายใน
- อัปเดต Client Listener
ภาพรวม
คำแนะนำเหล่านี้สมมติว่าคุณต้องการสร้างการปรับใช้ SQL Server พร้อมใช้งานทั้งหมดภายในภูมิภาค Azure มีความเป็นไปได้ในการกำหนดค่ากลุ่ม SQL Server ที่ครอบคลุมพื้นที่ทางภูมิศาสตร์ที่ต่างกันภายใน Azure หรือแม้กระทั่งการกำหนดค่าระบบไฮบริด Cloud ซึ่งครอบคลุมตั้งแต่ Azure Cloud หรือวีซ่าไปแล้ว ไม่ใช่ความตั้งใจของฉันที่จะครอบคลุมการกำหนดค่าประเภทต่างๆในเอกสารนี้ แทนการกำหนดค่าที่ฉันจะเน้นการกำหนดค่าจะแสดงในรูปที่ 1
บทความนี้จะอธิบายถึงวิธีการสร้างคลัสเตอร์ที่ครอบคลุมโดเมนฟอรัมและโดเมนการปรับปรุงที่แตกต่างกันสองแห่งภายในพื้นที่ Azure การแบ่งช่วงโดเมนที่ไม่ซ้ำกันจะช่วยลดการหยุดทำงานของระบบที่เกี่ยวข้องกับการหยุดทำงานที่ไม่คาดคิด การขยายโดเมนการอัปเดตต่างๆจะช่วยลดความผิดพลาดที่เกิดขึ้นจากการหยุดทำงานตามแผน
สำหรับข้อมูลภาพรวมเพิ่มเติมคุณอาจต้องการดูการสัมมนาทางเว็บที่ฉันทำเกี่ยวกับ SQLTIPS ที่กล่าวถึงหัวข้อนี้อย่างละเอียด สามารถดูได้ที่ http://www.mssqltips.com/sql-server-video/360/highly-available-sql-server-cluster-deployments-in-azure-iaas/
สร้างเครือข่ายเสมือนจริงของคุณ
เพื่อให้สามารถทำงานได้คุณจะต้องมี VM ทั้งหมดของคุณภายใน Virtual Network การสร้างเครือข่ายเสมือนจริงค่อนข้างตรงไปข้างหน้า ภาพหน้าจอด้านล่างจะช่วยแนะนำคุณตลอดกระบวนการ
ณ จุดนี้ฉันต้องการเพิ่มที่อยู่เซิร์ฟเวอร์ Google DNS ของ 8.8.8.8 ฉันพบปัญหาการเชื่อมต่อที่แปลกเมื่อพยายามดาวน์โหลดโปรแกรมปรับปรุงจาก Microsoft เมื่อใช้เซิร์ฟเวอร์ DNS เริ่มต้น หลังจากที่เราได้ดาวน์โหลดการปรับปรุงทั้งหมดที่เซิร์ฟเวอร์เหล่านี้ต้องการแล้วเราจะกลับมาแทนที่ IP แอดเดรสเซิร์ฟเวอร์ DNS ด้วยที่อยู่ IP ของตัวควบคุม AD ของเรา แต่ตอนนี้ให้เพิ่ม 8.8.8.8 และ VMs ทั้งหมดของคุณที่จัดเตรียมไว้ใน Virtual Network นี้จะได้รับเป็นเซิร์ฟเวอร์ DNS ผ่านทางบริการ DHCP โพสต์ฟอรัมนี้อธิบายปัญหาที่ฉันพบโดยไม่ต้องเพิ่มรายการเซิร์ฟเวอร์ DNS นี้ ก่อนที่จะเพิ่มเซิร์ฟเวอร์ทั้งหมดของคุณลงในโดเมนฉันพบว่าคุณต้องลบที่อยู่ 8.8.8.8 นี้และแทนที่ด้วยที่อยู่ IP ของตัวควบคุมโดเมนแรกที่คุณสร้างขึ้น
คุณจะเห็นว่าฉันสร้าง subnet หนึ่งในเครือข่ายเสมือนนี้และติดป้ายว่า Public ต่อมาเมื่อเราสร้าง VM ของเราเราจะใช้เครือข่าย Public ในขณะที่ Azure เพิ่งเพิ่มการสนับสนุน NIC หลายรายการต่อ VM ฉันพบว่าการเพิ่มหลายเครือข่ายย่อยและ NIC กับ Azure VM อาจเป็นปัญหาได้ ปัญหาหลักคือแต่ละ NIC จะกำหนดที่อยู่ของเกตเวย์โดยอัตโนมัติซึ่งอาจทำให้เกิดปัญหาการกำหนดเส้นทางเนื่องจากเกตเวย์หลายตัวถูกกำหนดไว้ในเซิร์ฟเวอร์เดียวกัน
จะใช้เวลาไม่กี่นาทีในการสร้างเครือข่ายเสมือนจริงของคุณ
สร้างบริการ Cloud
เครื่องเสมือนของคุณจะอยู่ใน "บริการ Cloud" เดียวกัน ขอให้โชคดีในการค้นหาคำจำกัดความของ Azure "Cloud Service" เนื่องจาก Azure โดยรวมคือ "Cloud Service" อย่างไรก็ตามนี่เป็นแนวคิดเฉพาะเจาะจงเฉพาะสำหรับ Azure IaaS ที่คุณต้องสร้างก่อนที่คุณจะเริ่มใช้งาน VMs ภาพหน้าจอด้านล่างจะนำคุณสู่กระบวนการ
ตรวจสอบให้แน่ใจว่าคุณได้ใส่ Cloud Service ใน Region เดียวกันกับ Virtual Network ของคุณแล้ว
สร้างที่เก็บข้อมูลบัญชี
ก่อนที่คุณจะเริ่มจัดเตรียม VMs คุณต้องสร้างบัญชีที่เก็บข้อมูล ทำตามขั้นตอนด้านล่างเพื่อสร้างบัญชีที่เก็บข้อมูล
ตรวจสอบให้แน่ใจว่าคุณได้สร้างบัญชีเก็บข้อมูลไว้ในตำแหน่งเดียวกันกับเครือข่ายเสมือนจริงของคุณ
สร้าง Azure VMS และพื้นที่เก็บข้อมูลของคุณ
ถ้าคุณยังไม่ได้ดาวน์โหลดและติดตั้ง Azure PowerShell ให้ทำแบบนั้นเดี๋ยวนี้ นอกจากนี้โปรดตรวจสอบว่าคุณตั้งค่าการสมัครสมาชิกและ CurrentStorageAccountName เริ่มต้นแล้ว
เราจะเริ่มต้นด้วยการจัดเตรียม VM เครื่องแรกซึ่งจะกลายเป็น Domain Controller (DC) ในตัวอย่างของเราเราจะใช้ DC เป็นพยานร่วมกันของไฟล์ดังนั้นเราจะสร้างชุดการจัดหาที่จะรวม Domain Controller และโหนดสองโหนดในคลัสเตอร์ ต่อไปนี้เป็นสคริปต์ตัวอย่างซึ่งจะสร้าง VM และกำหนดให้เป็น "Static Address"
$ AVSet =” SQLHA”
$ InstanceSize =” ขนาดใหญ่”
$ ฮาร์ drives =” DC1 "
$ AdminName = "myadminaccount"
$ AdminPassword =” mypassword”
$ PrimarySubnet =” สาธารณะ”
$ PrimaryIP =” 10.0.0.100 "
$ CloudService =” SQLFailover”
$ VirtualNetwork =” Azure ตะวันออก”
$ ImageName =” a699494373c04fc0bc8f2bb1389d6106__Windows-server-2012-R2-201412.01 en.us-127GB.vhd”
$ image = Get-AzureVMImage -ImageName $ ImageName
$ vm = New-AzureVMConfig -Name $ VMName -InstanceSize $ InstanceSize -Image $ image.ImageName -AvailabilitySetName $ AVSet
Add-AzureProvisioningConfig -VM $ vm -Windows -AdminUserName $ AdminName -Password $ AdminPassword
Set-AzureSubnet -SubnetNames $ PrimarySubnet -VM $ vm
Set-AzureStaticVNetIP -IPAddress $ PrimaryIP -VM $ vm
New-AzureVM -ServiceName $ CloudService -VNetName $ VirtualNetwork -VM $ vm
Tech Note – ฉันพูดว่า "Static IP Address" แต่จริงๆแล้วจะสร้าง "Request" ของ DHCP ขึ้น ฉันเรียกมันว่า "Request" ของ DHCP ไม่ใช่ "Reservation" เพราะจริงๆแล้วเป็นเพียงคำขอความพยายามที่ดีที่สุดเท่านั้น ถ้าเซิร์ฟเวอร์นี้ออฟไลน์และมีคนเริ่มเซิร์ฟเวอร์ใหม่เซิร์ฟเวอร์ DHCP จะส่งที่อยู่นี้ให้กับบุคคลอื่นทำให้ไม่สามารถใช้งานได้เมื่อเปิดใช้งานเซิร์ฟเวอร์นี้
เมื่อคุณสร้าง VM แรกของคุณคุณพร้อมที่จะสร้าง SQL VMs สองเครื่องที่ใช้ในคลัสเตอร์แล้ว คุณจะเห็นว่าฉันพยายามทำให้สคริปต์ใช้งานง่ายโดยให้คุณระบุตัวแปรต่างๆ ฉันเน้นตัวแปรที่คุณต้องเปลี่ยนสำหรับแต่ละ VM
$ AVSet =” SQLHA”
$ InstanceSize =” ขนาดใหญ่”
$ ฮาร์ drives =” SQL1 "
$ AdminName =” myadminaccount”
$ AdminPassword =” P @ 55w0rd”
$ PrimarySubnet =” สาธารณะ”
$ PrimaryIP =” 10.0.0.101 "
$ CloudService =” SQLFailover”
$ VirtualNetwork =” Azure ตะวันออก”
$ ImageName =” a699494373c04fc0bc8f2bb1389d6106__Windows-server-2012-R2-201412.01 en.us-127GB.vhd”
$ image = Get-AzureVMImage -ImageName $ ImageName
$ vm = New-AzureVMConfig -Name $ VMName -InstanceSize $ InstanceSize -Image $ image.ImageName -AvailabilitySetName $ AVSet
Add-AzureProvisioningConfig -VM $ vm -Windows -AdminUserName $ AdminName -Password $ AdminPassword
Set-AzureSubnet -SubnetNames $ PrimarySubnet -VM $ vm
Set-AzureStaticVNetIP -IPAddress $ PrimaryIP -VM $ vm
New-AzureVM -ServiceName $ CloudService -VNetName $ VirtualNetwork -VM $ vm
เรียกใช้สคริปต์อีกครั้งเพื่อจัดเตรียมโหนดคลัสเตอร์ที่ 2
$ AVSet =” SQLHA”
$ InstanceSize =” ขนาดใหญ่”
$ ฮาร์ drives =” SQL2 "
$ AdminName = "myadminaccount"
$ AdminPassword =” mypassword”
$ PrimarySubnet =” สาธารณะ”
$ PrimaryIP =” 10.0.0.102 "
$ CloudService =” SQLFailover”
$ VirtualNetwork =” Azure ตะวันออก”
$ ImageName =” a699494373c04fc0bc8f2bb1389d6106__Windows-server-2012-R2-201412.01 en.us-127GB.vhd”
$ image = Get-AzureVMImage -ImageName $ ImageName
$ vm = New-AzureVMConfig -Name $ VMName -InstanceSize $ InstanceSize -Image $ image.ImageName -AvailabilitySetName $ AVSet
Add-AzureProvisioningConfig -VM $ vm -Windows -AdminUserName $ AdminName -Password $ AdminPassword
Set-AzureSubnet -SubnetNames $ PrimarySubnet -VM $ vm
Set-AzureStaticVNetIP -IPAddress $ PrimaryIP -VM $ vm
New-AzureVM -ServiceName $ CloudService -VNetName $ VirtualNetwork -VM $ vm
คุณจะเห็นว่าแต่ละ VM เหล่านี้ถูกวางไว้ในชุดผลิตภัณฑ์ที่มีอยู่เดียวกันซึ่งฉันเรียกว่า "SQLHA" การวาง VM ในชุดการจัดหาความพร้อมกันคุณจะใช้ข้อผิดพลาดของโดเมนและโดเมนการอัปเดตตามที่อธิบายไว้ที่นี่ http://blogs.technet.com/b/yungchou/archive/2011/05/16/window-azure-fault-domain-and-update-domain-explained-for-it-pros.aspx
เมื่อคุณสร้าง VM แล้ว Azure Portal ของคุณควรมีลักษณะดังนี้
คำศัพท์เกี่ยวกับโดเมนข้อบกพร่อง
กำหนดค่า Active Directory
ขั้นแรกเราจะเชื่อมต่อกับ DC1 ผ่านทาง RDP และเปิดใช้งานไดเรกทอรีที่ใช้งานอยู่ ใช้ปุ่ม "เชื่อมต่อ" เพื่อดาวน์โหลดการเชื่อมต่อ RDP กับ DC1 ใช้ชื่อผู้ใช้และรหัสผ่านที่คุณระบุไว้เมื่อคุณสร้าง Azure VM โปรโมต DC1 ไปยัง Domain Controller
INSIDER TIP – ฉันยังพบว่าการแก้ปัญหา DNS ทำงานได้ดียิ่งขึ้นหากคุณยกเลิกการรับส่ง DNS ทั้งหมดบนเซิร์ฟเวอร์ DNS และใช้งาน ROOT HINTS AZURE CAN SOMETIME มีปัญหาการแก้ไขคุณสมบัติของ MICROSOFT WEB หากคุณใช้เซิร์ฟเวอร์ DNS ของตนเป็นผู้ส่งต่อ
สร้างคลัสเตอร์
เมื่อคุณกำหนดคอนฟิก DC1 เป็น Domain Controller แล้วคุณจะเชื่อมต่อกับ SQL1 และ SQL2 และเพิ่มลงในโดเมน อย่างไรก็ตามก่อนที่คุณจะทำเช่นนั้นคุณจะต้องเปลี่ยนเซิร์ฟเวอร์ DNS ของเครือข่ายเสมือนไปเป็นเซิร์ฟเวอร์ DC1 (10.0.0.100) และรีบูต SQL1 และ SQL2 เมื่อ SQL1 และ SQL2 มี 100.0.0.100 เป็นเซิร์ฟเวอร์ DNS ของคุณคุณจะสามารถเข้าร่วมโดเมนได้
เมื่อคุณเข้าร่วมกับโดเมนคุณจะต้องทำตามขั้นตอนที่แสดงด้านล่างเพื่อสร้างอินสแตนซ์ของคลัสเตอร์ล้มเหลวของ SQL Server (FCI)
ขั้นแรกให้เปิดใช้ .Net 3.5 Framework ในแต่ละโหนด
ถ้าคุณพบว่า. Net Framework ไม่สามารถติดตั้งได้ให้ดูที่ทิปของฉันเกี่ยวกับ DNS
เปิดใช้งานคลัสเตอร์ Failover
ขณะนี้มีการเปิดใช้งาน. Net 3.5 แล้วคุณจะต้องเปิดใช้งานคุณลักษณะคลัสเตอร์ Failover Cluster บน SQL1 และ SQL2
การตรวจสอบ
เมื่อเปิดใช้งานคุณลักษณะคลัสเตอร์แล้วคุณจะต้องสร้างคลัสเตอร์ ขั้นตอนแรกคือการเรียกใช้การตรวจสอบความถูกต้องของคลัสเตอร์ ฉันสมมติว่าคุณคุ้นเคยกับการจัดกลุ่มดังนั้นฉันจะโพสต์เพียงไม่กี่ภาพหน้าจอและจดสิ่งที่คุณต้องพิจารณา
การตรวจสอบความถูกต้องจะเสร็จสมบูรณ์ แต่จะมีคำเตือนบางอย่าง คำเตือนส่วนใหญ่จะอยู่ในพื้นที่เก็บข้อมูล คุณสามารถละเว้นข้อมูลเหล่านี้ได้เนื่องจากเราจะใช้พื้นที่เก็บข้อมูลที่จำลองแบบมากกว่าดิสก์ที่ใช้ร่วมกัน นอกจากนี้คุณอาจได้รับคำเตือนเกี่ยวกับเครือข่าย นอกจากนี้คุณยังสามารถละเว้นคำเตือนดังกล่าวได้เนื่องจากเราทราบว่า Azure มีความซ้ำซ้อนของเครือข่ายที่อยู่ในเลเยอร์ทางกายภาพ
สร้างจุดเชื่อมต่อของคลัสเตอร์
11/24/2015 UPDATE – ฉันพบว่าการสร้างคลัสเตอร์ผ่าน Powershell จะหลีกเลี่ยงปัญหาทั้งหมดที่อธิบายไว้ในขั้นตอน GUI ที่แสดงด้านล่างเนื่องจากคุณสามารถระบุ IP แอดเดรสของคลัสเตอร์ได้เป็นส่วนหนึ่งของกระบวนการสร้าง คำสั่ง PowerShell ทั้งสองคำสั่งด้านล่างแทนขั้นตอนทั้งหมดที่แสดงในภาพหน้าจอ GUI ที่ทำตามในส่วนนี้ ตรวจสอบให้แน่ใจว่าพารามิเตอร์ StaticIaddress
กลุ่มการทดสอบ -Node Server1, Server2
คลัสเตอร์ใหม่ -Name MyCluster -Node Server1, Server2 -StaticAddress 10.0.0.200
ถ้าคุณเรียกใช้สคริปต์ Powershell ด้านบนจากนั้นคุณสามารถข้ามส่วนที่เหลือของส่วนนี้และข้ามไปทางขวาไปยังส่วนถัดไปในการสร้างพยานร่วมกันของไฟล์
ฉันจะแนะนำให้สร้างเสร็จสิ้นคลิกเพื่อเริ่มต้นกระบวนการสร้างคลัสเตอร์ ก่อนอื่นให้เลือกชื่อของคลัสเตอร์
คุณจะเห็นว่ามีคำเตือนหากคุณคลิกดูรายงาน คุณสามารถละเว้นคำเตือนได้เนื่องจากเราจะสร้างพยานแชร์ไฟล์
คุณอาจได้รับข้อความต่อไปนี้หลังจากสร้างคลัสเตอร์ "การดำเนินการ 'ตรวจสอบความถูกต้อง … ' ไม่เสร็จสมบูรณ์
แก้ไขที่อยู่ IP ของ Cluster Access Point
ปัญหาพื้นฐานที่นี่คือคลัสเตอร์ไม่สามารถแก้ไขชื่อคลัสเตอร์ได้อย่างถูกต้องเนื่องจากความขัดแย้งของที่อยู่ IP สิ่งที่คุณจะพบคือ Azure DHCP จริงให้ที่อยู่ IP ซ้ำกับวัตถุคอมพิวเตอร์คลัสเตอร์ที่คุณเพิ่งสร้างขึ้น นี่เป็นเพียงส่วนหนึ่งของแปลกประหลาด Azure ที่คุณจะต้องจัดการกับดังที่แสดงด้านล่าง
คุณอาจต้องเปิด Failover Cluster GUI ใน SQL2 เพื่อเชื่อมต่อ เมื่อคุณสามารถเชื่อมต่อกับคลัสเตอร์ได้แล้วคุณจะเห็นว่าคลัสเตอร์นี้คว้า IP แอดเดรสเดียวกันเป็นโหนดคลัสเตอร์ นี้แน่นอนทำให้เกิดความขัดแย้งที่อยู่ IP
สิ่งที่เราต้องทำคือเปลี่ยนที่อยู่ IP 10.0.0.102 เป็นที่อยู่ IP อื่นที่ไม่ได้ใช้ใน subnet นี้
คุณจะเห็นฉันเลือก 10.0.0.200 ตามที่อยู่ของฉัน ที่อยู่นี้ไม่ได้รับการสงวนไว้ในขอบเขต DHCP เพราะปัจจุบันไม่มีวิธีใดในการควบคุมขอบเขต DHCP หรือเพิ่มการจอง ฉันเพียงแค่เลือกที่อยู่ที่ด้านบนของขอบเขต DHCP และตรวจสอบให้แน่ใจว่าฉันไม่ได้เตรียม VMs เพียงพอในเครือข่ายย่อยนี้ให้เข้าถึงที่อยู่ IP ดังกล่าว
ตอนนี้ที่อยู่ IP ของคลัสเตอร์ได้รับการแก้ไขแล้วคุณจะสามารถเชื่อมต่อกับคลัสเตอร์โดยใช้ตัวจัดการงานของ Failover Cluster Manager จากโหนดใดก็ได้
สร้างพยานร่วมแบ่งปันไฟล์
ต่อไปเราจะสร้างพยานแชร์ไฟล์สำหรับ quorum คลัสเตอร์ สำหรับคำอธิบายที่สมบูรณ์ของคลัสเตอร์คลัสเตอร์อ่านโพสต์บล็อกของฉันบน MSDN press http://blogs.msdn.com/b/microsoft_press/archive/2014/04/28/from-the-mvps-understanding-the-windows-server -failover คลัสเตอร์ควอรัมในหน้าต่างเซิร์ฟเวอร์ 2012 r2.aspx
พยานที่แชร์ไฟล์จะสร้างขึ้นใน Domain Controller คุณจำเป็นต้องสร้างแฟ้มใช้ร่วมกันบน DC1 และให้สิทธิ์การอ่าน / เขียนไปยังบัญชีคอมพิวเตอร์คลัสเตอร์ "sioscluster" ตรวจสอบให้แน่ใจว่าได้ทำการเปลี่ยนแปลงต่อทั้งสิทธิ์การแชร์และการรักษาความปลอดภัยดังที่แสดงด้านล่าง
ทำตามขั้นตอนต่อไปนี้ใน DC1
สร้างโฟลเดอร์ใหม่
ตรวจสอบให้แน่ใจว่าคุณได้ค้นหาวัตถุคอมพิวเตอร์และเลือกชื่อวัตถุของคอมพิวเตอร์คลัสเตอร์ในกรณีของเราคือ SIOSCLUSTER
ตรวจสอบให้แน่ใจว่าคุณได้เปลี่ยนสิทธิ์
คุณต้องเปลี่ยนการรักษาความปลอดภัยเพื่ออนุญาตให้คอมพิวเตอร์คลัสเตอร์วัตถุปรับเปลี่ยนสิทธิ์ในโฟลเดอร์
เมื่อคุณสร้างโฟลเดอร์ที่ใช้ร่วมกันแล้วคุณจะเพิ่ม Share Share Share Witness โดยใช้ Windows Server Failover Cluster interface ที่โหนดใดโหนดดังแสดงด้านล่าง
ติดตั้ง DataKeeper
DataKeeper Cluster Edition จาก SIOS Technology เป็นสิ่งจำเป็นเพื่อให้การจำลองแบบและการผสานรวมของคลัสเตอร์ช่วยให้คุณสามารถสร้างอินสแตนซ์ของคลัสเตอร์ failover ได้โดยไม่ต้องใช้ที่จัดเก็บข้อมูลร่วมกัน ขั้นแรกคุณจะติดตั้ง DataKeeper Cluster Edition ทั้งโหนดของคลัสเตอร์ของคุณ รันการตั้งค่าตามที่แสดงด้านล่าง
สำหรับการสาธิตฉันใช้บัญชีผู้ดูแลระบบโดเมน ข้อกำหนดเพียงอย่างเดียวคือบัญชีผู้ใช้ที่ใช้อยู่ในกลุ่มผู้ดูแลระบบภายในเครื่องในแต่ละเซิร์ฟเวอร์
สร้างไดรฟ์ข้อมูล DataKeeper Volume
หลังจากที่คุณติดตั้งซอฟต์แวร์บนแต่ละโหนดคลัสเตอร์ (SQL1 และ SQL2) คุณพร้อมที่จะสร้างทรัพยากรไดรฟ์ข้อมูลที่จำลองแบบแรกแล้ว เปิด DataKeeper GUI บนโหนดใดและทำตามขั้นตอนด้านล่างเพื่อสร้าง DataKeeper Volume Resource
หลังจากที่คุณเชื่อมต่อกับเซิร์ฟเวอร์ทั้งสองแล้วให้คลิกที่รายงานภาพรวมเซิร์ฟเวอร์ ควรมีลักษณะดังนี้
คุณจะสังเกตเห็นว่าคุณเชื่อมต่อกับเซิร์ฟเวอร์ทั้งสองเครื่อง แต่ไม่มีไดรฟ์ข้อมูลอยู่ ถัดไปเราจะต้องเพิ่มพื้นที่เก็บข้อมูลเพิ่มเติมในแต่ละโหนดคลัสเตอร์ ทำสิ่งนี้ผ่านพอร์ทัล Azure ตามที่แสดงด้านล่าง
หลังจากที่คุณเพิ่มไดรฟ์ข้อมูลเพิ่มเติมลงใน VM แต่ละเครื่องและสร้างพาร์ติชันที่มีการจัดรูปแบบไว้แล้วคุณควรทำดังนี้ DataKeeper GUI ควรทำดังนี้
ขณะนี้คุณพร้อมที่จะเปิดตัวสร้างตัวช่วยสร้างงานและสร้างทรัพยากร DataKeeper Volume ตามที่แสดงด้านล่าง
สร้างงานและตั้งชื่อและคำอธิบายที่เป็นตัวเลือก
ติดตั้ง SQL เข้าไปในคลัสเตอร์
ขณะนี้คุณได้กำหนดค่าคลัสเตอร์และไดรฟ์ DataKeeper ในที่เก็บที่พร้อมใช้งานคุณพร้อมที่จะเริ่มการติดตั้ง SQL Server Cluster กระบวนการนี้เหมือนกับการติดตั้ง SQL Server Failover Cluster Instance โดยใช้ที่เก็บข้อมูลที่ใช้ร่วมกัน เนื่องจากรีซอร์ส DataKeeper Replicated Volume เป็นรีซอร์ส Class ที่เก็บข้อมูลการเข้าแทนที่จะถือว่าเป็นรีซอร์ส Physical Disk ทำตามขั้นตอนด้านล่างเพื่อติดตั้ง SQL Server ลงในคลัสเตอร์
คุณสามารถใช้ SQL Server 2014 Standard Edition เพื่อสร้างคลัสเตอร์ Failover Cluster 2 โหนด ในสถานการณ์สมมตินี้ DataKeeper ยังสามารถจำลองข้อมูลไปยังโหนดที่ 3 ได้ แต่โหนดนั้นไม่สามารถเป็นส่วนหนึ่งของคลัสเตอร์ ถ้าคุณต้องการสร้างคลัสเตอร์โหนด 3+ คุณจะต้องใช้ SQL Server 2014 Enterprise Edition รุ่นก่อนหน้าของ SQL ทำงานได้ดีอย่างสมบูรณ์เช่นกัน ฉันได้ทดสอบ SQL 2008 ผ่าน SQL 2014 แล้ว
ก่อนที่จะคลิก Next คลิกที่แท็บ Data Directories
เมื่อติดตั้ง SQL บนโหนดแรกแล้วคุณจะต้องเรียกใช้การติดตั้งบนโหนดที่สอง
สร้าง Balancer โหลดภายใน
เมื่อกำหนดค่าคลัสเตอร์แล้วคุณจะต้องสร้าง balancer การโหลดภายใน (ILB) ซึ่งจะใช้สำหรับการเข้าถึงไคลเอ็นต์ทั้งหมด ไคลเอ็นต์ที่เชื่อมต่อกับ SQL Server จะต้องเชื่อมต่อกับ ILB แทนการเชื่อมต่อโดยตรงกับที่อยู่ IP ของคลัสเตอร์ ถ้าคุณพยายามที่จะเชื่อมต่อกับคลัสเตอร์โดยตรง ณ จุดนี้คุณจะเห็นว่าคุณไม่สามารถเชื่อมต่อกับคลัสเตอร์จากระบบระยะไกลได้ แม้แต่ SQL Server Management Studio จะไม่สามารถเชื่อมต่อกับคลัสเตอร์ได้โดยตรง ณ จุดนี้
เรียกใช้คำสั่ง Powershell นี้จากเดสก์ท็อปเฉพาะเครื่องของคุณเพื่อสร้าง Internal Load Balancer (ILB)
# กำหนดตัวแปร
$ IP = "10.0.0.201" #IP แอดเดรสที่คุณต้องการให้ Internal Load Balancer ใช้ซึ่งควรเป็นที่อยู่เดียวกันกับที่อยู่ IP ของคลัสเตอร์เซิร์ฟเวอร์ SQL ของคุณ
$ svc = "SQLFailover" # ชื่อของบริการคลาวด์ของคุณ
$ vmname1 = "sql1" # ชื่อของ VM ที่เป็นโหนดคลัสเตอร์แรกของคุณ
$ epname1 = "sql1" # นี่คือชื่อที่คุณต้องการกำหนดให้กับปลายทางที่เชื่อมโยงกับโหนดคลัสเตอร์แรกใช้อะไรก็ได้ที่คุณชอบ
$ vmname2 = "sql2" # ชื่อของ VM ที่เป็นโหนดคลัสเตอร์ที่สองของคุณ
$ epname2 = "sql2" # นี่คือชื่อที่คุณต้องการกำหนดให้กับปลายทางที่เชื่อมโยงกับโหนดคลัสเตอร์ที่สองให้ใช้สิ่งที่คุณต้องการ
$ lbsetname = "ilbsetsqlha" # ใช้ชื่อที่คุณชอบชื่อนี้ไม่มีนัยสำคัญ
$ ลูกศิษย์ =” TCP”
$ locport = 1433
$ pubport = 1433
$ probeport = 59999
$ ilbname = "sqlcluster" # นี่คือชื่อที่ลูกค้าของคุณเชื่อมต่อควรสอดคล้องกับคุณ SQL Resource Name ของคลัสเตอร์
$ subnetname = "Public" # ชื่อของซับเน็ต Azure ที่คุณต้องการให้สมดุลโหลดภายในอยู่
# เพิ่ม Internal Balancer โหลดลงในบริการ
Add-AzureInternalLoadBalancer -InternalLoadBalancerName $ ilbname -SubnetName $ subnetname -ServiceName $ svc -StaticVNetIPAddress $ IP
# เพิ่มจุดสิ้นสุดที่สมดุลของโหลดเข้ากับโหนดคลัสเตอร์หลัก
Get-AzureVM -ServiceName $ svc -Name $ vmname1 | Add-AzureEndpoint -Name $ epname1 -LBSetName $ lbsetname- โปรโตคอล $ prot-LocalPort $ locport -PublicPort $ pubport -ProbePort $ probeport -ProbeProtocol tcp -ProbeIntervalInSeconds 10 -DirectServerReturn $ true -InternalLoadBalancerName $ ilbname | ปรับปรุง AzureVM
# เพิ่มจุดสิ้นสุดที่สมดุลของโหลดเข้ากับโหนดลำดับที่สอง
Get-AzureVM -ServiceName $ svc -Name $ vmname2 | Add-AzureEndpoint -Name $ epname2 -LBSetName $ lbsetname -Protocol $ prot -LocalPort $ locport -PublicPort $ pubport -ProbePort $ probeport -ProbeProtocol tcp -ProbeIntervalInSeconds 10 -DirectServerReturn $ true -InternalLoadBalancerName $ ilbname | เพิ่มค่าเริ่มต้น ปรับปรุง AzureVM
สมมติว่าสคริปต์ทำงานตามที่วางแผนไว้คุณควรเห็นผลลัพธ์ต่อไปนี้
อัปเดต Client Listener
เราจะต้องเรียกใช้สคริปต์ Powershell บน SQL1 เพื่ออัพเดต SQL Server Cluster IP address สคริปต์อ้างอิงชื่อเครือข่ายคลัสเตอร์และชื่อทรัพยากร IP รูปภาพด้านล่างแสดงให้เห็นว่าคุณต้องค้นหาทั้งสองชื่อนี้ในตัวจัดการ Failover Cluster
ควรใช้สคริปต์ด้านล่างที่โหนดคลัสเตอร์ ตรวจสอบให้แน่ใจว่าได้เปิดตัว Powershell ISE โดยใช้ Run as Administrator
# สคริปต์นี้ควรจะทำงานบนโหนดคลัสเตอร์หลักหลังจากสร้าง balancer โหลดภายใน
# กำหนดตัวแปร
$ ClusterNetworkName = "Cluster Network 1" # ชื่อเครือข่ายคลัสเตอร์
$ IPResourceName = "ที่อยู่ IP ของ SQL 1 (sqlcluster)" # ชื่อทรัพยากรที่อยู่ IP
$ CloudServiceIP = "10.0.0.201" # ที่อยู่ IP ของ Internal Balancer ของคุณ
การนำเข้าโมดูล FailoverClusters
# หากคุณใช้ Windows 2012 หรือสูงกว่าให้ใช้คำสั่ง Get-Cluster Resource ถ้าคุณกำลังใช้ Windows 2008 R2 ให้ใช้คำสั่ง res คลัสเตอร์ที่แสดงความคิดเห็น
Get-ClusterResource $ IPResourceName | Set-ClusterParameter -Multiple @ {"Address" = "$ CloudServiceIP"; "ProbePort" = "59999";
SubnetMask =” 255.255.255.255 ";” เครือข่าย” =” $ ClusterNetworkName”;
“OverrideAddressMatch” = 1;” EnableDHCP” = 0}
# คลัสเตอร์ res $ IPResourceName / priv enabledhcp = 0 overrideaddressmatch = 1 address = $ CloudServiceIP probeport = 59999 subnetmask = 255.255.255.255
สมมติว่าสคริปต์ของคุณทำงานตามที่คาดหวังผลลัพธ์ควรมีลักษณะดังนี้ คุณเห็นว่าเพื่อให้การเปลี่ยนแปลงเกิดขึ้นคุณจะต้องนำทรัพยากรคลัสเตอร์ของคุณแบบออฟไลน์มาหนึ่งครั้งและนำมาออนไลน์
ไฟร์วอลล์
เปิดพอร์ต TCP 59999, 1433 และ 1434 เปิดอยู่ในไฟร์วอลล์ของแต่ละเซิร์ฟเวอร์
สรุป
คุณสามารถเชื่อมต่อกับอินสแตนซ์คลัสเตอร์ล้มเหลวของ SQL ผ่าน Internal Balancer โดยใช้ sqlcluster ชื่อหรือตรงไปที่ 10.0.0.201
ค้นหาบทความดังกล่าวเกี่ยวกับอินสแตนซ์ของคลัสเตอร์เซิร์ฟเวอร์ล้มเหลว SQL ที่เป็นประโยชน์โปรดอ่านบทความบล็อกอื่น
ทำซ้ำโดยได้รับอนุญาตจาก Clusteringformeremortal