Gateway Komponen Dataproc

Beberapa komponen open source default yang disertakan dengan cluster Google Dataproc, seperti Apache Hadoop dan Apache Spark, menyediakan antarmuka web. Antarmuka ini dapat digunakan untuk mengelola serta memantau fasilitas dan resource cluster, seperti pengelola resource YARN, Hadoop Distributed File System (HDFS), MapReduce, dan Spark. Gateway Komponen menyediakan akses yang aman ke endpoint web untuk komponen default dan opsional Dataproc.

Cluster yang dibuat dengan versi gambar Dataproc yang didukung dapat memungkinkan akses ke antarmuka web komponen tanpa bergantung pada tunnel SSH atau mengubah aturan firewall untuk mengizinkan traffic masuk.

Pertimbangan

  • Antarmuka web komponen dapat diakses oleh pengguna yang memiliki izin IAM dataproc.clusters.use. Lihat Peran Dataproc.
  • Gateway Komponen dapat digunakan untuk mengakses REST API, seperti Apache Hadoop YARN dan Apache Livy, serta server histori.
  • Saat Gateway Komponen diaktifkan, Dataproc akan menambahkan layanan berikut ke node master pertama cluster:
  • Gateway komponen tidak memungkinkan akses langsung ke antarmuka node:port, tetapi menjadi proxy subset layanan tertentu secara otomatis. Jika Anda ingin mengakses layanan pada node (node:port), gunakan proxy SOCKS SSH.

Membuat cluster dengan Gateway Komponen

Konsol

Untuk mengaktifkan Gateway Komponen dari Google Cloud Console, centang kotak Gateway Komponen di bagian Komponen pada panel Siapkan cluster di halaman Buat cluster Dataproc.

Perintah gcloud

Jalankan perintah gcloud dataproc clusters create gcloud CLI secara lokal di jendela terminal atau di Cloud Shell.

gcloud dataproc clusters create cluster-name \
    --enable-component-gateway \
    --region=region \
    other args ...

REST API

Tetapkan properti EndpointConfig.enableHttpPortAccess ke true sebagai bagian dari permintaan clusters.create.

Gunakan URL Gateway Komponen untuk mengakses antarmuka web

Jika Gateway Komponen diaktifkan di cluster, Anda dapat terhubung ke antarmuka web komponen yang berjalan di node master pertama cluster dengan mengklik link yang diberikan di Konsol Google Cloud. Gateway Komponen juga menetapkan endpointConfig.httpPorts dengan peta nama port ke URL. Selain menggunakan konsol, Anda dapat menggunakan alat command line gcloud atau Dataproc REST API untuk melihat informasi pemetaan ini, lalu salin dan tempel URL ke browser Anda agar terhubung dengan UI komponen.

Konsol

Buka formulir Clusters Dataproc di Google Cloud Console, lalu pilih cluster Anda untuk membuka formulir Cluster details. Klik tab Web Interfaces untuk menampilkan daftar link Gateway Komponen ke antarmuka web komponen default dan opsional yang diinstal di cluster. Klik link untuk membuka antarmuka web yang berjalan di node master cluster di browser lokal Anda.

Perintah gcloud

Jalankan perintah gcloud dataproc clusters explain gcloud CLI secara lokal di jendela terminal atau di Cloud Shell.

gcloud dataproc clusters describe cluster-name \
    --region=region

Contoh Output

...
config:
  endpointConfig:
    enableHttpPortAccess: true
    httpPorts:
      HDFS NameNode:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/hdfs/ MapReduce Job History:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/jobhistory/ Spark HistoryServer:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/sparkhistory/ YARN ResourceManager:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/yarn/ YARN Application Timeline:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/apphistory/ ...

REST API

Panggil clusters.get untuk mendapatkan peta endpointConfig.httpPorts untuk nama port ke URL.

Menggunakan Gateway Komponen dengan VPC-SC

Gateway Komponen mendukung Kontrol Layanan VPC. Untuk penerapan perimeter layanan, permintaan ke antarmuka melalui Gateway Komponen diperlakukan sebagai bagian dari platform Dataproc API, dan semua kebijakan akses yang mengontrol izin untuk dataproc.googleapis.com juga akan mengontrol akses ke UI Gateway Komponen.

