ใช้คอนเทนเนอร์กับ SQL Server บน Linux
- 5 นาที
คอนเทนเนอร์ช่วยให้องค์กรสามารถสร้างการติดตั้ง SQL Server ที่ยืดหยุ่นและสามารถปรับขนาดได้
ผู้นําเข้า Wide World รองรับปริมาณงานฐานข้อมูลขนาดใหญ่ที่จําเป็นต้องมีสถาปัตยกรรมโฮสติ้งที่ยืดหยุ่นและสามารถปรับขนาดได้ คุณต้องการประเมินความเป็นไปได้ของการโฮสต์ SQL Server ในสภาพแวดล้อมเสมือน เช่น เครื่องเสมือน (VM) และคอนเทนเนอร์
ที่นี่คุณจะได้เรียนรู้วิธีการเลือกระหว่างคอนเทนเนอร์และ VM สําหรับฐานข้อมูล
เปรียบเทียบ VM และคอนเทนเนอร์
การจําลองภาพเสมือนเป็นเทคนิคที่ผู้ดูแลระบบใช้เพื่อโฮสต์เซิร์ฟเวอร์เสมือนหลายตัวบนเซิร์ฟเวอร์จริงเดียว เมื่อคุณใช้การจําลองภาพเสมือน คุณสามารถปรับใช้อินสแตนซ์เพิ่มเติมของ เช่น SQL Server โดยไม่ต้องซื้อและติดตั้งฮาร์ดแวร์เพิ่มเติมได้อย่างง่ายดาย มีสองวิธีทั่วไปในการจําลองภาพเสมือน:
- VM: เมื่อคุณใช้ VM แต่ละอินสแตนซ์คือ เซิร์ฟเวอร์เสมือนที่สมบูรณ์ด้วยระบบปฏิบัติการและฮาร์ดแวร์ของตัวเอง
- Containers: เมื่อคุณใช้คอนเทนเนอร์ แต่ละอินสแตนซ์จะใช้ระบบปฏิบัติการและทรัพยากรฮาร์ดแวร์ร่วมกันกับคอมพิวเตอร์โฮสต์
ทั้ง VM และคอนเทนเนอร์มีสภาพแวดล้อมแยกต่างหากซึ่งแอปพลิเคชันเช่น SQL Server ทํางานราวกับว่าอยู่ในคอมพิวเตอร์จริงที่แยกต่างหาก
เครื่องเสมือนมีขนาดใหญ่กว่าและใช้เวลานานในการสร้าง แต่เนื่องจากมีระบบปฏิบัติการของตนเอง ให้ใช้การกําหนดค่าและฮาร์ดแวร์อื่นไปยังคอมพิวเตอร์โฮสต์ คุณยังสามารถผสมเครื่องเสมือนกับระบบปฏิบัติการที่แตกต่างกันบนโฮสต์เดียวกันได้ ตัวอย่างเช่น บนโฮสต์ Linux คุณสามารถติดตั้งเครื่องเสมือน (VM) ที่ใช้งาน Linux และ Apache เพื่อโฮสต์เว็บไซต์ นอกจากนี้ยังอาจมี VM อื่นที่ใช้งาน Windows และ SQL Server เพื่อโฮสต์ฐานข้อมูล
คอนเทนเนอร์มีขนาดเล็กกว่า ดังนั้นจึงโหลดได้เร็วกว่า VM มาก อย่างไรก็ตาม ถ้าโฮสต์ของคุณใช้ Linux Ubuntu ตัวอย่างเช่น คอนเทนเนอร์ทั้งหมดบนคอมพิวเตอร์เครื่องนั้นต้องเรียกใช้ Ubuntu รุ่นเดียวกัน บนโฮสต์ Linux คุณสามารถติดตั้งคอนเทนเนอร์ที่ใช้งาน Linux และ Apache ได้ แต่คอนเทนเนอร์ฐานข้อมูลของคุณต้องเรียกใช้ Linux ด้วย การกําหนดค่านี้เป็นไปได้ตราบใดที่คุณเรียกใช้ SQL Server 2017 หรือใหม่กว่า
บนเครื่องโฮสต์ คุณต้องติดตั้งซอฟต์แวร์เช่น Hyper-V หรือ VirtualBox เพื่อโฮสต์ VM สําหรับคอนเทนเนอร์ คุณสามารถใช้ระบบ Docker, CRI-O, rkt และโฮสต์คอนเทนเนอร์อื่น ๆ
เหตุผลในการใช้เครื่องเสมือน
ยังมีสถานการณ์ที่คอนเทนเนอร์ไม่ใช่ทางออกที่ดีที่สุด เมื่อคอนเทนเนอร์ทํางานบนระบบปฏิบัติการเดี่ยวและแชร์ทรัพยากรของระบบ ความปลอดภัยจึงเป็นเรื่องที่กังวล หากผู้โจมตีได้รับสิทธิพิเศษ ขั้นสูง เวกเตอร์บางตัวอาจนําไปสู่การเข้าถึงแอปพลิเคชันได้ ในคอนเทนเนอร์แอปพลิเคชันต้องทํางานบนระบบปฏิบัติการเดียวกันกับคอมพิวเตอร์โฮสต์ คุณไม่สามารถเรียกใช้โปรแกรมประยุกต์ที่ใช้ Linux ในคอนเทนเนอร์บน Windows ด้วย VM คุณโฮสต์เครื่อง Linux บน Windows หรือเครื่อง Windows บน macOS ได้ทําให้มีความยืดหยุ่นมากขึ้น VM ช่วยให้คุณสามารถโฮสต์แอปพลิเคชันหลายตัวด้วยการรวมกันอย่างเข้มงวดใน VM เดียว คอนเทนเนอร์แบบดั้งเดิมโฮสต์แอปพลิเคชันเดียวเท่านั้น
เครื่องเสมือนมีประสิทธิภาพน้อยกว่าคอนเทนเนอร์ บนชุดฮาร์ดแวร์ที่กําหนด คุณสามารถเรียกใช้โปรแกรมประยุกต์ในคอนเทนเนอร์ได้อย่างน้อยสองเท่าตามที่คุณสามารถทําได้กับ VM VM ใช้ทรัพยากรเพิ่มเติมเนื่องจากจําเป็นต้องมีสําเนาทั้งหมดของระบบปฏิบัติการและรุ่นเสมือนของฮาร์ดแวร์ทั้งหมดเพื่อสนับสนุนระบบปฏิบัติการของผู้เยี่ยมชม
เหตุผลในการใช้คอนเทนเนอร์
คอนเทนเนอร์มีน้ําหนักเบากว่าในการเปรียบเทียบและช่วยให้คุณสามารถจัดแพคเกจแอปให้เป็นฟุตพริ้นท์ที่มีขนาดเล็กลงได้ ในฐานะที่เป็นระบบปฏิบัติการเดียวกําลังโฮสต์คอนเทนเนอร์ มีการดูแลระบบน้อยลง คุณจําเป็นต้องแก้ไขและอัปเดตระบบปฏิบัติการเดียวแทนที่จะเป็นระบบปฏิบัติการของผู้เยี่ยมชมทุกตัวบน VM แต่ละรายการ คอนเทนเนอร์มีขนาดเล็กกว่าและตรงไปตรงมามากกว่าดังนั้นจึงสามารถเริ่มต้นได้ในไม่กี่วินาทีแทนที่จะใช้เพื่อเริ่มต้น VM
การเรียง
คุณสามารถใช้ Docker Swarm, Kubernetes และโซลูชันอื่น ๆ เพื่อจัดเรียงคอนเทนเนอร์ได้ ตรวจสอบ Orchestrators และทําให้สามารถปรับขนาดแอปโดยใช้คอนเทนเนอร์และให้ระดับการกู้คืนความเสียหายได้ Microsoft มีเครื่องมือและตัวอย่างของวิธีการใช้ Kubernetes ดังนั้นจึงเป็นตัวเลือกที่ดีสําหรับการบรรจุ SQL Server บน Linux มีรูปคอนเทนเนอร์ SQL Server บน Linux ที่พร้อมใช้งานสําหรับใช้กับ Kubernetes
เซิร์ฟเวอร์ SQL แบบคอนเทนเนอร์บน Linux
ปัญหาหนึ่งของฐานข้อมูลที่เรียกใช้ในคอนเทนเนอร์คือที่เก็บแบบถาวร คุณต้องระบุตําแหน่งที่เก็บข้อมูลภายนอกคอนเทนเนอร์ที่ฐานข้อมูลสามารถเก็บไฟล์ฐานข้อมูลได้ การเปลี่ยนแปลงจะพร้อมใช้งานสําหรับคอนเทนเนอร์ทั้งหมดในคลัสเตอร์ ถ้าคุณใช้ Kubernetes คุณสามารถใช้ไดรฟ์ข้อมูลแบบถาวรสําหรับตําแหน่งที่ตั้งนี้ได้
ก่อนอื่น ให้สร้างไดรฟ์ข้อมูลแบบถาวร จากนั้นเพิ่มการอ้างสิทธิ์ไดรฟ์ข้อมูลแบบถาวร (PVC) สร้างรายการการปรับใช้สําหรับ SQL Server บน Linux ที่ใช้รูปภาพคอนเทนเนอร์ mssql-server-linux สร้างโดย Microsoft รายการยังมีคําจํากัดความสําหรับ PVC และตัวปรับสมดุลการโหลดสําหรับบริการเพื่อรับประกันที่อยู่ IP ที่สอดคล้องกัน สร้างการปรับใช้และตรวจสอบว่า SQL Server ทํางานอยู่ภายใน pod หรือไม่ เมื่อการตั้งค่านี้เสร็จสมบูรณ์ Kubernetes จะบูทสเตรปอินสแตนซ์ใหม่ถ้าโหนดล้มเหลว การทดสอบอย่างง่ายคือการลบ pod นั้นและตรวจสอบว่าปุ่มใหม่เริ่มต้นโดยอัตโนมัติ