Siapkan replikasi kluster Apache HBase di jaringan virtual Azure

Pelajari cara menyiapkan replikasi Apache HBase dalam jaringan virtual, atau di antara dua jaringan virtual di Azure.

Replikasi kluster menggunakan metodologi pendorongan-sumber. Kluster HBase dapat berupa sumber atau tujuan, atau dapat memenuhi kedua peran sekaligus. Replikasi bersifat asinkron. Tujuan replikasi adalah konsistensi akhirnya. Saat sumber menerima sebuah edit ke keluarga kolom saat replikasi diaktifkan, edit itu disebarkan ke semua kluster tujuan. Ketika data direplikasi dari satu kluster ke kluster lain, kluster sumber dan semua kluster yang telah menggunakan data yang dilacak, untuk mencegah perulangan replikasi.

Dalam artikel ini, Anda menyiapkan replikasi tujuan-sumber. Untuk topologi kluster lainnya, lihat panduan referensi Apache HBase.

Berikut ini adalah kasus penggunaan replikasi HBase untuk satu jaringan virtual:

  • Penyeimbangan beban. Misalnya, Anda dapat menjalankan pemindaian atau pekerjaan MapReduce di kluster tujuan, dan menyerap data pada kluster sumber.
  • Menambahkan ketersediaan tinggi.
  • Memigrasikan data dari satu kluster HBase ke kluster HBase lainnya.
  • Memutakhirkan kluster Azure HDInsight dari satu versi ke versi lainnya.

Berikut ini adalah kasus penggunaan replikasi HBase untuk dua jaringan virtual:

  • Menyiapkan pemulihan bencana.
  • Penyeimbangan beban dan pemartisian aplikasi.
  • Menambahkan ketersediaan tinggi.

Anda dapat mereplikasi kluster dengan menggunakan skrip tindakan skrip dari GitHub.

Prasyarat

Sebelum memulai artikel ini, Anda harus memiliki langganan Azure. Lihat Dapatkan uji coba gratis Azure.

Siapkan lingkungan

Anda memiliki tiga opsi konfigurasi:

  • Dua kluster Apache HBase dalam satu jaringan virtual Azure.
  • Dua kluster Apache HBase dalam dua jaringan virtual yang berbeda di wilayah yang sama.
  • Dua kluster Apache HBase dalam dua jaringan virtual yang berbeda di dua wilayah berbeda (geo-replikasi).

Artikel ini membahas skenario geo-replikasi.

Untuk membantu Anda menyiapkan lingkungan, kami telah membuat beberapa templat Azure Resource Manager. Jika Anda lebih suka menyiapkan lingkungan dengan menggunakan metode lain, lihat:

Siapkan dua jaringan virtual di dua wilayah berbeda

Untuk menggunakan templat yang membuat dua jaringan virtual di dua wilayah berbeda dan koneksi VPN antara VNet, pilih tombol Sebarkan ke Azure berikut ini.

Menyebarkan ke tombol Azure untuk kluster baru

Beberapa nilai yang dikodekan secara permanen dalam templat:

VNet 1

Properti Nilai
Lokasi AS Barat
Nama VNet <ClusterNamePrevix>-vnet1
Awalan ruang alamat 10.1.0.0/16
Nama subnet Subnet 1
Awalan subnet 10.1.0.0/24
Nama subnet (gateway) GatewaySubnet (tidak dapat diubah)
Awalan subnet (gateway) 10.1.255.0/27
Nama Gateway vnet1gw
Jenis gateway Vpn
Jenis VPN Gateway RouteBased
SKU Gateway Dasar
IP Gateway vnet1gwip

VNet 2

Properti Nilai
Lokasi AS Timur
Nama VNet <ClusterNamePrevix>-vnet2
Awalan ruang alamat 10.2.0.0/16
Nama subnet Subnet 1
Awalan subnet 10.2.0.0/24
Nama subnet (gateway) GatewaySubnet (tidak dapat diubah)
Awalan subnet (gateway) 10.2.255.0/27
Nama Gateway vnet2gw
Jenis gateway Vpn
Jenis VPN Gateway RouteBased
SKU Gateway Dasar
IP Gateway vnet1gwip

