View a markdown version of this page

Menggunakan Amazon Neptune Tanpa Server - Amazon Neptune

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

Menggunakan Amazon Neptune Tanpa Server

Anda dapat membuat cluster Neptune DB baru sebagai cluster tanpa server, atau dalam beberapa kasus Anda dapat mengonversi cluster DB yang ada untuk menggunakan tanpa server. Anda juga dapat mengonversi instans DB dalam cluster DB tanpa server ke dan dari instans tanpa server. Anda hanya dapat menggunakan Neptune Serverless di salah satu Wilayah AWS tempat yang didukung, dengan beberapa batasan lain (lihatKendala tanpa server Amazon Neptune).

Anda juga dapat menggunakan tumpukan CloudFormation Neptune untuk membuat cluster Neptune Serverless DB.

Membuat cluster DB baru yang menggunakan Serverless

Untuk membuat cluster Neptune DB yang menggunakan serverless, Anda dapat melakukannya dengan cara yang sama Konsol Manajemen AWS seperti yang Anda lakukan untuk membuat cluster yang disediakan. Perbedaannya adalah bahwa di bawah ukuran instance DB, Anda perlu mengatur kelas instance DB ke tanpa server. Ketika Anda melakukan itu, Anda kemudian perlu mengatur rentang kapasitas tanpa server untuk cluster.

