Pengelompokan Looker

Tutorial ini menjelaskan metode yang direkomendasikan untuk membuat konfigurasi Looker yang dikelompokkan untuk instance yang dihosting pelanggan.

Ringkasan

Deployment Looker yang dihosting pelanggan dapat berjalan dengan satu node atau cluster:

  • Aplikasi Looker satu node, konfigurasi default, memiliki semua layanan yang membentuk aplikasi Looker yang berjalan di satu server.
  • Konfigurasi Looker yang dikelompokkan adalah konfigurasi yang lebih kompleks, biasanya melibatkan server database, load balancer, dan beberapa server yang menjalankan aplikasi Looker. Setiap node dalam aplikasi Looker yang dikelompokkan adalah server yang menjalankan satu instance Looker.

Ada dua alasan utama organisasi ingin menjalankan Looker sebagai cluster:

  • Load balancing
  • Peningkatan ketersediaan dan failover

Bergantung pada masalah penskalaan, Looker yang dikelompokkan mungkin tidak memberikan solusi. Misalnya, jika sejumlah kecil kueri besar menghabiskan memori sistem, satu-satunya solusi adalah dengan 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 penyiapan pemantauan performa mendetail untuk penggunaan memori dan CPU guna memastikan server Looker memiliki ukuran yang sesuai untuk beban kerjanya.

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 dengan kapasitas 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 andal, perhatikan apakah CPU mengalami lonjakan atau apakah pengguna melihat kelambatan dalam aplikasi. Jika demikian, pindahkan Looker ke server yang lebih besar atau jalankan konfigurasi Looker yang dikelompokkan.

Peningkatan ketersediaan/failover

Menjalankan Looker di lingkungan cluster dapat mengurangi periode nonaktif jika terjadi pemadaman layanan. Ketersediaan tinggi sangat penting jika Looker API digunakan dalam sistem bisnis inti atau jika Looker disematkan ke dalam produk yang ditampilkan kepada pelanggan.

Dalam konfigurasi Looker yang di-cluster, server proxy atau load balancer akan mengalihkan rute traffic saat menentukan bahwa satu node tidak aktif. Looker secara otomatis menangani node yang keluar dan bergabung ke cluster.

Komponen yang diperlukan

Komponen berikut diperlukan untuk konfigurasi Looker yang dikelompokkan:

  • Database aplikasi MySQL
  • Node Looker (server yang menjalankan proses Java Looker)
  • Load balancer
  • Sistem file bersama
  • Versi file JAR aplikasi Looker yang tepat

Diagram berikut menggambarkan cara komponen berinteraksi. Pada tingkat tinggi, load balancer mendistribusikan traffic jaringan di antara node Looker yang dikelompokkan. Setiap node berkomunikasi ke 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 berjalan sebagai aplikasi node tunggal, Looker biasanya menggunakan database HyperSQL dalam memori.

Dalam konfigurasi Looker yang dikelompokkan, setiap instance Looker node harus mengarah ke database transaksional bersama (aplikasi bersama atau database internal). Dukungan untuk database aplikasi untuk Looker yang dikelompokkan adalah sebagai berikut:

  • Hanya MySQL yang didukung untuk database aplikasi untuk instance Looker yang dikelompokkan. Amazon Aurora dan MariaDB tidak didukung.
  • MySQL versi 5.7+ dan 8.0+ didukung.
  • Database cluster seperti Galera tidak didukung.

Looker tidak mengelola pemeliharaan dan pencadangan database tersebut. Namun, karena database menghosting hampir semua data konfigurasi aplikasi Looker, database harus disediakan sebagai database dengan ketersediaan tinggi dan dicadangkan setidaknya setiap hari.

Node Looker

Setiap node adalah server dengan proses Java Looker yang berjalan di dalamnya. Server di cluster Looker harus dapat saling menjangkau 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 yang masih berfungsi.

Saat memilih dan mengonfigurasi load balancer, pastikan load balancer dapat dikonfigurasi untuk beroperasi hanya sebagai Lapisan 4. 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 mematuhi 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 di halaman ini.

Menyiapkan cluster