Atau, ikuti langkah-langkah di bawah ini untuk menyiapkan dua vnet dan mesin virtual yang berbeda secara manual

  1. Buat Dua VNET (Jaringan Virtual) di Wilayah yang berbeda
  2. Aktifkan Peering di kedua VNET. Buka Jaringan virtual yang dibuat di langkah-langkah di atas lalu klik peering dan tambahkan tautan peering wilayah lain. Lakukan untuk kedua jaringan virtual.
  3. Buat versi terbaru UBUNTU di setiap VNET.

Penyetelan DNS

Di bagian terakhir, templat membuat komputer virtual Ubuntu di masing-masing dari dua jaringan virtual. Di bagian ini, Anda memasang Bind pada dua komputer virtual DNS, dan kemudian mengonfigurasi penerusan DNS pada dua komputer virtual.

Untuk memasang Bind, Anda perlu menemukan alamat IP publik dari dua komputer virtual DNS.

  1. Buka portal Microsoft Azure.
  2. Buka mesin virtual DNS dengan memilih Grup sumber daya > [nama grup sumber daya] > [vnet1DNS]. Nama grup sumber daya adalah nama yang Anda buat di prosedur terakhir. Nama komputer virtual DNS default adalah vnet1DNS dan vnet2NDS.
  3. Pilih Properti untuk membuka halaman properti jaringan virtual.
  4. Tuliskan alamat IP Publik, dan juga verifikasi alamat IP Privat. Alamat IP privat harus 10.1.0.4 untuk vnet1DNS dan 10.2.0.4 untuk vnet2DNS.
  5. Ubah Server DNS untuk kedua jaringan virtual untuk menggunakan server DNS Default (disesiakan Azure) untuk memungkinkan akses masuk dan keluar untuk mengunduh paket untuk memasang Bind dalam langkah-langkah berikut.

