Date: Januari 9, 2019
Tag: Linux, SQL Server untuk Linux
Langkah-demi-Langkah: SQL Server v.Next Linux High Availability – Pratinjau Publik #azure #sql #sanless
Awal tahun ini, Microsoft mengumumkan bahwa mereka akan merilis versi SQL Server untuk Linux. Hari ini, saya senang mengetahui bahwa Microsoft akhirnya mengumumkan pratinjau publik tentang apa yang mereka sebut SQL Server v.Berikutnya, dan tersedia untuk sistem operasi Linux dan Windows. Informasi lebih lanjut, bersama dengan tautan unduhan dan dokumentasi dapat ditemukan di sini:
https://www.microsoft.com/en-us/sql-server/sql-server-vnext-including-Linux
SQL Server untuk Linux
Pada artikel ini, saya tidak hanya akan menunjukkan kepada Anda bagaimana cara menyebarkan VM Linux di Azure yang menjalankan SQL Server, tetapi juga cara mengkonfigurasi kluster failover 2-simpul agar sangat tersedia! Dan TANPA menggunakan penyimpanan bersama (alias kluster "sanless" atau "nothing nothing"). Hasil akhirnya akan menjadi 2-simpul SQL Server untuk Linux cluster (plus server saksi) di Microsoft Azure IaaS (Infrastruktur sebagai Layanan). Panduan ini mencakup tangkapan layar, perintah shell dan cuplikan kode yang sesuai. Saya berasumsi bahwa Anda agak terbiasa dengan Microsoft Azure dan sudah memiliki akun Azure dengan langganan terkait. Jika tidak, Anda dapat mendaftar untuk mendapatkan akun gratis hari ini. Saya juga akan berasumsi bahwa Anda memiliki keterampilan administrasi sistem linux dasar serta memahami konsep dasar failover clustering seperti IP Virtual, dll. Penafian: Azure adalah target yang bergerak cepat. Dan di sini saya bekerja dengan versi pratinjau publik SQL Server untuk Linux. Dengan demikian, fitur / layar / tombol terikat untuk berubah sebelum SQL v.Next dirilis secara resmi sehingga pengalaman Anda mungkin sedikit berbeda dari apa yang akan Anda lihat di bawah. Sementara panduan ini akan menunjukkan kepada Anda bagaimana membuat database SQL Server untuk Linux sangat tersedia, Anda tentu dapat menyesuaikan informasi dan proses ini untuk melindungi aplikasi atau database lain, seperti yang telah saya tulis sebelumnya di sini (contoh MySQL). Ini adalah langkah-langkah tingkat tinggi untuk membuat database MySQL yang sangat tersedia dalam Microsoft Azure IaaS:
- Buat Grup Sumber Daya
- Buat Jaringan Virtual
- Buat Akun Penyimpanan
- Buat Mesin Virtual di Set Ketersediaan
- Atur Alamat IP Statis VM
- Tambahkan Data Disk ke cluster node
- Buat Aturan Keamanan Masuk untuk memungkinkan akses VNC
- Konfigurasi OS Linux
- Instal dan Konfigurasikan SQL Server
- Instal dan Konfigurasikan Cluster
- Buat Penyeimbang Beban Internal
- Konektivitas Cluster Uji
Ikhtisar
Artikel ini akan menjelaskan cara membuat cluster di dalam satu wilayah Azure. Node kluster (sql-linux1, sql-linux2 dan server saksi) akan berada di Set Ketersediaan (3 Domain Kesalahan dan Pembaruan Domain) yang berbeda, berkat Azure Resource Manager (ARM) yang baru. Kami akan membuat semua sumber daya menggunakan Azure Resource Manager baru. Konfigurasi akan terlihat seperti ini: Alamat IP berikut akan digunakan:
- sql-linux1: 10.0.0.7
- sql-linux2: 10.0.0.8
- sql-saksi: 10.0.0.9
- virtual / "floating" IP: 10.0.0.199
- Port SQL Server: 1433
Buat Grup Sumber Daya
Pertama, buat Grup Sumber Daya. Grup sumber daya Anda pada akhirnya akan berisi semua berbagai objek yang terkait dengan penggunaan cluster kami: mesin virtual, akun penyimpanan, dll. Di sini kita akan memanggil Resource Group yang baru kita buat "sql-cluster". Berhati-hatilah saat memilih wilayah Anda. Semua sumber daya Anda harus berada di wilayah yang sama. Di sini, kami akan mengerahkan semuanya ke wilayah "AS Barat":
Buat Jaringan Virtual (VNet)
Selanjutnya, jika Anda belum memilikinya, buat Jaringan Virtual. Jaringan Virtual adalah jaringan terisolasi di dalam awan Azure yang didedikasikan untuk Anda. Anda memiliki kontrol penuh atas hal-hal seperti blok alamat IP dan subnet, perutean, kebijakan keamanan (yaitu firewall), pengaturan DNS, dan banyak lagi. Anda akan meluncurkan mesin virtual Azure Iaas (VM) Anda ke Jaringan Virtual Anda. Akun Azure saya sudah memiliki VNet (10.0.0.0/16) yang sudah ada yang disebut "jaringan-cluster" yang akan saya gunakan dalam panduan ini. Membuat VNet cukup mudah, dan saya sudah membahas membuatnya di sini jika Anda memerlukan penyegaran.
Buat Akun Penyimpanan
Sebelum Anda menyediakan Mesin Virtual apa pun, Anda akan memerlukan Akun Penyimpanan untuk menyimpannya. Selanjutnya, beri nama akun penyimpanan baru Anda. Nama akun penyimpanan harus unik di * SEMUA * dari Azure. (Setiap objek yang Anda simpan di Azure Storage memiliki alamat URL yang unik. Nama akun penyimpanan membentuk subdomain dari alamat itu.) Dalam contoh ini saya menyebut akun penyimpanan saya "sqllinuxcluster" tetapi Anda harus memilih sesuatu yang berbeda saat Anda menyiapkannya. Pilih Jenis penyimpanan berdasarkan kebutuhan dan anggaran Anda. Untuk keperluan panduan ini, saya memilih "Standard-LRS" (mis. Redundant Lokal) untuk meminimalkan biaya. Pastikan Akun Penyimpanan baru Anda ditambahkan ke Grup Sumber Daya yang Anda buat pada Langkah 1 ("sql-cluster") di Lokasi yang sama ("US Barat" dalam contoh ini):
Buat Mesin Virtual di Set Ketersediaan
Kami akan menyediakan 3 Mesin Virtual dalam panduan ini. Dua VM pertama (saya akan menyebutnya "sql-linux1" dan "sql-linux2") akan berfungsi sebagai node cluster dengan kemampuan untuk membawa database SQL Server dan sumber daya terkaitnya online. VM ketiga akan bertindak sebagai server saksi cluster untuk perlindungan tambahan terhadap split-brain. Untuk memastikan ketersediaan maksimum, ketiga VM akan ditambahkan ke Set Ketersediaan yang sama, memastikan bahwa mereka akan berakhir di berbagai Domain Kesalahan dan Memperbarui Domain. Azure Marketplace memiliki templat VM yang disebut "SQL Server vNext di Red Hat Enterprise Linux 7.2" yang memiliki versi evaluasi pratinjau publik SQL Server v.Next untuk Linux yang sudah diinstal, yang akan menghemat beberapa langkah. Jika Anda lebih suka memulai dengan VM kosong dan menginstal SQL sendiri, instruksi pemasangan dapat ditemukan di sini.
Buat "sql-linux1" VM
Buat VM pertama Anda ("sql-linux1") dan pilih gambar marketplace yang disebutkan di atas. Beri nama host VM ("sql-linux1") dan nama pengguna / kata sandi yang nantinya akan digunakan untuk SSH ke dalam sistem. Pastikan Anda menambahkan VM ini ke Grup Sumber Daya Anda ("sql-cluster") dan ia berada di wilayah yang sama dengan semua sumber daya Anda yang lain: Selanjutnya, pilih ukuran instance Anda. Untuk informasi lebih lanjut tentang berbagai ukuran instance yang tersedia, klik di sini. Untuk keperluan panduan ini, saya memilih ukuran terkecil / termurah yang saya bisa, dalam hal ini "Standar DS1_V2", untuk meminimalkan biaya karena ini tidak akan menjalankan beban kerja produksi. Pilih ukuran instance yang paling masuk akal berdasarkan apa yang ingin Anda uji: PENTING: Secara default, VM Anda tidak akan ditambahkan ke Set Ketersediaan. Pada layar Pengaturan selama memastikan Anda membuat Set Ketersediaan baru, kami akan memanggil "sql-availability-set". Azure Resource Manager (ARM) memungkinkan Anda untuk membuat Set Ketersediaan dengan 3 Domain Patahan. Nilai default di sini baik-baik saja: Pada layar berikutnya, tinjau properti VM Anda dan klik OK untuk membuat VM pertama Anda.
Buat "sql-linux2" dan "sql -itness" VMs
Ulangi langkah di atas dua kali untuk membuat dua VM lagi. Satu-satunya perbedaan di sini adalah bahwa Anda akan MENAMBAH VM ini ke Set Ketersediaan ("sql-availability-set") yang baru saja kami buat. Mungkin perlu sedikit waktu untuk 3 VMs Anda untuk ketentuan. Setelah selesai, Anda akan melihat VM Anda (sql-linux1, sql-linux2 dan sql -itness) terdaftar di layar Mesin Virtual di dalam Azure Portal Anda.
Atur Alamat IP Statis VM
VM akan ditetapkan dengan alamat IP berikut:
- sql-linux1: 10.0.0.7
- sql-linux2: 10.0.0.8
- sql-saksi: 10.0.0.9
Ulangi langkah ini untuk setiap VM. Pilih VM Anda dan edit Antarmuka Jaringan Pilih antarmuka jaringan yang terkait dengan VM, dan edit konfigurasi IP. Pilih "Static" dan tentukan alamat IP yang diinginkan:
Tambahkan Data Disk ke cluster node
Selanjutnya, kita perlu menambahkan disk tambahan ke node cluster kami ("sql-linux1" dan "sql-linux2"). Disk ini akan menyimpan database SQL kami dan nantinya akan direplikasi antar node. Catatan: Anda TIDAK perlu menambahkan disk tambahan ke simpul "sql -itness". Hanya "sql-linux1" dan "sql-linux2". Edit VM Anda, pilih Disk dan kemudian pasang disk baru. Pilih jenis disk (SSD Standar atau Premium) dan ukuran berdasarkan beban kerja Anda. Di sini saya membuat disk Standar 10GB di kedua node cluster saya. Sejauh caching Host berjalan, "Tidak ada" atau "Baca saja" caching baik-baik saja. Saya tidak merekomendasikan menggunakan "Baca / Tulis" karena ada potensi kehilangan data:
Buat Aturan Keamanan Masuk untuk memungkinkan akses VNC
Jika VM Anda adalah bagian dari Network Security Group (NSG), yang secara default kemungkinan adalah kecuali Anda menonaktifkannya selama pembuatan VM, satu-satunya port yang terbuka di "Azure firewall" adalah SSH (port 22). Nanti dalam panduan ini, saya akan menggunakan VNC untuk mengakses desktop "sql-linux1" dan mengkonfigurasi cluster menggunakan GUI. Buat Aturan Keamanan Masuk untuk membuka akses VNC. Dalam panduan ini port 5902 digunakan. Sesuaikan ini sesuai dengan konfigurasi VNC Anda. Mesin Virtual -> (pilih sql-linux1) -> Antarmuka jaringan -> (pilih NIC) -> Grup keamanan jaringan -> (pilih NSG) -> Aturan keamanan masuk -> Tambah
Konfigurasi OS Linux
Di sinilah kita akan meninggalkan Portal Azure sebentar dan membuat tangan kita kotor di baris perintah, yang sebagai administrator Linux Anda harus terbiasa sekarang. Anda tidak diberikan kata sandi root untuk VM Linux Anda di Azure, jadi setelah Anda login sebagai pengguna yang ditentukan selama pembuatan VM, gunakan perintah "sudo" untuk mendapatkan hak akses root:
$ sudo su -
Edit / etc / hosts
Kecuali jika Anda sudah memiliki pengaturan server DNS, Anda ingin membuat entri file host di ketiga server sehingga mereka dapat saling menyelesaikan dengan benar dengan nama Tambahkan baris berikut di akhir file / etc / hosts Anda:
10.0.0.7 sql-linux1 10.0.0.8 sql-linux2 10.0.0.9 sql-saksi 10.0.0.199 sql-vip
Nonaktifkan SELinux
Edit / etc / sysconfig / linux dan atur “SELINUX = disable”:
# vi / etc / sysconfig / selinux # File ini mengontrol keadaan SELinux pada sistem. # SELINUX = dapat mengambil salah satu dari tiga nilai ini: # Menegakkan - SELinux kebijakan keamanan diberlakukan. # Permissive - SELinux mencetak peringatan alih-alih menegakkan. # Dinonaktifkan - Tidak ada kebijakan SELinux yang dimuat. SELINUX = dinonaktifkan # SELINUXTYPE = dapat mengambil salah satu dari dua nilai ini: # Tertarget - Proses yang ditargetkan dilindungi, # Mls - Perlindungan Multi Level. SELINUXTYPE = ditargetkan
Konfigurasikan iptables agar cluster IP Virtual akan berfungsi
Untuk mendapatkan konektivitas ke cluster IP Virtual untuk bekerja, dan juga pemantauan sumber daya IP, beberapa aturan iptables perlu disiapkan. Catatan: 10.0.0.199 adalah IP Virtual yang akan kami gunakan di kluster kami, dan 1433 adalah port default yang digunakan SQL Server saya. Catatan: RHEL7 mengubah firewall default menjadi FirewallD, bukan iptables. Belum menghabiskan banyak waktu dengan firewalld, jadi untuk saat ini panduan ini akan menonaktifkan firewalld dan menggunakan iptables sebagai gantinya. Anda juga harus menginstal paket "iptables-services" agar layanan dan perintah chkconfig di bawah berfungsi.
# systemctl stop firewalld # systemctl nonaktifkan firewalld
Pada sql-linux1 (10.0.0.7), jalankan perintah berikut:
# yum instal iptables-services # iptables - flush # iptables -t nat -A PREROUTING -p tcp --dport 1433 -j DNAT --untuk ke tujuan 10.0.0.199:1433 # iptables -t nat -A PREROUTING -p tcp --dport 1434 -j DNAT --untuk ke tujuan 10.0.0.199:1434 # iptables -t nat -A POSTROUTING -p icmp -s 10.0.0.199 -j SNAT --ke-sumber 10.0.0.7 # service iptables simpan # chkconfig iptables aktif
Pada sql-linux2 (10.0.0.8), jalankan perintah berikut:
# yum instal iptables-services # iptables - flush # iptables -t nat -A PREROUTING -p tcp --dport 1433 -j DNAT --untuk ke tujuan 10.0.0.199:1433 # iptables -t nat -A PREROUTING -p tcp --dport 1434 -j DNAT --untuk ke tujuan 10.0.0.199:1434 # iptables -t nat -A POSTROUTING -p icmp -s 10.0.0.199 -j SNAT --ke-sumber 10.0.0.8 # service iptables simpan # chkconfig iptables aktif
Instal dan Konfigurasi VNC (dan paket terkait)
Untuk mengakses GUI dari server linux kami, dan kemudian menginstal dan mengkonfigurasi cluster kami, instal VNC server, serta beberapa paket yang diperlukan (perangkat lunak cluster membutuhkan redhat-lsb dan patch rpms).
# yum instal tigervnc-server xterm wget unzip patch redhat-lsb
# vncpasswd
URL berikut adalah panduan hebat untuk menjalankan Server VNC di RHEL 7 / CentOS 7: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-remote-access-for -the-gnome-desktop-on-centos-7 Catatan: Contoh konfigurasi ini menjalankan VNC pada tampilan 2 (: 2, alias port 5902) dan sebagai root (tidak aman). Sesuaikan sesuai!
# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@://.service # vi /etc/systemd/system/vncserver@:.service [Layanan] Ketik = forking # Bersihkan semua file yang ada di lingkungan /tmp/.X11-unix ExecStartPre = / bin / sh -c '/ usr / bin / vncserver -kill% i> / dev / null 2> & 1 || : ' ExecStart = / sbin / runuser -l root -c "/ usr / bin / vncserver% i -geometry 1024x768" PIDFile = / root / .vnc /% H% i.pid ExecStop = / bin / sh -c '/ usr / bin / vncserver -kill% i> / dev / null 2> & 1 || : ' # systemctl daemon-reload # systemctl aktifkan vncserver @: 2.service # vncserver: 2 -geometry 1024x768
Reboot Node Cluster
Mulai ulang node cluster Anda sehingga SELinux dinonaktifkan, dan disk ke-2 yang Anda tambahkan sebelumnya terdeteksi.
Partisi dan Format disk "data"
Pada Langkah 6 dari panduan ini ("Tambahkan Disk Data ke node cluster") kami melakukan hal itu …. menambahkan disk tambahan ke setiap node cluster untuk menyimpan data aplikasi yang akan kami lindungi. Dalam hal ini adalah database MySQL. Di Azure IaaS, Linux Virtual Machines menggunakan pengaturan berikut untuk disk:
- / dev / sda – disk OS
- / dev / sdb – disk sementara
- / dev / sdc – disk data pertama
- / dev / sdd – disk data kedua
- …
- / dev / sdj – disk data ke-8
Disk yang kita tambahkan pada Langkah 6 dari panduan ini akan muncul sebagai / dev / sdc. Anda dapat menjalankan perintah "fdisk -l" untuk memverifikasi. Anda akan melihat bahwa / dev / sda (OS) dan / dev / sdb (temporer) sudah memiliki partisi disk dan sedang digunakan.
# fdisk -l Disk / dev / sda: 31,5 GB, 31457280000 byte, 61440000 sektor Unit = sektor 1 * 512 = 512 byte Ukuran sektor (logis / fisik): 512 byte / 4096 byte Ukuran I / O (minimum / optimal): 4096 byte / 4096 byte Jenis label disk: dos Pengidentifikasi disk: 0x000c46d3 Perangkat Booting Mulai Akhir Blok Sistem Id / dev / sda1 * 2048 1026047 512000 83 Linux / dev / sda2 1026048 61439999 30206976 83 Linux Disk / dev / sdb: 7516 MB, 7516192768 byte, 14680064 sektor Unit = sektor 1 * 512 = 512 byte Ukuran sektor (logis / fisik): 512 byte / 4096 byte Ukuran I / O (minimum / optimal): 4096 byte / 4096 byte Jenis label disk: dos Pengidentifikasi disk: 0x7cd70e11 Perangkat Booting Mulai Akhir Blok Sistem Id / dev / sdb1 128 14678015 7338944 83 Linux Disk / dev / sdc: 10,7 GB, 10737418240 byte, 20971520 sektor Unit = sektor 1 * 512 = 512 byte Ukuran sektor (logis / fisik): 512 byte / 4096 byte Ukuran I / O (minimum / optimal): 4096 byte / 4096 byte
Di sini saya akan membuat partisi (/ dev / sdc1), memformatnya, dan memasangnya di lokasi default untuk SQL, yaitu / var / opt / mssql. Lakukan langkah-langkah berikut pada KEDUA "sql-linux1" dan "sql-linux2":
# fdisk / dev / sdc Command (m for help): n Perintah tindakan e diperpanjang p partisi primer (1-4) hal Nomor partisi (1-4): 1 Silinder pertama (1-1305, default 1): <enter> Menggunakan nilai default 1 Silinder, silinder, atau ukuran terakhir {K, M, G} (1-1305, standar 1305): <enter> Menggunakan nilai default 1305 Command (m for help): w Tabel partisi telah diubah! Memanggil ioctl () untuk membaca kembali tabel partisi. Menyinkronkan disk. [root @ sql-linux1 ~] #
# mkfs.ext4 / dev / sdc1 # mkdir / var / opt / mssql # chmod 770 / var / opt / mssql
Pasang sistem file:
# mount / dev / sdc1 / var / opt / mssql
Instal dan Konfigurasikan SQL Server
Jika Anda mulai dengan sistem linux baru, instruksi instalasi lengkap dapat ditemukan di sini.