Tutorial ini menjelaskan metode yang direkomendasikan untuk membuat konfigurasi Looker yang di-cluster untuk instance yang dihosting pelanggan.
Ringkasan
Deployment Looker yang dihosting pelanggan dapat menjalankan satu node atau di-cluster:
- Aplikasi Looker satu node, konfigurasi default, memiliki semua layanan yang membentuk aplikasi Looker yang berjalan di satu server.
- Konfigurasi Looker yang di-cluster adalah konfigurasi yang lebih kompleks, biasanya melibatkan server database, load balancer, dan beberapa server yang menjalankan aplikasi Looker. Setiap node dalam aplikasi Looker yang di-cluster adalah server yang menjalankan satu instance Looker.
Ada dua alasan utama mengapa organisasi ingin menjalankan Looker sebagai cluster:
- Load balancing
- Peningkatan ketersediaan dan failover
Bergantung pada masalah penskalaan, Looker yang di-cluster mungkin tidak memberikan solusi. Misalnya, jika sejumlah kecil kueri besar menggunakan memori sistem, satu-satunya solusi adalah meningkatkan memori yang tersedia untuk proses Looker.
Alternatif load balancing
Sebelum melakukan load balancing Looker, pertimbangkan untuk meningkatkan memori dan mungkin jumlah CPU dari satu server yang menjalankan Looker. Looker merekomendasikan untuk menyiapkan pemantauan performa mendetail untuk penggunaan memori dan CPU guna memastikan bahwa server Looker memiliki ukuran yang tepat untuk workload-nya.
Kueri besar memerlukan lebih banyak memori untuk performa yang lebih baik. Pengelompokan dapat memberikan peningkatan performa saat banyak pengguna menjalankan kueri kecil.
Untuk konfigurasi dengan maksimal 50 pengguna yang menggunakan Looker secara ringan, Looker merekomendasikan untuk menjalankan satu server yang setara dengan instance AWS EC2 berukuran besar (M4.large: RAM 8 GB, 2 core CPU). Untuk konfigurasi dengan lebih banyak pengguna atau banyak pengguna aktif yang menggunakan Looker secara intensif, perhatikan apakah CPU mengalami lonjakan atau apakah pengguna melihat kelambatan dalam aplikasi. Jika ya, pindahkan Looker ke server yang lebih besar atau jalankan konfigurasi Looker yang di-cluster.
Peningkatan ketersediaan/failover
Menjalankan Looker di lingkungan yang di-cluster dapat mengurangi waktu nonaktif jika terjadi gangguan. Ketersediaan tinggi sangat penting jika Looker API digunakan dalam sistem bisnis inti atau jika Looker disematkan ke dalam produk yang digunakan pelanggan.
Dalam konfigurasi Looker yang di-cluster, server proxy atau load balancer akan mengalihkan traffic saat menentukan bahwa satu node tidak berfungsi. Looker secara otomatis menangani node yang keluar dan bergabung dengan cluster.
Komponen yang diperlukan
Komponen berikut diperlukan untuk konfigurasi Looker yang di-cluster:
- Database aplikasi MySQL
- Node Looker (server yang menjalankan proses Java Looker)
- Load balancer
- Sistem file bersama
- Versi yang tepat dari file JAR aplikasi Looker
Diagram berikut mengilustrasikan cara komponen berinteraksi. Pada tingkat tinggi, load balancer mendistribusikan traffic jaringan antara node Looker yang di-cluster. Setiap node berkomunikasi dengan database aplikasi MySQL bersama, direktori penyimpanan bersama, dan server Git untuk setiap project LookML.