Untuk memasang Bind, gunakan prosedur berikut:

  1. Gunakan SSH untuk terhubung ke alamat IP publik komputer virtual DNS. Contoh berikut terhubung ke mesin virtual di 40.68.254.142:

    ssh sshuser@40.68.254.142
    

    Ganti sshuser dengan akun pengguna SSH yang Anda tentukan saat membuat komputer virtual DNS.

    Catatan

    Ada berbagai cara untuk mendapatkan utilitas ssh. Di Linux, Unix, dan macOS, ini disediakan sebagai bagian dari sistem operasi. Jika Anda menggunakan Windows, pertimbangkan salah satu opsi berikut ini:

  2. Untuk menginstal Bind, gunakan perintah berikut dari sesi SSH:

     sudo apt-get update -y
     sudo apt-get install bind9 -y
    
  3. Konfigurasikan Bind untuk meneruskan permintaan resolusi nama ke server DNS lokal Anda. Untuk melakukannya, gunakan teks berikut sebagai konten file /etc/bind/named.conf.options:

    acl goodclients {
        10.1.0.0/16; # Replace with the IP address range of the virtual network 1
        10.2.0.0/16; # Replace with the IP address range of the virtual network 2
        localhost;
        localhost;
    };
    
    options {
        directory "/var/cache/bind";
        recursion yes;
        allow-query { goodclients; };
    
        forwarders {
            168.63.129.16; #This is the Azure DNS server
        };
    
        dnssec-validation auto;
    
        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
    };
    

    Penting

    Ganti nilai di bagian goodclients dengan rentang alamat IP dua jaringan virtual. Bagian ini menentukan alamat dari mana server DNS ini menerima permintaan.

    Untuk mengedit file ini, gunakan perintah berikut:

    sudo nano /etc/bind/named.conf.options
    

    Untuk menyimpan file, gunakan Ctrl+X, Y, lalu Enter.

  4. Dari sesi SSH, gunakan perintah berikut:

    hostname -f
    

    Perintah ini mengembalikan nilai yang mirip dengan URI berikut:

    vnet1DNS.icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net
    

    Teks icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net adalah akhiran DNS untuk jaringan virtual ini. Simpan nilai ini, karena akan digunakan nanti.

    Anda juga harus mencari tahu akhiran DNS dari server DNS lainnya. Anda akan membutuhkannya di langkah berikutnya.

  5. Untuk mengonfigurasi Bind untuk mengatasi nama DNS untuk sumber daya dalam jaringan virtual, gunakan teks berikut sebagai konten /etc/bind/named.conf.local file:

    // Replace the following with the DNS suffix for your virtual network
    zone "v5ant3az2hbe1edzthhvwwkcse.bx.internal.cloudapp.net" {
            type forward;
            forwarders {10.2.0.4;}; # The Azure recursive resolver
    };
    

    Penting

    Anda harus mengganti v5ant3az2hbe1edzthhvwwkcse.bx.internal.cloudapp.net dengan akhiran DNS dari jaringan virtual lainnya. Dan IP forwarder adalah alamat IP privat server DNS di jaringan virtual lainnya.

    Untuk mengedit file ini, gunakan perintah berikut:

    sudo nano /etc/bind/named.conf.local
    

    Untuk menyimpan file, gunakan Ctrl+X, Y, lalu Enter.

  6. Untuk memulai Bind, gunakan perintah berikut:

    sudo service bind9 restart
    
  7. Untuk memverifikasi bahwa bind dapat menyelesaikan nama sumber daya di jaringan virtual lain, gunakan perintah berikut:

    sudo apt install dnsutils
    nslookup vnet2dns.v5ant3az2hbe1edzthhvwwkcse.bx.internal.cloudapp.net
    

    Penting

    Ganti vnet2dns.v5ant3az2hbe1edzthhvwwkcse.bx.internal.cloudapp.net dengan nama domain yang sepenuhnya memenuhi syarat (fully qualified domain name, FQDN) dari komputer virtual DNS di jaringan lain.

    Ganti 10.2.0.4 dengan alamat IP internal server DNS kustom Anda di jaringan virtual lain.

    Output yang dihasilkan mirip dengan teks berikut:

    Server:         10.2.0.4
    Address:        10.2.0.4#53
    
    Non-authoritative answer:
    Name:   vnet2dns.v5ant3az2hbe1edzthhvwwkcse.bx.internal.cloudapp.net
    Address: 10.2.0.4
    

    Hingga saat ini, Anda tidak dapat mencari alamat IP dari jaringan lain tanpa alamat IP server DNS yang ditentukan.

Konfigurasikan jaringan virtual untuk menggunakan server DNS kustom

Untuk mengonfigurasi jaringan virtual untuk menggunakan server DNS kustom alih-alih penyelesai rekursif Azure, gunakan langkah-langkah berikut:

  1. Di portal Microsoft Azure, pilih jaringan virtual, lalu pilih Server DNS.

  2. Pilih Kustom, dan masukkan alamat IP internal server DNS kustom. Terakhir, pilih Simpan.

  3. Buka komputer virtual server DNS di vnet1, dan klik Mulai ulang. Anda harus memulai ulang semua komputer virtual di jaringan virtual untuk membuat konfigurasi DNS berlaku.

  4. Ulangi langkah-langkah mengonfigurasi server DNS kustom untuk vnet2.

Untuk menguji konfigurasi DNS, Anda dapat menyambungkan ke dua komputer virtual DNS menggunakan SSH, dan lakukan ping ke server DNS dari jaringan virtual lainnya dengan menggunakan nama host-nya. Jika tidak berhasil, gunakan perintah berikut ini untuk memeriksa status DNS:

sudo service bind9 status

Buat kluster Apache HBase

Buat kluster Apache HBase di masing-masing dari dua jaringan virtual dengan konfigurasi berikut:

  • Nama grup sumber daya: gunakan nama grup sumber daya yang sama dengan saat Anda membuat jaringan virtual.
  • Jenis kluster: HBase
  • Versi: HBase 1.1.2 (HDI 3.6)
  • Lokasi: Gunakan lokasi yang sama dengan jaringan virtual. Secara default, vnet1 adalah US Barat, dan vnet2 adalah US Timur.
  • Penyimpanan: Buat akun penyimpanan baru untuk kluster.
  • Jaringan virtual (dari pengaturan Tingkat Lanjut pada portal): Pilih vnet1 yang Anda buat di prosedur terakhir.
  • Subnet: Nama default yang digunakan dalam templat adalah subnet1.

