Ini adalah artikel keenam dan terakhir dalam Mengembangkan dan Menerapkan Aplikasi Kubernetes pada seri Raspberry Pi Cluster. Ini menandai transisi dari fokus Raspberry Pi murni ke pengembangan perangkat lunak secara lebih umum. Dengan pemasangan database, kami akan memiliki platform berfitur lengkap yang memenuhi persyaratan kami untuk pengembangan dan penerapan aplikasi
Artikel ini membahas cara menginstal dan mengonfigurasi MariaDB, alternatif setara fitur untuk MySQL, di Raspberry Pi. Instalasi relatif mudah. Mengkonfigurasi database agak lebih rumit tetapi masih cukup mudah dikelola
Ringkasan
Sebagian besar aplikasi signifikan bergantung pada semacam database. Pada 2019, basis data relasional membentuk sekitar 60% dari platform basis data aplikasi. Dari mereka, MySQL adalah salah satu yang paling populer. MariaDB juga cukup populer. MariaDB dan MySQL melakukan hampir semua hal yang dilakukan database relasional lainnya. Seperti MySQL, MariaDB relatif mudah digunakan dan gratis
Mengapa tidak menginstal MySQL saja? . Setidaknya saya tidak dapat menemukannya
MariaDB dibuat oleh pengembang asli MySQL dari fork MySQL. Lihat sumber ini untuk diskusi tentang pro dan kontra dari MySQL vs. MariaDB. Per pengembang MariaDB. “Versi MariaDB berfungsi sebagai 'pengganti drop-in' untuk versi MySQL yang setara. ”
Ada panduan kompatibilitas yang tersedia di situs web MariaDB
Regresi singkat…
Artikel kedua dalam seri ini, Cara Menyiapkan Cluster Raspberry Pi, menjelaskan topologi cluster yang ingin saya siapkan
Topologi klaster saya — gambar milik HiClipart, Comcast, BlackBox, dan Cleanpng
Jika Anda telah mengikuti seri ini, Anda mungkin telah menyiapkan klaster Raspberry Pi Anda sendiri dengan cara yang serupa. Sepanjang sisa artikel ini, saya akan merujuk kembali ke diagram ini
Instal MariaDB
Anda perlu membuat keputusan saat menginstal MariaDB. Apakah Anda ingin menginstal server atau klien? . Untuk fleksibilitas, ditambah dukungan pemecahan masalah, saya memilih untuk menginstal klien di semua host di klaster saya serta di MacBook Pro saya di jaringan eksternal. Sejauh server berjalan, saya memilih untuk meletakkannya di host sudo mysql -uroot4 (AKA Pi Router). Saya punya beberapa alasan untuk ini
- Ini adalah Raspberry Pi 4B+ vs. 3B + untuk sisanya. Saya beralasan bahwa mesin yang lebih kuat akan menjadi tempat terbaik untuk memasangnya
- Saya bereksperimen dengan database MySQL (ya, MySQL) yang terletak di MacBook saya untuk melihat apakah itu membuat perbedaan kinerja. Ternyata tidak
- Mungkin alasan utama saya menginstal MariaDB di sudo mysql -uroot4 adalah dapat diakses dari cluster dan jaringan eksternal
Pemasangannya sederhana. Instalasi MariaDB hadir dengan komponen klien dan server. Untuk memasang
sudo apt-get install mariadb-server -ysudo mysql -uroot6 mengarahkan sudo mysql -uroot3 untuk secara otomatis menjawab ya untuk semua petunjuk. Biarkan saja jika Anda ingin lebih mengontrol instalasi
Seperti yang dinyatakan di atas, perintah ini juga akan menginstal klien MariaDB. Untuk masuk pertama kali, Anda harus menggunakan sudo mysql -uroot8 pengguna. Akses melalui sudo mysql -uroot8 pengguna dilindungi, jadi Anda harus menggunakan sudo mysql_secure_installation0
sudo mysql -urootHarus menggunakan sudo mysql_secure_installation_0 tidak optimal. Kita akan melihat cara mengatasinya di bagian selanjutnya
Ada opsi untuk meningkatkan keamanan instalasi dasar yang dilakukan di atas. Ini dilakukan dengan menggunakan alat sudo mysql_secure_installation_2. Anda dapat menggunakannya untuk menetapkan kata sandi root yang sesuai serta secara opsional mengonfigurasi beberapa pengaturan lain yang dapat membuat penginstalan lebih aman. Anda menjalankannya sebagai berikut
sudo mysql_secure_installation_Ikuti petunjuk yang sesuai untuk kebutuhan Anda
Menginstal perangkat lunak klien pada host lain di jaringan sangatlah mudah. Di Mac, Anda dapat menggunakan Homebrew
brew install mysql-clientDi host Raspberry Pi, jalankan
sudo apt-get install mysql-clientBahkan jika Anda mengikuti semua langkah di atas, apa yang dapat Anda lakukan masih terbatas, termasuk masuk sebagai root tanpa menggunakan sudo mysql_secure_installation0. Kami akan membahas cara mengatasinya selanjutnya
Konfigurasikan MariaDB
Pada titik ini, Anda memiliki server MariaDB yang sedang berjalan dan perangkat lunak klien yang Anda perlukan untuk mengelola dan berinteraksi dengannya. Awalnya, hanya pengguna root yang dikonfigurasi, dan Anda harus menggunakan sudo mysql_secure_installation0 untuk login. Selain itu, akses jarak jauh tidak diaktifkan dan harus dikonfigurasi
Selesaikan penyiapan pengguna root
Langkah ini akan memungkinkan untuk tidak menggunakan sudo mysql_secure_installation0 untuk masuk ke MariaDB. Masuk ke MariaDB seperti yang harus kita lakukan di bagian sebelumnya
sudo mysql -urootWelcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 67
Server version: 10.3.22-MariaDB-0+deb10u1 Raspbian 10...
Selanjutnya, kita perlu mengubah izin sudo mysql -uroot8
MariaDB [(none)]> GRANT ALL PRIVILEGES on *.*TO 'root'@'%'
IDENTIFIED BY '<yourpasswordhere>';
Query OK, 0 rows affected (0.001 sec)MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)
Perintah pertama mengonfigurasi akses root dari mesin mana pun di jaringan (yaitu dengan sudo mysql_secure_installation7 tidak). sudo mysql_secure_installation8 digunakan untuk mengatur kata sandi sudo mysql -uroot8 (jika Anda masih perlu melakukannya). brew install mysql-client0 segera membuat perubahan efektif
Untuk memastikan ini semua berhasil, keluar dari sesi dan masuk lagi tanpa menggunakan sudo mysql_secure_installation0
mysql -uroot -hlocalhost -pAnda harus dimintai kata sandi. Masukkan kata sandi sudo mysql -uroot_8. Jika Anda masuk, lanjutkan dan keluar
quit;Jika Anda mengalami masalah, tinjau kembali langkah-langkah di atas dan pastikan Anda melakukan semuanya
Konfigurasikan akses jarak jauh
Jika Anda berencana mengakses server dari host jarak jauh mana pun, atau bahkan alamat IP host lokal, Anda harus mengonfigurasi MariaDB untuk mengizinkannya. Untuk melakukannya, Anda harus mengedit brew install mysql-client3 (nama file yang sebenarnya mungkin berbeda, tetapi lokasinya harus sama). Ini adalah file konfigurasi untuk MariaDB. Beberapa baris teratas file akan terlihat seperti ini
Perhatikan baris terakhir di atas, baris yang menyatakan brew install mysql-client4. Jika ini tidak dikomentari, dan memang tidak demikian, maka Anda hanya dapat terhubung ke MariaDB dari brew install mysql-client5 atau brew install mysql-client6. Untuk mengizinkan konektivitas dari tempat lain di jaringan, seperti host lain di cluster, Anda harus memberi komentar pada baris tersebut seperti yang ditunjukkan di atas dan memulai ulang server
sudo systemctl restart mysqlRestart diperlukan untuk memuat ulang konfigurasi yang dimodifikasi
Anda dapat memverifikasi langkah ini berhasil dengan masuk kembali ke MariaDB tetapi menggunakan alamat IP non-lokal host. Anda dapat mencapai hal yang sama dengan masuk dari host yang berbeda. Alamat host saya adalah brew install mysql-client7
sudo mysql -uroot0Jika ini tidak berhasil, kembali dan periksa kembali langkah-langkah di atas, termasuk memulai ulang MariaDB
Tambahkan pengguna lain dan konfigurasikan untuk akses jarak jauh
Jadi sekarang Anda harus dapat masuk sebagai sudo mysql -uroot8 dari mesin lokal dan juga dari host lain. Selanjutnya, Anda ingin menambahkan pengguna untuk aplikasi Anda dan menyiapkan hak akses yang diperlukan. Dalam hal ini, kami akan menambahkan pengguna brew install mysql-client9 dengan kata sandi brew install mysql-client9 (tentu saja, Anda tidak akan pernah menentukan kata sandi yang cocok dengan ID pengguna di dunia nyata karena itu sangat tidak aman)
Sebagai sudo mysql -uroot8, masuk ke server (maaf, Anda harus menggunakan sudo mysql_secure_installation0 untuk ini)
sudo mysql -uroot_1Ketik perintah berikut
sudo mysql -uroot_2sudo apt-get install mysql-client_3 menunjukkan kami ingin melakukan perintah berikut dari database sudo apt-get install mysql-client4. Ini adalah database sistem utama, tempat hal-hal seperti informasi pengguna disimpan. sudo apt-get install mysql-client_5 jelas membuat pengguna. Seperti sudo mysql -uroot8 di atas, sudo apt-get install mysql-client7 menunjukkan dari host mana pengguna akan diizinkan masuk. Menentukan sudo apt-get install mysql-client_8 karakter pengganti menunjukkan bahwa pengguna brew install mysql-client9 akan diizinkan masuk dari host mana pun. Seperti di atas, sudo mysql -uroot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 67
Server version: 10.3.22-MariaDB-0+deb10u1 Raspbian 10..._0 menentukan kata sandi
sudo mysql -uroot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 67
Server version: 10.3.22-MariaDB-0+deb10u1 Raspbian 10...1 menetapkan bahwa pengguna ini akan dapat melakukan hampir semua operasi, termasuk membuat database dan tabel, serta memberikan izin kepada orang lain untuk melakukan hal yang sama. Ini juga sedikit masalah keamanan dan bukan sesuatu yang ingin Anda lakukan dalam praktiknya
brew install mysql-client0 memuat ulang konfigurasi hak istimewa
Seperti sudo mysql -uroot_8, Anda sekarang dapat masuk ke server sebagai sudo mysql -uroot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 67
Server version: 10.3.22-MariaDB-0+deb10u1 Raspbian 10...4 dari mana saja di cluster
Itu saja, Anda sudah selesai. MariaDB sepenuhnya dikonfigurasi dan siap digunakan
Ringkasan
Pada artikel ini, kami telah menginstal dan mengonfigurasi MariaDB. Langkah selanjutnya adalah menggunakan cluster sebagai platform penyebaran aplikasi
Ini menandai berakhirnya fokus Raspberry Pi dari Mengembangkan dan Menyebarkan Aplikasi Kubernetes pada seri Raspberry Pi Cluster. Artikel lanjutan akan lebih fokus pada aplikasi. Tujuan dari aplikasi ini adalah
- Relatif sederhana, mudah dimengerti, dan berkualitas produksi. Itu harus lebih dari sekadar template aplikasi sederhana dan sedikit kurang dari aplikasi berfitur lengkap. Ini mungkin tindakan penyeimbangan yang sulit
- Mendemonstrasikan praktik terbaik untuk karakteristik non-fungsional aplikasi, yang disebut -ilities, atau atribut kualitas aplikasi. Beberapa di antaranya didukung langsung oleh platform, mis. e. , Kubernetes dan Helm. Lainnya harus dirancang dan diimplementasikan ke dalam aplikasi, misalnya metrik dan logging
- Penggunaan prinsip RESTful secara efektif
- Pengujian otomatis dan integrasi berkelanjutan
- Penerapan ke Kubernetes melalui Helm
- Ditulis dalam Go
Saya telah membuat kemajuan yang baik pada aplikasi yang sebagian menjawab tujuan ini. Ini masih dalam proses, tapi ini awal yang baik. Jika Anda ingin mengintip, saat ini tersedia di GitHub. Jika Anda berambisi dan menyiapkan klaster Anda, README dapat membantu memandu Anda melalui prasyarat lain dan langkah penerapan. Jika Anda lebih ambisius, baca kodenya, buat masalah, kirim PR, dan sebagainya
Terima kasih telah mengikuti. Nantikan rangkaian artikel berikutnya yang membahas praktik terbaik pengembangan dan penerapan aplikasi