Kelola failover Multi-AZ untuk cluster EMR dengan menggunakan Application Recovery Controller - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Kelola failover Multi-AZ untuk cluster EMR dengan menggunakan Application Recovery Controller

Aarti Rajput, Ashish Bhatt, Neeti Mishra, dan Nidhi Sharma, Amazon Web Services

Ringkasan

Pola ini menawarkan strategi pemulihan bencana yang efisien untuk beban kerja EMR Amazon untuk membantu memastikan ketersediaan tinggi dan konsistensi data di beberapa Availability Zone dalam satu. Wilayah AWS Desainnya menggunakan Amazon Application Recovery Controller dan Application Load Balancer untuk mengelola operasi failover dan distribusi lalu lintas untuk cluster EMR berbasis Apache Spark.

Dalam kondisi standar, Availability Zone utama menghosting cluster EMR aktif dan aplikasi dengan fungsionalitas penuh read/write . Jika Availability Zone gagal secara tak terduga, lalu lintas secara otomatis dialihkan ke Availability Zone sekunder, tempat klaster EMR baru diluncurkan. Kedua Availability Zone mengakses bucket Amazon Simple Storage Service (Amazon S3) bersama melalui titik akhir gateway khusus, yang memastikan pengelolaan data yang konsisten. Pendekatan ini meminimalkan waktu henti dan memungkinkan pemulihan cepat untuk beban kerja data besar yang penting selama kegagalan Availability Zone. Solusi ini berguna dalam industri seperti keuangan atau ritel, di mana analitik real-time sangat penting.

Prasyarat dan batasan

Prasyarat

  • Aktif Akun AWS

  • Amazon EMR di Amazon Elastic Compute Cloud (Amazon) EC2

  • Akses dari node master cluster EMR ke Amazon S3.

  • AWS Infrastruktur multi-AZ

Batasan

Versi produk

Arsitektur

Tumpukan teknologi target

  • Kluster EMR Amazon

  • Pengontrol Pemulihan Aplikasi Amazon

  • Penyeimbang Beban Aplikasi

  • Bucket Amazon S3

  • Titik akhir gateway untuk Amazon S3

Arsitektur target

Arsitektur untuk mekanisme pemulihan otomatis dengan Application Recovery Cotnroller.

Arsitektur ini memberikan ketahanan aplikasi dengan menggunakan beberapa Availability Zones dan menerapkan mekanisme pemulihan otomatis melalui Application Recovery Controller.

  1. Application Load Balancer merutekan lalu lintas ke lingkungan EMR Amazon yang aktif, yang biasanya merupakan cluster EMR utama di Availability Zone utama.

  2. Cluster EMR aktif memproses permintaan aplikasi dan terhubung ke Amazon S3 melalui titik akhir gateway Amazon S3 khusus untuk operasi baca dan tulis.

  3. Amazon S3 berfungsi sebagai repositori data pusat dan berpotensi digunakan sebagai pos pemeriksaan atau sebagai penyimpanan bersama antara kluster EMR. Cluster EMR mempertahankan konsistensi data ketika mereka menulis langsung ke Amazon S3 melalui protokol s3:// dan EMR File System (EMRFS).

  4. Application Recovery Controller terus memantau kesehatan Availability Zone primer dan secara otomatis mengelola operasi failover bila diperlukan.

  5. Jika Application Recovery Controller mendeteksi kegagalan dalam klaster EMR primer, dibutuhkan tindakan berikut:

    • Memulai proses failover ke cluster EMR sekunder di Availability Zone 2.

    • Memperbarui konfigurasi routing untuk mengarahkan lalu lintas ke cluster sekunder.

Alat