Gateway Komponen juga mendukung konfigurasi VPC-SC yang mengandalkan konektivitas Google pribadi untuk cluster Dataproc tanpa alamat IP eksternal, tetapi Anda harus mengonfigurasi jaringan secara manual untuk mengizinkan akses dari VM master Dataproc ke *.dataproc.cloud.google.com melalui rentang IP virtual Google yang dibatasi 199.36.153.4/30 dengan melakukan hal berikut:

  1. Ikuti petunjuk untuk mengonfigurasi konektivitas Google pribadi untuk semua Google API.
  2. Konfigurasi DNS dengan Cloud DNS atau konfigurasi DNS secara lokal di node master Dataproc untuk mengizinkan akses ke *.dataproc.cloud.google.com.

Mengonfigurasi DNS dengan Cloud DNS

Buat zona Cloud DNS yang memetakan traffic yang ditujukan untuk *.dataproc.cloud.google.com ke rentang IP virtual Google API yang dibatasi.

  1. Buat zona pribadi terkelola untuk jaringan VPC Anda.

    gcloud dns managed-zones create ZONE_NAME \
     --visibility=private \
     --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \
     --description=DESCRIPTION \
     --dns-name=dataproc.cloud.google.com \
     --project=PROJECT_ID
    
    • ZONE_NAME adalah nama untuk zona yang Anda buat. Misalnya, vpc. Nama zona ini akan digunakan di setiap langkah berikut.

    • PROJECT_ID adalah ID project yang menghosting jaringan VPC Anda.

    • NETWORK_NAME adalah nama jaringan VPC Anda.

    • DESCRIPTION adalah deskripsi opsional yang dapat dibaca manusia untuk zona terkelola.

  2. Mulai transaksi.

    gcloud dns record-sets transaction start --zone=ZONE_NAME
    
    • ZONE_NAME adalah nama zona Anda.
  3. Tambahkan data DNS.

    gcloud dns record-sets transaction add --name=*.dataproc.cloud.google.com. \
        --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
        --zone=ZONE_NAME \
        --ttl=300
    
    • ZONE_NAME adalah nama zona Anda.
    gcloud dns record-sets transaction add --name=dataproc.cloud.google.com. \
        --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
        --zone=ZONE_NAME \
        --ttl=300
    
    • ZONE_NAME adalah nama zona Anda.
  4. Jalankan transaksi.

    gcloud dns record-sets transaction execute --zone=ZONE_NAME --project=PROJECT_ID
    
    • ZONE_NAME adalah nama zona Anda.

    • PROJECT_ID adalah ID project yang menghosting jaringan VPC Anda.

Mengonfigurasi DNS secara lokal di node master Dataproc dengan tindakan inisialisasi

Anda dapat mengonfigurasi DNS secara lokal pada node master Dataproc untuk mengizinkan konektivitas pribadi ke dataproc.cloud.google.com. Prosedur ini ditujukan untuk pengujian dan pengembangan jangka pendek. Hal ini tidak direkomendasikan untuk digunakan dalam workload produksi.

  1. Tahapkan tindakan inisialisasi ke Cloud Storage.

    cat <<EOF >component-gateway-vpc-sc-dns-init-action.sh
    #!/bin/bash
    readonly ROLE="$(/usr/share/google/get_metadata_value attributes/dataproc-role)"
    
    if [[ "${ROLE}" == 'Master' ]]; then
      readonly PROXY_ENDPOINT=$(grep "^dataproc.proxy.agent.endpoint=" \
        "/etc/google-dataproc/dataproc.properties" | \
        tail -n 1 | cut -d '=' -f 2- | sed -r 's/\\([#!=:])/\1/g')
    
      readonly HOSTNAME=$(echo ${PROXY_ENDPOINT} | \
        sed -n -E 's;^https://([^/?#]*).*;\1;p')
    
      echo "199.36.153.4 ${HOSTNAME}  # Component Gateway VPC-SC" >> "/etc/hosts"
    fi
    EOF
    
    gsutil cp component-gateway-vpc-sc-dns-init-action.sh gs://BUCKET/
    
    • BUCKET adalah bucket Cloud Storage yang dapat diakses dari cluster Dataproc.
  2. Buat cluster Dataproc dengan tindakan inisialisasi bertahap dan Gateway Komponen diaktifkan.

    gcloud dataproc clusters create cluster-name \
        --region=region \
        --initialization-actions=gs://BUCKET/component-gateway-vpc-sc-dns-init-action.sh \
        --enable-component-gateway \
        other args ...
    
    • BUCKET adalah bucket Cloud Storage yang digunakan pada langkah 1 di atas.

