Pengelompokan Looker

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

Ringkasan

Deployment Looker yang dihosting pelanggan dapat menjalankan node tunggal atau berkluster:

  • 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 dikelompokkan 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 dikelompokkan mungkin tidak memberikan solusi. Misalnya, jika sejumlah kecil kueri besar menghabiskan memori sistem, satu-satunya solusi adalah menambah memori yang tersedia untuk proses Looker.

Alternatif load balancing

Sebelum menyeimbangkan beban Looker, pertimbangkan untuk meningkatkan memori dan mungkin jumlah CPU satu server yang menjalankan Looker. Looker merekomendasikan penyiapan pemantauan performa mendetail untuk penggunaan memori dan CPU guna memastikan server Looker memiliki ukuran yang tepat 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 hingga 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 super aktif, perhatikan apakah CPU melonjak atau apakah pengguna melihat kelambatan dalam aplikasi. Jika demikian, pindahkan Looker ke server yang lebih besar atau jalankan konfigurasi Looker yang dikelompokkan.

Peningkatan ketersediaan/pengalihan

Menjalankan Looker di lingkungan bercluster dapat mengurangi waktu henti jika terjadi pemadaman. Ketersediaan tinggi sangat penting jika Looker API digunakan dalam sistem bisnis inti atau jika Looker disematkan ke dalam produk yang ditujukan untuk pelanggan.

Dalam konfigurasi Looker yang dikelompokkan, server proxy atau load balancer akan mengalihkan traffic saat menentukan bahwa satu node tidak berfungsi. Looker secara otomatis menangani node yang keluar dan bergabung ke 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
  • File JAR aplikasi Looker versi yang tepat

Diagram berikut menggambarkan cara komponen berinteraksi. Secara umum, load balancer mendistribusikan traffic jaringan di antara node Looker yang dikelompokkan. 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 berjalan sebagai aplikasi satu node, Looker biasanya menggunakan database HyperSQL dalam memori.

Dalam konfigurasi Looker yang dikelompokkan, setiap instance Looker di setiap node harus mengarah ke database transaksional bersama (database internal atau aplikasi bersama). 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 yang dikelompokkan 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 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 terhubung dan terhubung ke 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 responsif yang tersisa.

Saat memilih dan mengonfigurasi load balancer, pastikan load balancer dapat dikonfigurasi untuk beroperasi sebagai Layer 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 kompatibel 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 (dapat dieksekusi JAR)

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 dalam Mulai 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. Bagikan repositori kunci SSH (bergantung pada situasi Anda)
  5. Membuka port agar node dapat berkomunikasi
  6. Mulai 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 berpotensi file manifes aplikasi — yang berada di 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, nonaktifkan konfigurasi Looker Anda.
  4. Jika sebelumnya Anda melakukan pengelompokan menggunakan skrip Linux inotify, hentikan skrip tersebut, hapus dari cron, dan hapus skrip tersebut.
  5. Buat berbagi jaringan dan pasang di setiap node dalam cluster. Pastikan direktori tersebut dikonfigurasi untuk dipasang secara otomatis di setiap node, dan pengguna Looker memiliki kemampuan untuk membaca dan menulis ke direktori tersebut. Dalam contoh berikut, berbagi jaringan diberi nama /mnt/looker-share.
  6. Di satu node, salin kunci deployment Anda, lalu pindahkan plugin dan direktori looker/models dan looker/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/
    
  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, berarti 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 agar dapat 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 publik atau grup.

  2. Di satu node, salin isi $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 yang ditandatangani sendiri dan skema autentikasi tambahan berdasarkan rahasia yang dirotasi dalam database aplikasi.

Port default yang harus dibuka 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 tanda mulai yang diperlukan.

Flag startup yang tersedia

Tabel berikut menunjukkan tanda mulai yang tersedia, termasuk tanda yang diperlukan untuk memulai atau bergabung dengan cluster:

Flag Wajib? Nilai Tujuan
--clustered Ya Tambahkan tanda untuk menentukan bahwa node ini berjalan dalam mode berkluster.
-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 dari nama host semua node lain dalam cluster.
-n Tidak 1551 Port untuk komunikasi antar-node. Nilai 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 sebelumnya di halaman ini yang menyimpan direktori looker/model dan looker/models-user-*.

Contoh LOOKERARGS dan menentukan kredensial database

Tempatkan tanda peluncuran Looker dalam file lookerstart.cfg, yang berada di direktori yang sama dengan file JAR Looker.

Misalnya, Anda mungkin ingin memberi tahu Looker:

  • Untuk menggunakan file bernama looker-db.yml untuk kredensial databasenya,
  • bahwa itu adalah node yang dikelompokkan, 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 Anda

Tempat Looker menyimpan kunci deployment SSH Git bergantung pada rilis saat 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 berkluster lainnya.

Memperbarui cluster ke rilis Looker baru

Update dapat 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.