Menggunakan kontainer dengan SQL Server di Linux
Kontainer membantu organisasi membuat instalasi SQL Server yang fleksibel dan dapat diskalakan.
Wide World Importers mendukung beberapa beban kerja database skala besar yang memerlukan arsitektur hosting yang fleksibel dan dapat diskalakan. Anda dapat mengevaluasi kemungkinan hosting SQL Server di lingkungan virtual seperti Mesin Virtual (VM) dan kontainer.
Di sini, Anda akan mempelajari cara memilih antara kontainer dan mesin virtual untuk database.
Membandingkan mesin virtual dan kontainer
Virtualisasi adalah teknik yang digunakan administrator untuk menghosting beberapa server virtual pada satu server fisik. Saat menggunakan virtualisasi, Anda dapat dengan mudah menyebarkan instans tambahan, misalnya, SQL Server tanpa membeli dan memasang perangkat keras tambahan. Terdapat dua pendekatan umum untuk virtualisasi:
- VM: Saat Anda menggunakan VM, setiap instans adalah server virtual lengkap dengan sistem operasi dan perangkat kerasnya sendiri.
- Kontainer: Saat Anda menggunakan kontainer, setiap instans berbagi sistem operasi dan sumber daya perangkat keras dengan komputer host.
VM dan kontainer menyediakan lingkungan terisolasi di mana aplikasi seperti SQL Server berjalan seolah-olah mereka berada di komputer fisik terpisah.
Mesin Virtual berukuran lebih besar dan membutuhkan waktu lebih lama untuk dibuat karena Mesin Virtual memiliki sistem operasi sendiri, serta menggunakan konfigurasi dan perangkat keras yang berbeda untuk komputer host. Anda juga dapat menggabungkan Mesin Virtual dengan sistem operasi yang berbeda pada host yang sama. Misalnya, pada host Linux, Anda dapat menginstal Mesin Virtual yang menjalankan Linux dan Apache untuk menghosting situs web. Terdapat kemungkinan bahwa terdapat Mesin Virtual lain yang menjalankan Windows dan SQL Server untuk menghosting database.
Kontainer berukuran lebih kecil, sehingga dapat memuat jauh lebih cepat daripada Mesin Virtual. Namun, jika host Anda menjalankan Linux Ubuntu, misalnya, semua kontainer di komputer tersebut harus menjalankan versi Ubuntu yang sama. Pada host Linux, Anda dapat menginstal kontainer yang menjalankan Linux dan Apache tetapi kontainer database juga harus menjalankan Linux. Hal ini dimungkinkan selama Anda menjalankan SQL Server 2017 atau yang lebih baru.
Pada mesin host, Anda harus menginstal perangkat lunak seperti Hyper-V atau VirtualBox untuk menghosting Mesin Virtual. Untuk kontainer, Anda dapat menggunakan sistem Docker, CRI-O, rkt, dan hosting kontainer lainnya.
Alasan menggunakan Mesin Virtual
Masih ada situasi ketika kontainer bukan merupakan solusi terbaik. Saat kontainer berjalan pada sistem operasi tunggal dan berbagi sumber daya sistem, keamanan menjadi perhatian. Jika penyerang memperoleh hak istimewa superuser, beberapa vektor dapat menyebabkan perolehan akses ke aplikasi. Di kontainer, aplikasi harus berjalan pada OS yang sama dengan komputer host. Anda tidak dapat menjalankan aplikasi berbasis Linux di kontainer pada Windows. Dengan Mesin Virtual, Anda menghosting mesin Linux di Windows, atau mesin Windows di macOS, karena memberikan fleksibilitas yang lebih besar. VM memungkinkan Anda menghosting beberapa aplikasi dengan integrasi yang ketat dalam satu VM. Kontainer secara tradisional hanya menghosting aplikasi tunggal.
Mesin Virtual kurang efisien dibandingkan kontainer. Pada set perangkat keras tertentu, Anda dapat menjalankan setidaknya dua kali lipat jumlah aplikasi di kontainer dibandingkan di Mesin Virtual. VM menggunakan lebih banyak sumber daya, karena membutuhkan salinan lengkap sistem operasi dan versi virtual semua perangkat keras untuk mendukung sistem operasi tamu.
Alasan menggunakan kontainer
Kontainer lebih ringan dibandingkan mesin virtual dan memungkinkan Anda mengemas aplikasi ke dalam jejak yang lebih kecil. Karena satu sistem operasi menghosting kontainer, administrasi menjadi lebih sedikit. Anda hanya perlu melakukan patch dan memperbarui satu OS, bukan setiap OS tamu pada setiap Mesin Virtual. Kontainer lebih kecil dan lebih mudah, sehingga dapat memulai Mesin Virtual dalam hitungan detik, bukan menit.
Orkestrasi
Anda dapat menggunakan Docker Swarm, Kubernetes, dan solusi lainnya untuk mengatur kontainer. Orchestrator memantau dan memungkinkan penskalaan aplikasi menggunakan kontainer dan memberikan tingkat pemulihan bencana. Microsoft menyediakan alat dan contoh cara menggunakan Kubernetes, jadi, ini adalah pilihan yang baik untuk menyimpan SQL Server di Linux. Terdapat SQL Server di gambar kontainer Linux yang dapat digunakan dengan Kubernetes.
SQL Server dalam Kontainer di Linux
Satu masalah dengan database yang berjalan dalam kontainer adalah penyimpanan persisten. Anda harus menyediakan lokasi penyimpanan di luar kontainer sehingga database dapat menyimpan file database. Perubahan tersedia untuk semua kontainer dalam kluster. Jika menggunakan Kubernetes, Anda dapat menggunakan volume persisten untuk lokasi ini.
Pertama, buat volume persisten, lalu tambahkan klaim volume persisten (PVC). Buat manifes penyebaran untuk SQL Server di Linux yang menggunakan gambar kontainer mssql-server-linux
yang dibuat Microsoft. Manifes juga berisi definisi untuk PVC dan load balancer untuk layanan guna menjamin alamat IP yang konsisten. Buat penyebaran dan periksa apakah SQL Server berjalan di dalam pod atau tidak. Setelah penyiapan ini selesai, Kubernetes akan melakukan bootstrap instans baru jika node gagal. Tes sederhana adalah menghapus pod tersebut dan memeriksa apakah pod baru dimulai secara otomatis.