Anda juga dapat membuat cluster DB tanpa server menggunakan perintah AWS CLI with seperti ini (di Windows, ganti '\' dengan '^'):

aws neptune create-db-cluster \ --region (an Wilayah AWS region that supports serverless) \ --db-cluster-identifier (ID for the new serverless DB cluster) \ --engine neptune \ --engine-version (optional: 1.2.0.1 or above) \ --serverless-v2-scaling-configuration "MinCapacity=1.0, MaxCapacity=128.0"

Anda juga dapat menentukan serverless-v2-scaling-configuration parameter seperti ini:

--serverless-v2-scaling-configuration '{"MinCapacity":1.0, "MaxCapacity":128.0}'

Anda kemudian dapat menjalankan describe-db-clusters perintah untuk ServerlessV2ScalingConfiguration atribut, yang akan mengembalikan pengaturan rentang kapasitas yang Anda tentukan:

"ServerlessV2ScalingConfiguration": { "MinCapacity": (the specified minimum number of NCUs), "MaxCapacity": (the specified maximum number of NCUs) }

Mengonversi cluster atau instance DB yang ada ke Tanpa Server

Jika Anda memiliki cluster Neptune DB yang menggunakan mesin versi 1.2.0.1 atau lebih tinggi, Anda dapat mengubahnya menjadi tanpa server. Proses ini memang menimbulkan beberapa downtime.

Langkah pertama adalah menambahkan rentang kapasitas ke cluster yang ada. Anda dapat melakukannya menggunakan Konsol Manajemen AWS, atau dengan menggunakan AWS CLI perintah seperti ini (di Windows, ganti '\' dengan '^'):

aws neptune modify-db-cluster \ --db-cluster-identifier (your DB cluster ID) \ --serverless-v2-scaling-configuration \ MinCapacity=(minimum number of NCUs, such as 2.0), \ MaxCapacity=(maximum number of NCUs, such as 24.0)

Langkah selanjutnya adalah membuat instance DB tanpa server baru untuk menggantikan instance primer yang ada (penulis) di cluster. Sekali lagi, Anda dapat melakukan ini dan semua langkah selanjutnya menggunakan Konsol Manajemen AWS atau AWS CLI. Dalam kedua kasus, tentukan kelas instance DB sebagai tanpa server. Per AWS CLI intah akan terlihat seperti ini (di Windows, ganti '\' dengan '^'):

aws neptune create-db-instance \ --db-instance-identifier (an instance ID for the new writer instance) \ --db-cluster-identifier (ID of the DB cluster) \ --db-instance-class db.serverless \ --engine neptune

Ketika instance penulis baru telah tersedia, lakukan failover untuk menjadikannya instance penulis untuk cluster:

aws neptune failover-db-cluster \ --db-cluster-identifier (ID of the DB cluster) \ --target-db-instance-identifier (instance ID of the new serverless instance)

Selanjutnya, hapus contoh penulis lama:

aws neptune delete-db-instance \ --db-instance-identifier (instance ID of the old writer instance) \ --skip-final-snapshot

Terakhir, lakukan hal yang sama untuk membuat instance tanpa server baru untuk menggantikan setiap instance pembaca yang disediakan yang ingin Anda ubah menjadi instans tanpa server, dan hapus instans yang disediakan yang ada (tidak diperlukan failover untuk instans pembaca).

Memodifikasi rentang kapasitas cluster DB tanpa server yang ada

Anda dapat mengubah rentang kapasitas cluster Neptune Serverless DB menggunakan cara AWS CLI seperti ini (di Windows, ganti '\' dengan '^'):

aws neptune modify-db-cluster \ --region (an AWS region that supports serverless) \ --db-cluster-identifier (ID of the serverless DB cluster) \ --apply-immediately \ --serverless-v2-scaling-configuration MinCapacity=4.0, MaxCapacity=32

Mengubah rentang kapasitas menyebabkan perubahan pada nilai default dari beberapa parameter konfigurasi. Neptunus dapat menerapkan beberapa default baru tersebut segera, tetapi beberapa perubahan parameter dinamis hanya berlaku setelah reboot. Status pending-reboot menunjukkan bahwa Anda memerlukan reboot untuk menerapkan beberapa perubahan parameter.

Mengubah instance Database Tanpa Server menjadi disediakan

Yang perlu Anda lakukan untuk mengonversi instans Neptune Serverless menjadi instans yang disediakan adalah mengubah kelas instansnya menjadi salah satu kelas instance yang disediakan. Lihat Memodifikasi instans DB Neptune (dan Menerapkan Segera).

Mengkonfigurasi klien Gremlin untuk Tanpa Server

Saat menggunakan WebSocket klien Gremlin dengan Neptune Serverless, Anda perlu mengonfigurasi interval detak jantung klien dengan tepat untuk mempertahankan koneksi yang stabil selama peristiwa penskalaan. Untuk petunjuk konfigurasi terperinci untuk klien Java JavaScript/Node.js, Go, dan Python, lihatKonfigurasi Detak Jantung untuk Neptunus Tanpa Server.

Memantau kapasitas tanpa server dengan Amazon CloudWatch

Anda dapat menggunakannya CloudWatch untuk memantau kapasitas dan pemanfaatan instans tanpa server Neptune di cluster DB Anda. Ada dua CloudWatch metrik yang memungkinkan Anda melacak kapasitas tanpa server saat ini baik di tingkat cluster maupun di tingkat instance:

  • ServerlessDatabaseCapacity— Sebagai metrik tingkat instance, laporkan kapasitas ServerlessDatabaseCapacity instans saat ini, di NCU. Sebagai metrik tingkat cluster, ia melaporkan rata-rata semua ServerlessDatabaseCapacity nilai dari semua instance DB di cluster.

  • NCUUtilization— Metrik ini melaporkan persentase kemungkinan kapasitas yang digunakan. Ini dihitung sebagai arus ServerlessDatabaseCapacity (baik di tingkat instance atau di tingkat cluster) dibagi dengan pengaturan kapasitas maksimum untuk cluster DB.

    Jika metrik ini mendekati 100% pada tingkat cluster, yang berarti cluster telah diskalakan setinggi mungkin, pertimbangkan untuk meningkatkan pengaturan kapasitas maksimum.

    Jika mendekati 100% untuk instance pembaca sementara instance penulis tidak mendekati kapasitas maksimum, pertimbangkan untuk menambahkan lebih banyak instance pembaca untuk mendistribusikan beban kerja baca.

Perhatikan bahwa FreeableMemory metrik CPUUtilization and memiliki arti yang sedikit berbeda untuk instans tanpa server dibandingkan untuk instans yang disediakan. Dalam konteks tanpa server, CPUUtilization adalah persentase yang dihitung sebagai jumlah CPU yang saat ini digunakan dibagi dengan jumlah CPU yang akan tersedia pada kapasitas maksimum. Demikian pula, FreeableMemory melaporkan jumlah memori bebas yang akan tersedia jika instance berada pada kapasitas maksimum.

Contoh berikut menunjukkan cara menggunakan AWS CLI di Linux untuk mengambil nilai kapasitas minimum, maksimum, dan rata-rata untuk instance DB tertentu, diukur setiap 10 menit selama satu jam. Perintah date Linux menentukan waktu mulai dan akhir secara relatif terhadap tanggal dan waktu saat ini. sort_byFungsi dalam --query parameter mengurutkan hasil secara kronologis berdasarkan Timestamp bidang:

aws cloudwatch get-metric-statistics \ --metric-name "ServerlessDatabaseCapacity" \ --start-time "$(date -d '1 hour ago')" \ --end-time "$(date -d 'now')" \ --period 600 \ --namespace "AWS/Neptune" --statistics Minimum Maximum Average \ --dimensions Name=DBInstanceIdentifier,Value=(instance ID) \ --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' \ --output table