Untuk memastikan lingkungan dikonfigurasi dengan benar, Anda harus dapat melakukan ping ke FQDN headnode di antara kedua kluster.

Muat data pengujian

Saat mereplikasi kluster, Anda harus menentukan tabel yang ingin Anda replikasi. Di bagian ini, Anda memuat beberapa data ke dalam kluster sumber. Di bagian berikutnya, Anda akan mengaktifkan replikasi di antara dua kluster.

Untuk membuat tabel Kontak dan menyisipkan beberapa data dalam tabel, ikuti instruksi di tutorial Apache HBase: Mulai menggunakan Apache HBase di HDInsight.

Catatan

Jika Anda ingin mereplikasi tabel dari namespace layanan kustom, Anda perlu memastikan bahwa namespace layanan kustom yang sesuai juga ditentukan pada kluster tujuan.

Aktifkan replikasi

Langkah-langkah berikut ini menjelaskan cara memanggil skrip tindakan skrip dari portal Microsoft Azure. Untuk informasi tentang menjalankan tindakan skrip dengan menggunakan Azure PowerShell dan Azure Classic CLI, lihat Kustomisasi kluster HDInsight dengan menggunakan tindakan skrip.

Untuk mengaktifkan replikasi HBase dari portal Microsoft Azure

  1. Masuk ke portal Azure.

  2. Buka kluster HBase sumber.

  3. Di menu kluster, pilih Tindakan Skrip.

  4. Di bagian atas halaman, pilih Kirim Baru.

  5. pilih atau masukkan informasi berikut:

    1. Nama: Masukkan Aktifkan replikasi.
    2. URL Skrip Bash: Masukkan https://raw.githubusercontent.com/Azure/hbase-utils/master/replication/hdi_enable_replication.sh.
    3. Kepala: Pastikan parameter ini dipilih. Bersihkan jenis simpul lainnya.
    4. Parameter: Parameter sampel berikut memungkinkan replikasi untuk semua tabel yang ada, lalu menyalin semua data dari kluster sumber ke kluster tujuan:

    -m hn1 -s <source hbase cluster name> -d <destination hbase cluster name> -sp <source cluster Ambari password> -dp <destination cluster Ambari password> -copydata

    Catatan

    Gunakan nama host, bukan FQDN untuk nama DNS kluster sumber dan tujuan.

    Panduan ini mengasumsikan hn1 sebagai headnode aktif. Periksa kluster Anda untuk mengidentifikasi simpul kepala aktif.

  6. Pilih Buat. Skrip dapat memakan waktu cukup lama untuk dijalankan, terutama ketika Anda menggunakan argumen -copydata.

Argumen yang diperlukan:

Nama Deskripsi
-s, --src-cluster Menentukan nama DNS dari kluster HBase sumber. Misalnya: -s hbsrccluster, --src-cluster=hbsrccluster
-d, --dst-cluster Menentukan nama DNS kluster HBase tujuan (replika). Misalnya: -s dsthbcluster, --src-cluster=dsthbcluster
-sp, --src-ambari-password Menentukan kata sandi admin untuk Ambari pada kluster HBase sumber.
-dp, --dst-ambari-password Menentukan kata sandi admin untuk Ambari pada kluster HBase tujuan.

Argumen opsional:

Nama Deskripsi
-su, --src-ambari-user Menentukan nama pengguna admin untuk Ambari pada kluster HBase sumber. Nilai defaultnya adalah admin.
-du, --dst-ambari-user Menentukan nama pengguna admin untuk Ambari pada kluster HBase tujuan. Nilai defaultnya adalah admin.
-t, --table-list Menentukan tabel yang akan direplikasi. Misalnya: --table-list="table1;table2;table3". Jika Anda tidak menentukan tabel, semua tabel HBase yang ada akan direplikasi.
-m, --machine Menentukan simpul head tempat tindakan skrip berjalan. Nilai tersebut harus dipilih berdasarkan pada yang merupakan simpul head aktif. Gunakan opsi ini saat Anda menjalankan skrip $0 sebagai tindakan skrip dari portal HDInsight atau Azure PowerShell.
-cp, -copydata Memungkinkan migrasi data yang sudah ada pada tabel di mana replikasi diaktifkan.
-rpm, -replicate-phoenix-meta Memungkinkan replikasi pada tabel sistem Phoenix.

