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.
Beberapa nilai yang dikodekan secara permanen dalam templat:
VNet 1
Properti | Nilai |
---|---|
Lokasi | US 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 | US 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
- Buat Dua VNET (Jaringan Virtual) di Wilayah yang berbeda
- 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.
- 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.
- Buka portal Microsoft Azure.
- 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.
- Pilih Properti untuk membuka halaman properti jaringan virtual.
- 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.
- 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:
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:Untuk menginstal Bind, gunakan perintah berikut dari sesi SSH:
sudo apt-get update -y sudo apt-get install bind9 -y
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.
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.
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.
Untuk memulai Bind, gunakan perintah berikut:
sudo service bind9 restart
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:
Di portal Microsoft Azure, pilih jaringan virtual, lalu pilih Server DNS.
Pilih Kustom, dan masukkan alamat IP internal server DNS kustom. Terakhir, pilih Simpan.
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.
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
Masuk ke portal Azure.
Buka kluster HBase sumber.
Di menu kluster, pilih Tindakan Skrip.
Di bagian atas halaman, pilih Kirim Baru.
pilih atau masukkan informasi berikut:
- Nama: Masukkan Aktifkan replikasi.
- URL Skrip Bash: Masukkan https://raw.githubusercontent.com/Azure/hbase-utils/master/replication/hdi_enable_replication.sh.
- Kepala: Pastikan parameter ini dipilih. Bersihkan jenis simpul lainnya.
- 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.
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
- Kedua kluster ESP harus ada di ranah (domain) yang sama. Periksa
/etc/krb5.conf
properti realm default file untuk mengonfirmasi. - Pengguna umum harus ada yang memiliki akses baca dan tulis ke kedua kluster
- Misalnya, jika kedua kluster memiliki pengguna admin kluster yang sama (Misalnya,
admin@abc.example.com
), pengguna tersebut dapat digunakan untuk menjalankan skrip replikasi. - Jika kedua kluster menggunakan grup pengguna yang sama, Anda dapat menambahkan pengguna baru atau menggunakan pengguna yang sudah ada dari grup.
- Jika kedua kluster menggunakan grup pengguna yang berbeda, Anda dapat menambahkan pengguna baru untuk keduanya menggunakan pengguna yang ada dari grup.
- Misalnya, jika kedua kluster memiliki pengguna admin kluster yang sama (Misalnya,
Langkah-langkah untuk Menjalankan skrip Replikasi
Catatan
Lakukan langkah-langkah berikut hanya jika DNS tidak dapat mengatasi nama host dengan benar dari kluster tujuan.
- Salin host kluster sink IP & pemetaan nama host di node kluster sumber /etc/hosts file.
- Salin simpul kepala, node pekerja, dan host node ZooKeeper dan pemetaan IP dari file /etc/hosts dari kluster tujuan(sink).
- 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
addent -password -p admin@ABC.EXAMPLE.COM -k 1 -e RC4-HMAC
- Minta kata sandi untuk mengautentikasi, memberikan kata sandi pengguna
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
- 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: