Alibaba Cloud Network Load Balancer (NLB) menyediakan penyeimbangan beban cerdas untuk node SSH DataWorks guna mencegah titik kegagalan tunggal dan menyederhanakan konfigurasi tugas. Topik ini menjelaskan cara menerapkan dan menggunakan solusi tersebut di DataWorks agar tugas SSH berjalan secara stabil.
Latar Belakang
Di DataWorks, sumber data SSH biasanya dikonfigurasikan dengan alamat host dari instans ECS tetap. Jika host tersebut menjadi tidak sehat—misalnya mengalami crash atau kehabisan resource—node SSH mungkin gagal dijalankan. Untuk mengatasi hal ini, Anda dapat menambahkan beberapa instans ECS ke server group pada instans Network Load Balancer (NLB). NLB menggunakan algoritma internalnya untuk mendistribusikan permintaan tugas ke instans ECS yang tersedia dan terus-menerus memeriksa status kesehatannya. Jika suatu instans ECS gagal, NLB secara otomatis mengarahkan permintaan ke instans lain yang sehat. Pendekatan ini mencegah kegagalan satu instans mengganggu tugas dan menjamin ketersediaan tinggi.
Seperti yang ditunjukkan pada gambar sebelumnya:
-
Tanpa penyeimbangan beban: Tugas node SSH DataWorks hanya dapat dijalankan pada instans ECS yang terhubung. Jika instans tersebut kelebihan beban atau gagal, tugas akan tertunda atau terganggu.
-
Dengan penyeimbangan beban: Tugas node SSH DataWorks secara otomatis diarahkan ke instans ECS dalam server group berdasarkan kebijakan NLB. NLB juga melakukan pemeriksaan kesehatan pada server group. Jika mendeteksi instans ECS yang tidak sehat, NLB secara otomatis mengarahkan tugas ke instans lain yang sehat, sehingga menjamin kelangsungan dan ketersediaan tinggi.
Solusi ini mencegah kehabisan resource dan titik kegagalan tunggal, meningkatkan efisiensi serta keandalan eksekusi tugas.
Prasyarat
-
Pengguna RAM yang ingin Anda gunakan telah ditambahkan ke ruang kerja Anda.
Jika Anda ingin menggunakan pengguna RAM untuk mengembangkan tugas, Anda harus menambahkan pengguna RAM tersebut ke ruang kerja sebagai anggota dan memberikan peran Develop atau Workspace Administrator. Peran Workspace Administrator memiliki izin lebih luas daripada yang diperlukan, sehingga berhati-hatilah saat memberikannya. Untuk informasi selengkapnya tentang cara menambahkan anggota dan memberikan peran, lihat Tambahkan anggota ke ruang kerja.
-
Kelompok resource arsitektur tanpa server telah dikaitkan dengan ruang kerja Anda. Untuk informasi selengkapnya, lihat topik dalam direktori Gunakan kelompok resource arsitektur tanpa server.
Batasan
-
Kode dalam node SSH tidak boleh melebihi
128 KB. -
Kelompok resource DataWorks, instans ECS, dan instans NLB harus berada dalam VPC dan wilayah yang sama.
Persiapkan lingkungan
Untuk mengaktifkan penyeimbangan beban dan ketersediaan tinggi untuk node SSH, buat minimal dua instans ECS dan tambahkan data sampel unik ke masing-masing instans untuk verifikasi.
Buat instans ECS
Ikuti langkah-langkah berikut untuk membuat instans ECS yang diperlukan.
-
Beli instans ECS.
Buka halaman pembelian instans ECS, pilih tab Custom Launch, lalu konfigurasikan parameter berikut untuk membuat instans ECS. Untuk detail parameter lainnya, lihat Buat instans di tab Custom Launch.
Parameter
Deskripsi
Region
Pilih wilayah tempat ruang kerja DataWorks Anda berada.
Network and zone
Pilih Virtual Private Cloud (VPC) dan vSwitch yang sama dengan yang digunakan oleh kelompok resource arsitektur tanpa server.
Security Group
Pilih security group yang terikat pada vSwitch dari kelompok resource arsitektur tanpa server.
Parameter lainnya
Konfigurasikan parameter lainnya sesuai kebutuhan bisnis Anda.
-
Tentukan jumlah.
Di sisi kanan halaman pembelian instans ECS, temukan opsi Quantity dan masukkan jumlah instans ECS yang Anda perlukan. Tutorial ini menggunakan dua instans.
-
Klik Create Order untuk menyelesaikan pembuatan dan pembelian instans ECS.
Persiapkan data sampel
Pada dua instans ECS yang telah Anda buat, tulis data sampel unik pada masing-masing instans agar Anda dapat membedakan hasilnya nanti.
-
Masuk ke instans ECS.
-
Buka Konsol ECS, alihkan ke wilayah tempat instans ECS berada, lalu temukan dua instans yang telah Anda buat.
-
Pada kolom Operation untuk suatu instans, klik Remote connection. Di kotak dialog Remote connection, pilih Sign in now.
-
Pada halaman Instance Login, konfigurasikan informasi autentikasi dan selesaikan proses login.
-
-
Buat data sampel.
-
Pada Instans ECS 1, jalankan perintah berikut:
echo "I am the first server" > /tmp/a.txt -
Pada Instans ECS 2, jalankan perintah berikut:
echo "I am the second server" > /tmp/a.txt
-
Konfigurasikan instans NLB
Ikuti langkah-langkah berikut untuk membuat instans NLB, konfigurasikan kelompok server backend dengan menambahkan dua instans ECS, dan atur listener untuk mengaktifkan penyeimbangan beban.
Buat instans NLB
Anda dapat membuat instans NLB dengan mengikuti langkah-langkah berikut. Untuk informasi selengkapnya, lihat Prasyarat untuk membuat instans NLB dan Buat dan kelola instans NLB.
-
Buka halaman pembelian instans NLB.
Login ke Konsol Network Load Balancer. Di bilah navigasi atas, pilih wilayah. Pada halaman Instances, klik Create NLB untuk membuka Cloud Service Buy Page.
PentingPilih wilayah yang sama dengan ruang kerja DataWorks Anda. Pemilihan wilayah yang salah akan mengharuskan Anda membuat instans baru.
-
Konfigurasikan dan beli instans NLB.
Di Cloud Service Buy Page, konfigurasikan parameter berikut untuk membuat instans NLB:
Parameter
Deskripsi
Network
Network type
Pilih internal-facing.
VPC
Pilih VPC yang digunakan oleh kelompok resource arsitektur tanpa server Anda.
Zone
Pilih zona tempat vSwitch dari kelompok resource arsitektur tanpa server berada.
IP version
Pilih IPv4.
Management settings
Instance name
Masukkan nama instans kustom.
Resource group
Pilih kelompok resource default.
-
Konfirmasi pembelian.
Setelah mengonfigurasi semua parameter, klik Create. Di halaman Confirm Order, klik Activate.
Buat kelompok server backend
Setelah instans NLB berada dalam status Active, ikuti langkah-langkah berikut untuk membuat dan mengikat kelompok server backend ke instans NLB. Untuk informasi selengkapnya, lihat Kelompok server NLB.
-
Buka halaman detail instans.
-
Login ke Konsol Network Load Balancer. Di bilah navigasi atas, pilih wilayah. Di daftar instans, temukan instans yang telah Anda buat.
-
Klik nama instans untuk membuka halaman detail instans.
-
-
Buat kelompok server backend.
-
Di bagian atas halaman detail instans, klik Create Server Group untuk membuka halaman Create Server Group.
-
Atur Server Group Name menjadi
ECS_NLB, lalu klik Create.
-
-
Tambahkan server backend.
-
Di kotak dialog Server group created successfully, klik Add Backend Server.
-
Di tab Backend Servers, klik Add Backend Server untuk membuka halaman Add Backend Server.
-
Pilih dua instans ECS yang telah Anda buat.
-
Klik Next step untuk membuka langkah Ports/Weights.
-
-
Konfigurasikan port dan bobot.
-
Atur Port menjadi
22. -
Klik OK untuk menyelesaikan konfigurasi.
-
Tunggu hingga server backend berhasil ditambahkan.
Konfigurasikan listener
Setelah Anda menambahkan instans ECS ke kelompok server backend, konfigurasikan listener untuk instans NLB sebagai berikut. Untuk informasi selengkapnya, lihat Tambahkan listener TCP.
-
Buka halaman detail instans.
-
Login ke Konsol Network Load Balancer. Di bilah navigasi atas, pilih wilayah. Di daftar instans, temukan instans yang telah Anda buat.
-
Klik nama instans untuk membuka halaman detail instans.
-
-
Konfigurasikan listener.
-
Di bagian atas halaman detail instans, klik Create Listener untuk membuka wizard Configure Server Load Balancer.
-
Atur protokol listener menjadi TCP dan atur port listener menjadi
22. -
Klik Next step.
-
-
Pilih kelompok server.
-
Di langkah Select Server Group, untuk Server Type, pilih kelompok server
ECS_NLByang telah Anda buat di Buat kelompok server backend. -
Klik Next step.
-
-
Kirim untuk ditinjau.
Di langkah Configuration Review, konfirmasi instans ECS dan port listener, lalu klik Submit.
Konfigurasikan sumber data SSH
Setelah menyelesaikan konfigurasi sebelumnya, tambahkan instans NLB sebagai sumber data SSH. Untuk informasi selengkapnya, lihat Sumber data SSH.
Login ke Konsol DataWorks. Di wilayah target, klik di panel navigasi kiri. Pilih ruang kerja dari daftar drop-down dan klik Go to Management Center.
-
Di panel navigasi kiri, klik untuk membuka halaman Data Sources.
-
Di halaman Data Sources, klik Add Connection untuk membuka halaman Add Connection.
-
Di halaman Add Connection, pilih SSH sebagai jenis sumber data untuk membuka halaman Add SSH Data Source. Anda dapat mengonfigurasi parameter pada halaman ini sebagai berikut.
Parameter
Deskripsi
Data source name
Masukkan nama kustom untuk sumber data, misalnya,
SSH_DB.Configuration mode
Gunakan default User-created Data Store with Public IP Addresses.
Authentication method
Kami merekomendasikan DataWorks SSH Public Key Authentication.
Host address
Login ke Konsol Network Load Balancer. Di bilah navigasi atas, pilih wilayah. Temukan instans dan klik namanya untuk membuka halaman detail instans. Salin Domain Name untuk digunakan sebagai Host Address.
Host port
Port host untuk server adalah
22.Username
Username untuk server adalah
root.Public key
Klik Generate Key Pair. Platform akan menghasilkan kunci publik berdasarkan username yang telah Anda konfigurasikan.
PentingSebelum menguji koneksi, tambahkan kunci publik ke file
.ssh/authorized_keyspadaduahost ECS. Jika tidak, pengujian akan gagal. -
Uji konektivitas kelompok resource.
Di bagian Connection Configuration, temukan kelompok resource arsitektur tanpa server yang terikat dengan ruang kerja Anda, lalu klik Test Connectivity di kolom Connected state.
Jalankan tugas SSH
Anda dapat mengikuti langkah-langkah berikut untuk membuat dan mengembangkan node SSH, lalu memverifikasi fungsionalitasnya dengan memeriksa hasil tugas.
Buat node SSH
Anda dapat membuat node SSH dengan mengikuti langkah-langkah berikut. Untuk informasi selengkapnya, lihat Buat node SSH.
-
Buka halaman Workspaces di Konsol DataWorks. Di bilah navigasi atas, pilih wilayah yang diinginkan. Temukan ruang kerja yang diinginkan dan pilih di kolom Actions.
-
Di panel navigasi kiri, klik ikon
. Klik ikon
di samping Project Directory, lalu pilih untuk membuka kotak dialog New Node. -
Di kotak dialog New Node, masukkan Name kustom untuk node SSH.
-
Klik Confirm untuk membuka editor node.
Kembangkan node SSH
Di halaman editor node, tambahkan kode sampel berikut dan konfigurasikan lingkungan eksekusi.
-
Tulis kode node SSH.
Di editor kode, masukkan perintah sampel berikut:
cat /tmp/a.txt -
Konfigurasikan lingkungan eksekusi.
-
Data Source: Dari daftar drop-down Select a data source di bagian atas editor, pilih sumber data
SSH_DB. -
Konfigurasi kelompok resource: Di panel kanan, klik Run Configuration, lalu atur Resource Group menjadi kelompok resource arsitektur tanpa server Anda.
-
-
Klik tombol Save di bilah alat untuk menyimpan node SSH.
Lihat hasil tugas
Jalankan node SSH beberapa kali dan bandingkan output untuk memverifikasi bahwa penyeimbangan beban berfungsi dengan baik.
-
Jalankan tugas node SSH.
Klik tombol Run di bilah alat. Setelah eksekusi pertama selesai, jalankan tugas lagi.
-
Lihat hasil tugas.
CatatanOutput mungkin berbeda antar eksekusi karena tugas diarahkan ke instans ECS yang berbeda setiap kali.
Hasil eksekusi 1.
2025-04-11 16:53:05 INFO ============================================= 2025-04-11 16:53:06,657 INFO [SshWrapperMain.java:151] - Get PrivateKey Content OK 2025-04-11 16:53:06,667 INFO [SshExecutorUtil.java:33] - User: xxx 2025-04-11 16:53:06,668 INFO [SshExecutorUtil.java:34] - Host: xxx 2025-04-11 16:53:06,668 INFO [SshExecutorUtil.java:35] - Port: 22 2025-04-11 16:53:07,876 INFO [SshExecutorUtil.java:55] - session connect success 2025-04-11 16:53:07,877 INFO [SshExecutorUtil.java:56] - code: cat /tmp/a.txt 2025-04-11 16:53:07,894 INFO [SshExecutorUtil.java:66] - channel connect success I am the first server 2025-04-11 16:53:09 INFO ============================================= 2025-04-11 16:53:09 INFO Exit code of the Shell command 0 2025-04-11 16:53:09 INFO --- Invocation of Shell command completed --- 2025-04-11 16:53:09 INFO Shell run successfully! 2025-04-11 16:53:09 INFO Current task status: FINISH 2025-04-11 16:53:09 INFO Cost time is: 3.238sHasil eksekusi 2:
Output ini menampilkan "I am the second server", yang menunjukkan bahwa permintaan diarahkan ke instans ECS kedua. Log eksekusi adalah sebagai berikut:
2025-04-11 16:53:56 INFO ============================================================ 2025-04-11 16:53:57,632 INFO [SshWrapperMain.java:151] - Get PrivateKey Content OK 2025-04-11 16:53:57,645 INFO [SshExecutorUtil.java:33] - User: 2025-04-11 16:53:57,645 INFO [SshExecutorUtil.java:34] - Host: 2025-04-11 16:53:57,645 INFO [SshExecutorUtil.java:35] - Port: 22 2025-04-11 16:53:58,746 INFO [SshExecutorUtil.java:55] - session connect success 2025-04-11 16:53:58,746 INFO [SshExecutorUtil.java:56] - code: cat /tmp/a.txt 2025-04-11 16:53:58,764 INFO [SshExecutorUtil.java:66] - channel connect success I am the second server 2025-04-11 16:53:59 INFO ============================================================ 2025-04-11 16:53:59 INFO Exit code of the Shell command 0 2025-04-11 16:53:59 INFO --- Invocation of Shell command completed --- 2025-04-11 16:53:59 INFO Shell run successfully! 2025-04-11 16:53:59 INFO Current task status: FINISH 2025-04-11 16:53:59 INFO Cost time is: 3.011s
Cara kerja
Berikut ini penjelasan cara DataWorks menggunakan NLB untuk memastikan eksekusi tugas SSH berkonkurensi tinggi berjalan stabil:
Solusi ini bekerja dengan menambahkan beberapa instans ECS ke kelompok server NLB dan menggunakan nama DNS instans NLB sebagai sumber data SSH di DataWorks. Permintaan tugas dari node SSH kemudian dicegat oleh listener NLB, yang mendistribusikannya ke instans ECS yang sehat berdasarkan kebijakan penyeimbangan bebannya. Hasil eksekusi dikembalikan melalui NLB dan ditampilkan di log node SSH.