Gunakan opsi ini dengan hati-hati. Kami menyarankan agar Anda membuat ulang tabel Phoenix pada kluster replika sebelum Anda menggunakan skrip ini.
-h, --help Menampilkan informasi penggunaan.

Bagian print_usage()skrip memiliki penjelasan terperinci tentang parameter.

Setelah tindakan skrip berhasil disebarkan, Anda dapat menggunakan SSH untuk menyambungkan ke kluster HBase tujuan, lalu memverifikasi bahwa data telah direplikasi.

Skenario replikasi

Daftar berikut ini memperlihatkan kepada Anda beberapa kasus penggunaan umum dan pengaturan parameternya:

  • Aktifkan replikasi pada semua tabel antara kedua kluster. Skenario ini tidak memerlukan penyalinan atau migrasi data yang ada dalam tabel, dan tidak menggunakan tabel Phoenix. Gunakan parameter berikut:

    -m hn1 -s <source hbase cluster name> -d <destination hbase cluster name> -sp <source cluster Ambari password> -dp <destination cluster Ambari password>

  • Aktifkan replikasi pada tabel tertentu. Untuk mengaktifkan replikasi pada table1, table2, dan table3, gunakan parameter berikut:

    -m hn1 -s <source hbase cluster name> -d <destination hbase cluster name> -sp <source cluster Ambari password> -dp <destination cluster Ambari password> -t "table1;table2;table3"

  • Aktifkan replikasi pada tabel tertentu, dan salin data yang sudah ada. Untuk mengaktifkan replikasi pada table1, table2, dan table3, gunakan parameter berikut:

    -m hn1 -s <source hbase cluster name> -d <destination hbase cluster name> -sp <source cluster Ambari password> -dp <destination cluster Ambari password> -t "table1;table2;table3" -copydata

  • Aktifkan replikasi pada semua tabel, dan replikasi metadata Phoenix dari sumber ke tujuan. Replikasi metadata Phoenix tidak sempurna. Gunakan dengan hati-hati. Gunakan parameter berikut:

    -m hn1 -s <source hbase cluster name> -d <destination hbase cluster name> -sp <source cluster Ambari password> -dp <destination cluster Ambari password> -t "table1;table2;table3" -replicate-phoenix-meta

Menyiapkan replikasi antar kluster ESP

Prasyarat

  1. Kedua kluster ESP harus ada di ranah (domain) yang sama. Periksa /etc/krb5.conf properti realm default file untuk mengonfirmasi.
  2. Pengguna umum harus ada yang memiliki akses baca dan tulis ke kedua kluster
    1. Misalnya, jika kedua kluster memiliki pengguna admin kluster yang sama (Misalnya, admin@abc.example.com), pengguna tersebut dapat digunakan untuk menjalankan skrip replikasi.
    2. Jika kedua kluster menggunakan grup pengguna yang sama, Anda dapat menambahkan pengguna baru atau menggunakan pengguna yang sudah ada dari grup.
    3. Jika kedua kluster menggunakan grup pengguna yang berbeda, Anda dapat menambahkan pengguna baru untuk keduanya menggunakan pengguna yang ada dari grup.

Langkah-langkah untuk Menjalankan skrip Replikasi

Catatan

Lakukan langkah-langkah berikut hanya jika DNS tidak dapat mengatasi nama host dengan benar dari kluster tujuan.

  1. Salin host kluster sink IP & pemetaan nama host di node kluster sumber /etc/hosts file.
  2. Salin simpul kepala, node pekerja, dan host node ZooKeeper dan pemetaan IP dari file /etc/hosts dari kluster tujuan(sink).
  3. Tambahkan file kluster sumber entri yang disalin /etc/hosts. Entri ini harus ditambahkan ke simpul kepala, simpul pekerja, dan simpul ZooKeeper.