Tugas berikut diperlukan:

  1. Menginstal Looker
  2. Menyiapkan database aplikasi MySQL
  3. Menyiapkan sistem file bersama
  4. Membagikan repositori kunci SSH (bergantung pada situasi Anda)
  5. Buka port agar node dapat berkomunikasi
  6. 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 dikelompokkan, database aplikasi harus berupa database MySQL. Jika Anda memiliki instance Looker non-cluster yang sudah ada dan menggunakan HyperSQL untuk database aplikasi, Anda harus memigrasikan data aplikasi dari data HyperSQL ke database aplikasi MySQL bersama yang baru.

Lihat halaman dokumentasi Bermigrasi 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 kemungkinan file manifes aplikasi — yang termasuk dalam sistem file bersama. Untuk menyiapkan sistem file bersama:

  1. Di server yang akan menyimpan sistem file bersama, pastikan Anda memiliki akses ke akun lain yang dapat su ke akun pengguna Looker.
  2. Di server untuk sistem file bersama, login ke akun pengguna Looker.
  3. Jika Looker sedang berjalan, matikan konfigurasi Looker Anda.
  4. Jika sebelumnya Anda melakukan clustering menggunakan skrip Linux inotify, hentikan skrip tersebut, hapus dari cron, dan hapus.
  5. Buat berbagi jaringan dan pasang di setiap node dalam cluster. Pastikan volume dikonfigurasi untuk di-automount di setiap node, dan pengguna Looker memiliki kemampuan untuk membaca dan menulis ke volume tersebut. Dalam contoh berikut, berbagi jaringan diberi nama /mnt/looker-share.
  6. Di satu node, salin kunci deployment, dan pindahkan plugin serta direktori looker/models dan looker/models-user-*, yang menyimpan file model, ke berbagi jaringan Anda. Contoh:

    mv looker/models /mnt/looker-share/
    mv looker/models-user-* /mnt/looker-share/
    
  7. Untuk setiap node, tambahkan setelan --shared-storage-dir ke LOOKERARGS. Tentukan berbagi jaringan, seperti yang ditunjukkan dalam contoh ini:

    --shared-storage-dir /mnt/looker-share
    

    LOOKERARGS harus ditambahkan ke $HOME/looker/lookerstart.cfg agar setelan tidak terpengaruh oleh update. Jika LOOKERARGS Anda tidak tercantum dalam file tersebut, seseorang mungkin telah menambahkannya langsung ke skrip shell $HOME/looker/looker.

    Setiap node dalam cluster harus menulis ke direktori /log yang 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 yang akan dibagikan:

  1. Di server file bersama, buat direktori bernama ssh-share. Contoh: /mnt/looker-share/ssh-share.

    Pastikan direktori ssh-share dimiliki oleh pengguna Looker dan izinnya adalah 700. Selain itu, pastikan direktori di atas direktori ssh-share (seperti /mnt dan /mnt/looker-share) tidak dapat ditulis oleh semua orang atau grup.

  2. Di satu node, salin konten $HOME/.ssh ke direktori ssh-share baru. Contoh:

    cp $HOME/.ssh/* /mnt/looker-share/ssh-share

  3. Untuk 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 .ssh
    

    Pastikan untuk melakukan langkah ini untuk setiap node.

Membuka port agar node dapat berkomunikasi

Node Looker yang dikelompokkan berkomunikasi satu sama lain melalui HTTPS dengan sertifikat dengan tanda tangan sendiri dan skema autentikasi tambahan berdasarkan rahasia yang dirotasi di database aplikasi.

Port default yang harus terbuka di 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 untuk mengizinkan traffic hanya di 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 ke cluster:

Tanda 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. Nilai default-nya adalah 1551. Semua node harus menggunakan nomor port yang sama untuk komunikasi antar-node.
-q Tidak 61616 Port untuk mengantrekan peristiwa 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 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.yml untuk kredensial database-nya,
  • bahwa node tersebut adalah node cluster, dan
  • bahwa node lain dalam 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

Selain itu, 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 agar 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 deploy 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.

Mengubah 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. Ada dua metode untuk mengupdate Looker.

Metode yang lebih aman

  1. Buat cadangan database aplikasi.
  2. Hentikan semua node cluster.
  3. Ganti file JAR di setiap server.
  4. Mulai setiap node satu per satu.

Metode yang lebih cepat

Untuk mengupdate menggunakan metode yang lebih cepat tetapi kurang lengkap ini:

  1. Buat replika database aplikasi Looker.
  2. Mulai cluster baru yang mengarah ke replika.
  3. Arahkan server proxy atau load balancer ke node baru, lalu Anda dapat menghentikan node lama.