Database aplikasi MySQL
Looker menggunakan database aplikasi (sering disebut database internal) untuk menyimpan data aplikasi. Saat Looker berjalan sebagai aplikasi satu node, Looker biasanya menggunakan database HyperSQL dalam memori.
Dalam konfigurasi Looker yang di-cluster, instance Looker setiap node harus mengarah ke database transaksional bersama (database aplikasi atau internal bersama). Dukungan untuk database aplikasi untuk Looker yang di-cluster adalah sebagai berikut:
- Hanya MySQL yang didukung untuk database aplikasi untuk instance Looker yang di-cluster. Amazon Aurora dan MariaDB tidak didukung.
- MySQL versi 5.7+ dan 8.0+ didukung.
- Database yang di-cluster seperti Galera tidak didukung.
Looker tidak mengelola pemeliharaan dan pencadangan database tersebut. Namun, karena database menghosting hampir semua data konfigurasi aplikasi Looker, database tersebut harus disediakan sebagai database ketersediaan tinggi dan dicadangkan setidaknya setiap hari.
Node Looker
Setiap node adalah server dengan proses Java Looker yang berjalan di dalamnya. Server dalam cluster Looker harus dapat menjangkau satu sama lain dan database aplikasi Looker. Port default tercantum di Membuka port agar node dapat berkomunikasi di halaman ini.
Load balancer
Untuk menyeimbangkan beban atau mengalihkan permintaan ke node yang tersedia, load balancer atau server proxy (misalnya, NGINX atau AWS ELB) diperlukan untuk mengarahkan traffic ke setiap node Looker. Load balancer menangani health check. Jika terjadi kegagalan node, load balancer harus dikonfigurasi untuk mengalihkan traffic ke node lain yang responsif.
Saat memilih dan mengonfigurasi load balancer, pastikan load balancer dapat dikonfigurasi untuk beroperasi sebagai Lapisan 4 saja. Amazon Classic ELB adalah salah satu contohnya. Selain itu, load balancer harus memiliki waktu tunggu yang lama (3.600 detik) untuk mencegah kueri dihentikan.
Sistem file bersama
Anda harus menggunakan sistem file bersama yang sesuai dengan POSIX (seperti NFS, AWS EFS, Gluster, BeeGFS, Lustre, atau banyak lainnya). Looker menggunakan sistem file bersama sebagai repositori untuk berbagai informasi yang digunakan oleh semua node dalam cluster.
Aplikasi Looker (JAR yang dapat dieksekusi)
Anda harus menggunakan file JAR aplikasi Looker yang merupakan Looker 3.56 atau yang lebih baru.
Looker sangat merekomendasikan agar setiap node dalam cluster menjalankan versi rilis dan patch Looker yang sama, seperti yang dibahas di Memulai Looker di node pada halaman ini.
Menyiapkan cluster
Tugas berikut diperlukan:
- Menginstal Looker
- Menyiapkan database aplikasi MySQL
- Menyiapkan sistem file bersama
- Membagikan repositori kunci SSH (bergantung pada situasi Anda)
- Membuka port agar node dapat berkomunikasi
- Memulai Looker di node
Menginstal Looker
Pastikan Anda telah menginstal Looker di setiap node, menggunakan file JAR aplikasi Looker dan petunjuk di halaman dokumentasi Langkah-langkah penginstalan yang dihosting pelanggan.
Menyiapkan database aplikasi MySQL
Untuk konfigurasi Looker yang di-cluster, database aplikasi harus berupa database MySQL. Jika Anda memiliki instance Looker yang tidak di-cluster dan menggunakan HyperSQL untuk database aplikasi, Anda harus memigrasikan data aplikasi dari data HyperSQL ke database aplikasi MySQL bersama yang baru.
Lihat halaman dokumentasi Memigrasikan ke MySQL untuk mengetahui informasi tentang mencadangkan Looker, lalu memigrasikan database aplikasi dari HyperSQL ke MySQL.
Menyiapkan sistem file bersama
Hanya jenis file tertentu—file model, kunci deployment, plugin, dan mungkin file manifes aplikasi—yang berada dalam sistem file bersama. Untuk menyiapkan sistem file bersama:
- Di server yang akan menyimpan sistem file bersama, pastikan Anda memiliki akses ke akun lain yang dapat
suke akun pengguna Looker. - Di server untuk sistem file bersama, login ke akun pengguna Looker.
- Jika Looker sedang berjalan, hentikan konfigurasi Looker Anda.
- Jika sebelumnya Anda melakukan pengelompokan menggunakan skrip Linux inotify, hentikan skrip tersebut, hapus dari cron, dan hapus.
- Buat berbagi jaringan dan pasang di setiap node dalam cluster. Pastikan berbagi jaringan dikonfigurasi untuk dipasang secara otomatis di setiap node, dan pengguna Looker memiliki kemampuan untuk membaca dan menulis ke dalamnya. Dalam contoh berikut, berbagi jaringan diberi nama
/mnt/looker-share. Di satu node, salin kunci deployment Anda, dan pindahkan plugin serta direktori
looker/modelsdanlooker/models-user-*, yang menyimpan file model Anda, ke berbagi jaringan Anda. Contoh:mv looker/models /mnt/looker-share/ mv looker/models-user-* /mnt/looker-share/Untuk setiap node, tambahkan setelan
--shared-storage-dirkeLOOKERARGS. Tentukan berbagi jaringan, seperti yang ditunjukkan dalam contoh ini:--shared-storage-dir /mnt/looker-shareLOOKERARGSharus ditambahkan ke$HOME/looker/lookerstart.cfgagar setelan tidak terpengaruh oleh update. JikaLOOKERARGSAnda tidak tercantum dalam file tersebut, berarti seseorang mungkin telah menambahkannya langsung ke skrip shell$HOME/looker/looker.Setiap node dalam cluster harus menulis ke direktori
/logyang unik—atau setidaknya file log yang unik.
Membagikan repositori kunci SSH
- Anda membuat cluster sistem file bersama dari konfigurasi Looker yang ada, dan
- Anda memiliki project yang dibuat di Looker 4.6 atau yang lebih lama.
Siapkan repositori kunci SSH untuk dibagikan:
Di server file bersama, buat direktori bernama
ssh-share. Contoh:/mnt/looker-share/ssh-share.Pastikan direktori
ssh-sharedimiliki oleh pengguna Looker dan izinnya adalah 700. Selain itu, pastikan direktori di atas direktorissh-share(seperti/mntdan/mnt/looker-share) tidak dapat ditulis oleh semua orang atau grup.Di satu node, salin konten
$HOME/.sshke direktorissh-sharebaru. Contoh:cp $HOME/.ssh/* /mnt/looker-share/ssh-shareUntuk setiap node, buat cadangan file SSH yang ada dan buat symlink ke direktori
ssh-share. Contoh:cd $HOME mv .ssh .ssh_bak ln -s /mnt/looker-share/ssh-share .sshPastikan untuk melakukan langkah ini untuk setiap node.
Membuka port agar node dapat berkomunikasi
Node Looker yang di-cluster berkomunikasi satu sama lain melalui HTTPS dengan sertifikat yang ditandatangani sendiri dan skema autentikasi tambahan berdasarkan rahasia yang dirotasi dalam database aplikasi.
Port default yang harus dibuka antara node cluster adalah 1551 dan 61616. Port ini dapat dikonfigurasi menggunakan flag startup yang tercantum di sini. Sebaiknya batasi akses jaringan ke port ini agar traffic hanya diizinkan antara host cluster.
Memulai Looker di node
Mulai ulang server di setiap node dengan flag startup yang diperlukan.
Flag startup yang tersedia
Tabel berikut menunjukkan flag startup yang tersedia, termasuk flag yang diperlukan untuk memulai atau bergabung dengan cluster:
| Flag | Wajib? | Nilai | Tujuan |
|---|---|---|---|
--clustered |
Ya | Tambahkan flag untuk menentukan bahwa node ini berjalan dalam mode cluster. | |
-H atau --hostname |
Ya | 10.10.10.10 |
Nama host yang digunakan node lain untuk menghubungi node ini, seperti alamat IP node atau nama host sistemnya. Harus berbeda dengan nama host semua node lain dalam cluster. |
-n |
Tidak | 1551 |
Port untuk komunikasi antar-node. Defaultnya adalah 1551. Semua node harus menggunakan nomor port yang sama untuk komunikasi antar-node. |
-q |
Tidak | 61616 |
Port untuk mengantrekan peristiwa di seluruh cluster. Defaultnya adalah 61616. |
-d |
Ya | /path/to/looker-db.yml |
Jalur ke file yang menyimpan kredensial untuk database aplikasi Looker. |
--shared-storage-dir |
Ya | /path/to/mounted/shared/storage |
Opsi ini harus mengarah ke penyiapan direktori bersama yang telah dilakukan sebelumnya di halaman ini yang menyimpan direktori looker/model dan looker/models-user-*. |
Contoh LOOKERARGS dan menentukan kredensial database
Tempatkan flag startup Looker dalam file lookerstart.cfg, yang terletak di direktori yang sama dengan file JAR Looker.
Misalnya, Anda mungkin ingin memberi tahu Looker:
- Untuk menggunakan file bernama
looker-db.ymluntuk kredensial database-nya, - bahwa file tersebut adalah node yang di-cluster, dan
- bahwa node lain dari cluster harus menghubungi host ini di alamat IP 10.10.10.10.
Anda akan menentukan:
LOOKERARGS="-d looker-db.yml --clustered -H 10.10.10.10"
File looker-db.yml akan berisi kredensial database, seperti:
host: your.db.hostname.com
username: db_user
database: looker
dialect: mysql
port: 3306
password: secretPassword
Dan, jika database MySQL Anda memerlukan koneksi SSL, file looker-db.yml juga memerlukan hal berikut:
ssl: true
Jika tidak ingin menyimpan konfigurasi dalam file looker-db.yml di disk, Anda dapat mengonfigurasi variabel lingkungan LOOKER_DB untuk berisi daftar kunci dan nilai untuk setiap baris dalam file looker-db.yml. Contoh:
export LOOKER_DB="dialect=mysql&host=localhost&username=root&password=&database=looker&port=3306"
Menemukan kunci deployment SSH Git
Tempat Looker menyimpan kunci deployment SSH Git bergantung pada rilis tempat project dibuat:
- Untuk project yang dibuat sebelum Looker 4.8, kunci deployment disimpan di direktori SSH bawaan server,
~/.ssh. - Untuk project yang dibuat di Looker 4.8 atau yang lebih baru, kunci deployment disimpan di direktori yang dikontrol Looker,
~/looker/deploy_keys/PROJECT_NAME.
Memodifikasi cluster Looker
Setelah membuat cluster Looker, Anda dapat menambahkan atau menghapus node tanpa membuat perubahan pada node cluster lainnya.
Mengupdate cluster ke rilis Looker baru
Update mungkin melibatkan perubahan skema pada database internal Looker yang tidak akan kompatibel dengan versi Looker sebelumnya. Untuk mengupdate Looker, ada dua metode.
Metode yang lebih aman
- Buat cadangan database aplikasi.
- Hentikan semua node cluster.
- Ganti file JAR di setiap server.
- Mulai setiap node satu per satu.
Metode yang lebih cepat
Untuk mengupdate menggunakan metode yang lebih cepat tetapi kurang lengkap ini:
- Buat replika database aplikasi Looker.
- Mulai cluster baru yang mengarah ke replika.
- Arahkan server proxy atau load balancer ke node baru, setelah itu Anda dapat menghentikan node lama.