Layanan AWS

  • Amazon Application Recovery Controller membantu Anda mengelola dan mengoordinasikan pemulihan aplikasi Anda di seluruh Wilayah AWS dan Availability Zone. Layanan ini menyederhanakan proses dan meningkatkan keandalan pemulihan aplikasi dengan mengurangi langkah-langkah manual yang diperlukan oleh alat dan proses tradisional.

  • Application Load Balancer beroperasi pada layer aplikasi, yang merupakan lapisan ketujuh dari model Open Systems Interconnection (OSI). Ini mendistribusikan lalu lintas aplikasi yang masuk di beberapa target, seperti EC2 instance, di beberapa Availability Zone. Hal ini akan meningkatkan ketersediaan aplikasi Anda.

  • AWS Command Line Interface (AWS CLI) adalah alat open source yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda.

  • Amazon EMR adalah platform data besar yang menyediakan pemrosesan data, analisis interaktif, dan pembelajaran mesin untuk kerangka kerja open source seperti Apache Spark, Apache Hive, dan Presto.

  • AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

  • Amazon S3 menyediakan antarmuka layanan web sederhana yang dapat Anda gunakan untuk menyimpan dan mengambil sejumlah data, kapan saja, dari mana saja. Dengan menggunakan layanan ini, Anda dapat dengan mudah membangun aplikasi yang menggunakan penyimpanan asli cloud.

  • Titik akhir Gateway untuk Amazon S3 adalah gateway yang Anda tentukan dalam tabel rute untuk mengakses Amazon S3 dari virtual private cloud (VPC) melalui jaringan. AWS

Praktik terbaik

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Masuk ke AWS Management Console.

Masuk ke AWS Management Console sebagai pengguna IAM. Untuk instruksi, lihat AWS dokumentasi.

AWS DevOps

Konfigurasikan AWS CLI.

Instal AWS CLI atau perbarui ke versi terbaru sehingga Anda dapat berinteraksi dengan Layanan AWS di AWS Management Console. Untuk instruksi, lihat AWS CLI dokumentasi.

AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Buat ember S3.

  1. Buat bucket S3 untuk menyimpan dataset input, log, aplikasi, dan data output. Untuk petunjuk, lihat dokumentasi Amazon S3.

  2. Atur bucket ke dalam folder terpisah untuk input data (dataset), logs (logs), Spark application (spark-app), dan output data (output).

AWS DevOps

Buat cluster EMR.

  1. Gunakan AWS CLI perintah berikut untuk membuat klaster EMR (misalnya, versi 6.12 atau yang lebih baru) dengan instance yang menjangkau dua Availability Zone (seperti us-east-1a danus-east-1b) untuk ketersediaan tinggi. Perintah menentukan jenis m4.large instance sebagai contoh.

    aws emr create-cluster \ --ec2-attributes AvailabilityZone=<AZ-name-1> \ --release-label emr-6.12.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
    aws emr create-cluster \ --ec2-attributes AvailabilityZone=<AZ-name-2> \ --release-label emr-6.12.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

    Untuk informasi selengkapnya, lihat perintah create-cluster dan dokumentasi Amazon EMR.

  2. Berikan key pair, peran layanan, dan profil instance dengan izin yang diperlukan, jika diperlukan.

AWS DevOps

Konfigurasikan pengaturan keamanan untuk cluster EMR.

  1. Identifikasi grup keamanan yang terkait dengan master node EMR cluster dengan menggunakan perintah AWS CLI describe-cluster:

    aws emr describe-cluster --cluster-id j-XXXXXXXX
  2. Untuk meningkatkan keamanan, ubah pengaturan grup keamanan untuk mengizinkan akses SSH (port TCP 22) ke node master, tetapi batasi ke alamat IP spesifik Anda.

    Untuk informasi selengkapnya, lihat dokumentasi Amazon EMR.

AWS DevOps

Connect ke cluster EMR.

Connect ke master node dari EMR cluster melalui SSH dengan menggunakan key pair yang disediakan.

Pastikan bahwa file key pair hadir di direktori yang sama dengan aplikasi Anda.

Jalankan perintah berikut untuk mengatur izin yang benar untuk key pair dan untuk membuat koneksi SSH:

chmod 400 <key-pair-name> ssh -i ./<key-pair-name> hadoop@<master-node-public-dns>
AWS DevOps

Menyebarkan aplikasi Spark.

Setelah Anda membuat koneksi SSH, Anda akan berada di konsol Hadoop.

  1. Buat atau edit file aplikasi Spark (main.py) dengan menggunakan editor teks seperti vim:

    vim main.py

    Untuk informasi selengkapnya tentang membuat dan memodifikasi aplikasi Spark, lihat dokumentasi Amazon EMR.

  2. Kirimkan aplikasi Spark ke cluster EMR, dengan menentukan data input dan lokasi data output di bucket S3:

    spark-submit main.py —data_source <input-data-folder-in-s3> —output_uri <output-folder-in-s3>

    Berikut adalah contoh berdasarkan folder yang Anda atur sebelumnya:

    spark-submit main.py —data_source dataset —output_uri output
  3. Pantau kemajuan aplikasi dengan memeriksa log aplikasi:

    yarn logs -applicationId <application-id>
AWS DevOps

Pantau aplikasi Spark.

  1. Buka jendela terminal lain dan buat terowongan SSH ke UI web pengelola sumber daya kluster EMR:

    ssh -i <key-pair-name> -N -L 8157:<resource-manager-public-dns>:8088 hadoop@<resource-manager-public-dns>
  2. Untuk memantau aplikasi, akses UI web pengelola sumber daya dengan menavigasi ke http://localhost:8157 browser web Anda.

AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Buat Application Load Balancer.

Siapkan grup target yang merutekan lalu lintas antara node master EMR Amazon yang digunakan di dua Availability Zone dalam file. Wilayah AWS

Untuk petunjuk, lihat Membuat grup target untuk Application Load Balancer Anda dalam dokumentasi Elastic Load Balancing.

AWS DevOps

Konfigurasikan pergeseran zona di Application Recovery Controller.

Pada langkah ini, Anda akan menggunakan fitur zonal shift di Application Recovery Controller untuk mengalihkan lalu lintas ke Availability Zone lain.

  1. Buka konsol Application Recovery Controller.

  2. Di bawah Memulai, pilih Pergeseran zona, Mulai pergeseran zona.

  3. Pilih Availability Zone yang ingin Anda alihkan lalu lintas.

  4. Pilih sumber daya yang didukung (misalnya, Application Load Balancer) untuk pergeseran zona dari tabel Resources.

  5. Untuk Mengatur kedaluwarsa pergeseran zona, pilih atau masukkan kedaluwarsa untuk pergeseran zona. Anda dapat mengatur durasi antara 1 menit dan tiga hari (72 jam).

    Semua pergeseran zona bersifat sementara. Anda harus menetapkan kedaluwarsa, tetapi Anda dapat memperbarui shift aktif nanti untuk menetapkan periode kedaluwarsa baru hingga tiga hari.

  6. Masukkan komentar tentang pergeseran zona ini.

  7. Pilih kotak centang untuk mengetahui bahwa memulai pergeseran zona akan mengurangi kapasitas yang tersedia untuk aplikasi Anda dengan mengalihkan lalu lintas dari Availability Zone.

  8. Pilih Mulai.

Untuk menggunakan AWS CLI, lihat Contoh penggunaan AWS CLI dengan pergeseran zona dalam dokumentasi Application Recovery Controller.

AWS DevOps

Verifikasi konfigurasi dan kemajuan pergeseran zona.

  1. Verifikasi sumber daya yang terdaftar dengan zonal shift:

    aws arc-zonal-shift list-managed-resources --region <AWS-region-name>

    Misalnya, output berikut mengonfirmasi bahwa sumber daya aktif dan berjalan di kedua Availability Zones.

    "appliedWeights": { "use1-az1": 1.0, "use1-az2": 1.0 },
  2. Untuk memvisualisasikan pergeseran zona, gunakan AWS CLI perintah berikut untuk memulai pergeseran zona:

    aws arc-zonal-shift start-zonal-shift \ --resource-identifier <application-load-balancer-arn> \ --away-from <source-AZ> \ --expires-in 10m --comment "testing" \ --region <AWS-region-name>

    di mana <source-AZ> adalah pengenal Availability Zone yang ingin Anda alihkan lalu lintas, dan <application-load-balancer-arn> merupakan Amazon Resource Name (ARN) dari Application Load Balancer Anda.

  3. Verifikasi bahwa lalu lintas telah bergeser ke Availability Zone lain.

    aws arc-zonal-shift get-managed-resource \ --resource-identifier <application-load-balancer-arn> \ --region <AWS-region-name>

    Anda dapat melihat pergeseran zona yang dikonfirmasi oleh bobot ini:

    "appliedWeights": { "use1-az1": 0.0, "use1-az2": 1.0 },
AWS DevOps

Sumber daya terkait