Secara terprogram menggunakan API HTTP melalui Gateway Komponen

Gateway Komponen adalah proxy yang menggabungkan Apache Knox. Endpoint yang diekspos oleh Apache Knox tersedia melalui https://component-gateway-base-url/component-path.

Untuk mengautentikasi secara terprogram dengan Gateway Komponen, teruskan header Proxy-Authorization dengan Token pemilik OAuth 2.0.

$ ACCESS_TOKEN="$(gcloud auth print-access-token)"
$ curl -H "Proxy-Authorization: Bearer ${ACCESS_TOKEN}" "https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/yarn/jmx"
{
  "beans" : [ {
    "name" : "Hadoop:service=ResourceManager,name=RpcActivityForPort8031",
    "modelerType" : "RpcActivityForPort8031",
    "tag.port" : "8031",
    "tag.Context" : "rpc",
    "tag.NumOpenConnectionsPerUser" : "{\"yarn\":2}",
    "tag.Hostname" : "demo-cluster-m",
    "ReceivedBytes" : 1928581096,
    "SentBytes" : 316939850,
    "RpcQueueTimeNumOps" : 7230574,
    "RpcQueueTimeAvgTime" : 0.09090909090909091,
    "RpcProcessingTimeNumOps" : 7230574,
    "RpcProcessingTimeAvgTime" : 0.045454545454545456,
...

Gateway Komponen menghapus header Proxy-Authorization sebelum meneruskan permintaan ke Apache Knox.

Untuk menemukan URL dasar Gateway Komponen, jalankan: gcloud dataproc clusters describe:

$ gcloud dataproc clusters describe <var>cluster-name</var> &#92;
    &nbsp;&nbsp;&nbsp;&nbsp;--region=<var>region</var>
...
  endpointConfig:
    enableHttpPortAccess: true
    httpPorts:
      HDFS NameNode: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/hdfs/dfshealth.html
      MapReduce Job History: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/jobhistory/
      Spark History Server: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/sparkhistory/
      Tez: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/apphistory/tez-ui/
      YARN Application Timeline: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/apphistory/
      YARN ResourceManager: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/yarn/

...

URL dasar adalah bagian otoritas dan skema URL dalam httpPorts. Dalam contoh ini, nilainya adalah https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/.

Cara membuat ulang sertifikat SSL Gateway Komponen

Sertifikat SSL Knox Gateway default Gateway Komponen valid untuk:

  • 5 tahun sejak tanggal pembuatan cluster Dataproc pada cluster yang dibuat dengan image versi 2.0.93, 2.1.41, 2.2.7 dan yang lebih baru.

  • 13 bulan sejak tanggal pembuatan cluster Dataproc pada cluster yang dibuat menggunakan versi image sebelumnya.

Jika masa berlaku sertifikat berakhir, semua URls antarmuka web Gateway Komponen akan menjadi tidak aktif.

Jika organisasi Anda menyediakan sertifikat SSL, dapatkan sertifikat baru dari organisasi, lalu ganti sertifikat lama dengan yang baru.

Jika Anda menggunakan sertifikat SSL default yang ditandatangani sendiri, perpanjang sertifikat tersebut sebagai berikut:

  1. Gunakan SSH untuk terhubung ke node master cluster Dataproc dengan akhiran nama m-0.

  2. Temukan gateway.jks di jalur /var/lib/knox/security/keystores/gateway.jks.

    keytool -list -v -keystore /var/lib/knox/security/keystores/gateway.jks
    
  3. Pindahkan file gateway.jks ke direktori cadangan.

    mv /var/lib/knox/security/keystores/gateway.jks /tmp/backup/gateway.jks
    
  4. Buat sertifikat baru yang ditandatangani sendiri dengan memulai ulang layanan Knox.

    systemctl restart knox
    
  5. Memverifikasi Gateway Komponen dan status Knox.

    systemctl status google-dataproc-component-gateway
    systemctl status knox
    

Langkah Berikutnya