Langkah 1: Buat file keytab untuk pengguna menggunakan ktutil. $ ktutil

  1. addent -password -p admin@ABC.EXAMPLE.COM -k 1 -e RC4-HMAC
  2. Minta kata sandi untuk mengautentikasi, memberikan kata sandi pengguna
  3. wkt /etc/security/keytabs/admin.keytab

Catatan

Pastikan file keytab disimpan dalam /etc/security/keytabs/ folder dalam <username>.keytab format .

Langkah 2: Jalankan tindakan skrip dengan -ku opsi

  1. Sediakan -ku <username> pada kluster ESP.
Nama Deskripsi
-ku, --krb-user Untuk kluster ESP, pengguna Common Kerberos, yang dapat mengautentikasi kluster sumber dan tujuan

Salin dan migrasikan data

Ada dua skrip tindakan skrip terpisah yang tersedia untuk menyalin atau memigrasikan data setelah replikasi diaktifkan:

  • Skrip untuk tabel kecil (tabel berukuran beberapa gigabyte, dan keseluruhan penyalinan diperkirakan akan selesai dalam waktu kurang dari satu jam)

  • Skrip untuk tabel besar (tabel yang diperkirakan membutuhkan waktu lebih dari satu jam untuk disalin)

Anda dapat mengikuti prosedur yang sama yang dijelaskan di Aktifkan replikasi untuk memanggil tindakan skrip. Gunakan parameter berikut:

-m hn1 -t <table1:start_timestamp:end_timestamp;table2:start_timestamp:end_timestamp;...> -p <replication_peer> [-everythingTillNow]

Bagian print_usage()skrip memiliki penjelasan terperinci tentang parameter.

Skenario

  • Salin tabel tertentu (test1, test2, dan test3) untuk semua baris yang diedit hingga sekarang (stempel waktu saat ini):

    -m hn1 -t "test1::;test2::;test3::" -p "<zookeepername1>;<zookeepername2>;<zookeepername3>:2181:/hbase-unsecure" -everythingTillNow

    Atau:

    -m hn1 -t "test1::;test2::;test3::" --replication-peer="<zookeepername1>;<zookeepername2>;<zookeepername3>:2181:/hbase-unsecure" -everythingTillNow

  • Salin tabel tertentu dengan rentang waktu tertentu:

    -m hn1 -t "table1:0:452256397;table2:14141444:452256397" -p "<zookeepername1>;<zookeepername2>;<zookeepername3>:2181:/hbase-unsecure"

Menonaktifkan replikasi

Untuk menonaktifkan replikasi, gunakan skrip tindakan skrip lain dari GitHub. Anda dapat mengikuti prosedur yang sama yang dijelaskan di Aktifkan replikasi untuk memanggil tindakan skrip. Gunakan parameter berikut:

-m hn1 -s <source hbase cluster name> -sp <source cluster Ambari password> <-all|-t "table1;table2;...">

Bagian print_usage()skrip memiliki penjelasan terperinci tentang parameter.

Skenario

  • Nonaktifkan replikasi pada semua tabel:

    -m hn1 -s <source hbase cluster name> -sp Mypassword\!789 -all

    or

    --src-cluster=<source hbase cluster name> --dst-cluster=<destination hbase cluster name> --src-ambari-user=<source cluster Ambari user name> --src-ambari-password=<source cluster Ambari password>

  • Nonaktifkan replikasi pada tabel tertentu (table1, table2, dan table3):

    -m hn1 -s <source hbase cluster name> -sp <source cluster Ambari password> -t "table1;table2;table3"

Catatan

Jika Anda berniat menghapus kluster tujuan, pastikan Anda menghapusnya dari daftar rekan kluster sumber. Ini dapat dilakukan dengan menjalankan perintah remove_peer '1' pada shell hbase pada kluster sumber. Jika gagal, kluster sumber bisa tidak berfungsi dengan baik.

Langkah berikutnya

Dalam artikel ini, Anda mempelajari cara menyiapkan replikasi Apache HBase dalam jaringan virtual, atau di antara dua jaringan virtual. Untuk mempelajari selengkapnya tentang HDInsight dan Apache HBase, lihat artikel berikut: