Agen Storage Transfer Service adalah aplikasi yang berjalan di dalam penampung Open Container Initiative (OCI), yang berkoordinasi dengan Storage Transfer Service untuk transfer yang melibatkan sistem file atau penyimpanan yang kompatibel dengan S3.
Secara default, Storage Transfer Service menggunakan Docker untuk mem-build dan menjalankan container OCI.
Storage Transfer Service juga mendukung Podman untuk pengelolaan penampung; Anda harus
menginstal agen menggunakan perintah podman run
untuk menggunakan Podman.
Jika transfer tidak melibatkan sistem file atau penyimpanan yang kompatibel dengan S3, Anda tidak perlu menyiapkan agen.
Dokumen ini menjelaskan cara mengelola agen transfer di server Anda.
Ringkasan
Proses agen bersifat dinamis. Saat menjalankan transfer, Anda dapat menambahkan agen untuk meningkatkan performa. Agen yang baru dimulai bergabung ke kumpulan agen yang ditetapkan dan melakukan tugas dari transfer yang ada. Anda dapat menggunakannya untuk menyesuaikan jumlah agen yang berjalan, atau untuk menyesuaikan performa transfer dengan perubahan permintaan transfer.
Proses agen adalah kolektif yang toleran terhadap error. Jika satu agen berhenti berjalan, agen lainnya akan terus melakukan pekerjaan. Jika semua agen berhenti, saat Anda memulai ulang agen, transfer akan dilanjutkan dari tempat agen berhenti. Hal ini memungkinkan Anda menghindari pemantauan agen, mencoba ulang transfer, atau menerapkan logika pemulihan. Anda dapat menerapkan patch, memindahkan, dan menskalakan kumpulan agen secara dinamis tanpa downtime transfer dengan menkoordinasikan agen dengan Google Kubernetes Engine.
Misalnya, Anda mengirimkan dua transfer saat dua agen sedang berjalan. Jika salah satu agen berhenti karena mesin dimulai ulang atau patch sistem operasi, agen lainnya akan terus berfungsi. Kedua transfer masih berjalan, tetapi lebih lambat karena satu agen memindahkan data. Jika agen yang tersisa juga berhenti, semua transfer akan berhenti menghasilkan progres, karena tidak ada agen yang berjalan. Saat Anda memulai ulang proses agen, transfer akan dilanjutkan dari tempat transfer dihentikan.
Proses agen termasuk dalam kumpulan. Keduanya secara kolektif memindahkan data Anda secara paralel. Oleh karena itu, semua agen dalam kumpulan harus memiliki akses yang sama ke semua sumber data yang ingin Anda transfer.
Misalnya, jika mentransfer data dari sistem file tertentu, Anda harus memasang sistem file ke setiap mesin yang menghosting agen di kumpulan agen. Jika beberapa agen di kumpulan Anda dapat menjangkau sumber data dan agen lainnya tidak dapat, transfer dari sumber data tersebut tidak akan berhasil.
Sebelum memulai
Sebelum mengonfigurasi transfer, pastikan Anda telah mengonfigurasi akses: untuk pengguna dan akun layanan.
Jika Anda akan menggunakan perintah gcloud
,
instal gcloud CLI.
Menginstal dan menjalankan agen transfer
Sebaiknya instal minimal tiga agen per kumpulan agen, idealnya di mesin terpisah. Untuk informasi selengkapnya tentang cara menentukan jumlah agen yang akan dijalankan, lihat Memaksimalkan performa agen transfer.
Jangan sertakan informasi sensitif seperti informasi identitas pribadi (PII) atau data keamanan di awalan ID agen Anda. Nama resource dapat di-propagasi ke nama resource Google Cloud lainnya dan dapat diekspos ke sistem internal Google di luar project Anda.Untuk menginstal dan menjalankan agen transfer:
Konsol Google Cloud
Di konsol Google Cloud, buka halaman Agent pools.
Pilih kumpulan agen tempat agen baru akan ditambahkan.
Klik Instal agen.
Ikuti petunjuk untuk menginstal dan menjalankan agen.
Untuk informasi selengkapnya tentang opsi command line agen, lihat Opsi command line agen.
gcloud CLI
Untuk menginstal satu atau beberapa agen menggunakan gcloud CLI, jalankan
gcloud transfer agents install
:
gcloud transfer agents install --pool=POOL_NAME --count=NUM_AGENTS \
--mount-directories=MOUNT_DIRECTORIES
Alat ini akan memandu Anda melalui langkah-langkah yang diperlukan untuk menginstal agen. Perintah
ini menginstal agen NUM_AGENTS di komputer Anda, yang dipetakan ke
nama kumpulan yang ditentukan sebagai POOL_NAME, dan mengautentikasi
agen menggunakan kredensial gcloud
Anda. Nama kumpulan harus ada, atau error akan ditampilkan.
Flag --mount-directories
bersifat opsional, tetapi sangat direkomendasikan. Nilainya adalah daftar direktori yang dipisahkan koma di sistem file tempat agen akan diberi akses.
Menghapus tanda ini akan memasang seluruh sistem file ke penampung agen. Lihat
referensi gcloud
untuk detail selengkapnya.
Sumber yang kompatibel dengan S3
Saat menginstal agen untuk digunakan dengan sumber yang kompatibel dengan S3, Anda harus memberikan kredensial AWS sebagai variabel lingkungan sebagai nilai AWS_ACCESS_KEY_ID
dan AWS_SECRET_ACCESS_KEY
, atau disimpan sebagai kredensial default dalam file konfigurasi sistem Anda.
export AWS_ACCESS_KEY_ID=ID
export AWS_SECRET_ACCESS_KEY=SECRET
gcloud transfer agents install --pool=POOL_NAME \
--creds-file=/relative/path/to/service-account-key.json
Menggunakan kunci akun layanan
Untuk menjalankan agen menggunakan
kunci akun layanan, gunakan
opsi --creds-file
:
gcloud transfer agents install --pool=POOL_NAME --count=NUM_AGENTS \
--creds-file=/relative/path/to/service-account-key.json
Info selengkapnya
Untuk daftar lengkap flag opsional, jalankan
gcloud transfer agents install --help
atau baca
referensi gcloud transfer
.
Docker
Sebelum menggunakan Docker untuk menginstal agen, ikuti petunjuk untuk menginstal Docker.
Perintah docker run
menginstal satu agen. Untuk meningkatkan jumlah agen
dalam kumpulan Anda, jalankan kembali perintah ini sebanyak yang diperlukan.
Saat menginstal agen, Anda dapat memilih untuk mengautentikasi menggunakan kredensial default gcloud
, atau dengan akun layanan.
Kredensial default
Agar container Docker dapat melakukan autentikasi dengan kredensial default gcloud
Anda, buat volume Docker yang berisi file dengan kredensial default aplikasi Anda dengan menjalankan perintah berikut:
sudo docker run -ti --name gcloud-config google/cloud-sdk gcloud auth application-default login
Kemudian, gunakan perintah berikut untuk menginstal agen, menggunakan
flag --volumes-from
untuk memasang volume kredensial gcloud-config
:
sudo docker run --ulimit memlock=64000000 -d --rm \ --volumes-from gcloud-config \ -v HOST_DIRECTORY:CONTAINER_DIRECTORY \ gcr.io/cloud-ingest/tsop-agent:latest \ --project-id=PROJECT_ID \ --hostname=$(hostname) \ --agent-pool=POOL_NAME
Autentikasi akun layanan
Untuk menginstal dan menjalankan agen transfer docker run
menggunakan kredensial akun layanan, tentukan jalur ke kunci akun layanan berformat JSON menggunakan tanda --creds-file
.
Jalur harus diawali dengan string, /transfer_root
.
Lihat Membuat dan mengelola kunci akun layanan untuk mengetahui informasi selengkapnya tentang kunci akun layanan.
sudo docker run --ulimit memlock=64000000 -d --rm \ -v HOST_DIRECTORY:CONTAINER_DIRECTORY \ -v PATH/TO/KEY.JSON:PATH/TO/KEY.JSON \ gcr.io/cloud-ingest/tsop-agent:latest \ --project-id=PROJECT_ID \ --creds-file=/transfer_root/PATH/TO/KEY.JSON \ --hostname=$(hostname) \ --agent-pool=POOL_NAME
Opsi dan tanda
Ganti variabel dalam contoh di atas dengan informasi berikut:
HOST_DIRECTORY
adalah direktori di mesin host yang ingin Anda salin. Anda dapat menggunakan lebih dari satu flag-v
untuk menentukan direktori tambahan yang akan disalin.CONTAINER_DIRECTORY
adalah direktori yang dipetakan dalam penampung agen. Nilai ini harus sama denganHOST_DIRECTORY
.PROJECT_ID
adalah project ID yang menghosting transfer.POOL_NAME
adalah nama kumpulan agen tempat menginstal agen ini. Jika Anda menghapus tanda ini, agen akan diinstal ke kumpulantransfer_service_default
project Anda.
Perintah docker run
mendukung flag tambahan.
--enable-mount-directory
memasang seluruh sistem file di bawah direktori/transfer_root
pada penampung. Jika--enable-mount-directory
ditentukan, pembatasan direktori yang menggunakan flag-v
tidak akan diterapkan.--creds-file=CREDENTIAL_FILE
menentukan jalur ke file kredensial akun layanan berformat JSON. Kecuali jika Anda menggunakan--enable_mount_directory
, Anda harus:- Pasang file kredensial menggunakan flag
-v
. - Tambahkan awalan jalur ke
--creds-file
dengan/transfer_root
.
Contoh:
-v /tmp/key.json:/tmp/key.json \ --creds-file=/transfer_root/tmp/key.json
- Pasang file kredensial menggunakan flag
--enable-s3
menentukan bahwa agen ini ditujukan untuk transfer dari penyimpanan yang kompatibel dengan S3. Agen yang diinstal dengan opsi ini tidak dapat digunakan untuk transfer dari sistem file POSIX.Jika transfer Anda berasal dari AWS S3 atau penyimpanan yang kompatibel dengan S3, teruskan ID kunci akses dan kunci rahasia menggunakan variabel lingkungan:
-e AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID \ -e AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY
--env HTTPS_PROXY=PROXY
menentukan proxy penerusan di jaringan Anda. NilaiPROXY
adalah URL HTTP dan port server proxy. Pastikan Anda menentukan URL HTTP, bukan URL HTTPS, untuk menghindari permintaan yang digabungkan dua kali dalam enkripsi TLS. Permintaan yang digabungkan dua kali mencegah server proxy mengirim permintaan keluar yang valid.--agent-id-prefix=ID_PREFIX
menentukan awalan opsional yang ditambahkan ke ID agen untuk membantu mengidentifikasi agen atau mesinnya di konsol Google Cloud. Jika prefiks digunakan, ID agen akan diformat sebagaiprefix + hostname + Docker container ID
.--log-dir=LOGS_DIRECTORY
mengubah direktori tempat agen menulis log. Direktori default-nya adalah/tmp/
.Jika belum menentukan
--enable_mount_directory
, Anda harus menambahkan awalan/transfer_root
ke jalur ini. Contohnya,/transfer_root/logs
.--max-physical-mem=MAX_MEMORY
: agen secara default menggunakan memori sistem maksimum 8 GiB. Jika setelan default tidak sesuai dengan lingkungan Anda, Anda dapat menentukan penggunaan memori maksimum yang relevan dalam format berikut:Nilai max-physical-mem
Setelan memori maksimum 6g
6 gigabyte 6gb
6 gigabyte 6GiB
6 gibibyte
Podman
Sebelum menggunakan Podman untuk menginstal agen, instal Podman:
sudo apt-get update
sudo apt-get -y install podman
Saat menginstal agen, Anda dapat memilih untuk mengautentikasi menggunakan kredensial default gcloud
, atau dengan akun layanan.
Kredensial default
Agar penampung agen dapat melakukan autentikasi dengan kredensial default Google Cloud CLI, buat volume yang berisi file dengan kredensial default aplikasi Anda dengan menjalankan perintah berikut:
gcloud auth print-access-token | podman login -u oauth2accesstoken --password-stdin gcr.io
sudo podman pull gcr.io/google.com/cloudsdktool/google-cloud-cli:stable
sudo podman run -ti --replace --name gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud auth application-default login
```
Then use the following command to install an agent, using the
`--volumes-from` flag to mount the `gcloud-config` credentials volume.
The command installs one agent. To increase the number of agents in your
pool, re-run this command as many times as required.
```sh
sudo podman run \
--ulimit memlock=64000000 \
-d \
--rm \
--volumes-from gcloud-config \
-v HOST_DIRECTORY:CONTAINER_DIRECTORY \
gcr.io/cloud-ingest/tsop-agent:latest \
--project-id=PROJECT_ID \
--hostname=$(hostname) \
--agent-pool=POOL_NAME
```
Autentikasi akun layanan
Untuk menginstal dan menjalankan agen transfer menggunakan kredensial akun layanan, tentukan jalur ke kunci akun layanan berformat JSON menggunakan tanda --creds-file
.
Jalur harus diawali dengan string, /transfer_root
.
Lihat Membuat dan mengelola kunci akun layanan untuk mengetahui informasi selengkapnya tentang kunci akun layanan.
sudo podman run --ulimit memlock=64000000 -d --rm \ -v HOST_DIRECTORY:CONTAINER_DIRECTORY \ -v PATH/TO/KEY.JSON:PATH/TO/KEY.JSON \ gcr.io/cloud-ingest/tsop-agent:latest \ --project-id=PROJECT_ID \ --creds-file=/transfer_root/PATH/TO/KEY.JSON --hostname=$(hostname) \ --agent-pool=POOL_NAME
Opsi dan tanda
Ganti variabel dalam contoh di atas dengan informasi berikut:
HOST_DIRECTORY
adalah direktori di mesin host yang ingin Anda salin. Anda dapat menggunakan lebih dari satu flag-v
untuk menentukan direktori tambahan yang akan disalin.CONTAINER_DIRECTORY
adalah direktori yang dipetakan dalam penampung agen. Nilai ini harus sama denganHOST_DIRECTORY
.PROJECT_ID
adalah project ID yang menghosting transfer.POOL_NAME
adalah nama kumpulan agen tempat menginstal agen ini. Jika Anda menghapus tanda ini, agen akan diinstal ke kumpulantransfer_service_default
project Anda.
Perintah podman run
mendukung flag tambahan.
--enable-mount-directory
memasang seluruh sistem file di bawah direktori/transfer_root
pada penampung. Jika--enable-mount-directory
ditentukan, pembatasan direktori yang menggunakan flag-v
tidak akan diterapkan.--creds-file=CREDENTIAL_FILE
menentukan jalur ke file kredensial akun layanan berformat JSON. Kecuali jika Anda menggunakan--enable_mount_directory
, Anda harus:- Pasang file kredensial menggunakan flag
-v
. - Tambahkan awalan jalur ke
--creds-file
dengan/transfer_root
.
Contoh:
-v /tmp/key.json:/tmp/key.json \ --creds-file=/transfer_root/tmp/key.json
- Pasang file kredensial menggunakan flag
--enable-s3
menentukan bahwa agen ini ditujukan untuk transfer dari penyimpanan yang kompatibel dengan S3. Agen yang diinstal dengan opsi ini tidak dapat digunakan untuk transfer dari sistem file POSIX.Jika transfer Anda berasal dari AWS S3 atau penyimpanan yang kompatibel dengan S3, teruskan ID kunci akses dan kunci rahasia menggunakan variabel lingkungan:
-e AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID \ -e AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY
--env HTTPS_PROXY=PROXY
menentukan proxy penerusan di jaringan Anda. NilaiPROXY
adalah URL HTTP dan port server proxy. Pastikan Anda menentukan URL HTTP, bukan URL HTTPS, untuk menghindari permintaan yang digabungkan dua kali dalam enkripsi TLS. Permintaan yang digabungkan dua kali mencegah server proxy mengirim permintaan keluar yang valid.--agent-id-prefix=ID_PREFIX
menentukan awalan opsional yang ditambahkan ke ID agen untuk membantu mengidentifikasi agen atau mesinnya di konsol Google Cloud. Jika prefiks digunakan, ID agen akan diformat sebagaiprefix + hostname + OCI container ID
.--log-dir=LOGS_DIRECTORY
mengubah direktori tempat agen menulis log. Direktori default-nya adalah/tmp/
.Jika belum menentukan
--enable_mount_directory
, Anda harus menambahkan awalan/transfer_root
ke jalur ini. Contohnya,/transfer_root/logs
.--max-physical-mem=MAX_MEMORY
: agen secara default menggunakan memori sistem maksimum 8 GiB. Jika setelan default tidak sesuai dengan lingkungan Anda, Anda dapat menentukan penggunaan memori maksimum yang relevan dalam format berikut:Nilai max-physical-mem
Setelan memori maksimum 6g
6 gigabyte 6gb
6 gigabyte 6GiB
6 gibibyte
Pemecahan masalah
Jika konfigurasi SELinux Anda mewajibkan label ditempatkan pada konten volume yang dipasang ke penampung, tambahkan tanda :Z
ke volume:
sudo podman run --ulimit memlock=64000000 -d --rm \
-v HOST_DIRECTORY:CONTAINER_DIRECTORY:Z \
-v PATH/TO/KEY.JSON:PATH/TO/KEY.JSON \
gcr.io/cloud-ingest/tsop-agent:latest \
--project-id=PROJECT_ID \
--creds-file=/transfer_root/PATH/TO/KEY.JSON
--hostname=$(hostname) \
--agent-pool=POOL_NAME
Tanpa label, sistem keamanan mungkin mencegah proses yang berjalan di dalam penampung menggunakan konten. Secara default, Podman tidak mengubah label yang ditetapkan oleh OS.
Mengonfirmasi koneksi agen
Untuk mengonfirmasi bahwa agen Anda terhubung:
Di konsol Google Cloud, buka halaman Agent pools.
Kumpulan agen Anda akan ditampilkan, dengan jumlah agen yang terhubung.
Pilih kumpulan agen untuk melihat detail tentang agen yang terhubung.
Jika agen baru tidak muncul di halaman kumpulan agen dalam waktu 10 menit setelah pembuatannya, lihat Agen tidak terhubung.
Memantau aktivitas agen
Anda dapat menggunakan Cloud Monitoring untuk memantau aktivitas agen.
Pemantauan tersedia di dimensi project
, agent_pool
, dan agent_id
.
Dengan data pemantauan ini, Anda dapat menyiapkan pemberitahuan untuk memberi tahu Anda tentang potensi masalah pada transfer. Untuk melakukannya, buat pemberitahuan pada salah satu metrik Google Cloud berikut:
Nama metrik | Hal yang dijelaskan | Saran penggunaan |
---|---|---|
storagetransfer.googleapis.com/agent/transferred_bytes_count | Mengukur seberapa cepat agen tertentu memindahkan data di semua tugas yang dilayaninya pada suatu waktu. | Pemberitahuan untuk penurunan performa. |
storagetransfer.googleapis.com/agent/connected | Boolean yang True untuk setiap agen yang mengirim pesan heartbeat terbaru ke Google Cloud. |
|
Menghentikan agen
Untuk menghentikan agen, jalankan docker stop
pada ID penampung Docker agen. Untuk menemukan
ID dan menghentikan agen:
Di konsol Google Cloud, buka halaman Agent pools.
Pilih kumpulan agen yang berisi agen yang akan dihentikan.
Pilih agen dari daftar. Gunakan kolom Filter untuk menelusuri awalan, status agen, usia agen, dan lainnya.
Klik Stop agent. Perintah
docker stop
dengan ID penampung tertentu akan ditampilkan.Jalankan perintah di mesin tempat agen berjalan. Perintah
docker stop
yang berhasil akan menampilkan ID penampung.
Setelah dihentikan, agen akan ditampilkan di daftar kumpulan agen sebagai Disconnected.
Menghapus agen
Untuk menghapus agen tertentu, cantumkan agen yang berjalan di komputer Anda:
docker container list --all --filter ancestor=gcr.io/cloud-ingest/tsop-agent
Kemudian, teruskan ID agen ke transfer agents delete
:
gcloud transfer agents delete --ids=id1,id2,…
Untuk menghapus semua agen yang berjalan di komputer, gunakan flag --all
atau flag --uninstall
. Kedua flag tersebut menghapus semua agen di mesin;
flag --uninstall
juga meng-uninstal image Docker agen.
gcloud transfer agents delete --all
gcloud transfer agents delete --uninstall
Detail transfer sistem file
Transfer inkremental
Storage Transfer Service memulai semua transfer dengan menghitung data yang ada di sumber dan tujuan untuk menentukan file sumber mana yang baru, diperbarui, atau dihapus sejak transfer terakhir. Kami melakukan hal ini untuk mengurangi jumlah data yang kami kirim dari mesin Anda, menggunakan bandwidth secara efektif, dan mengurangi waktu transfer.
Untuk mendeteksi apakah file telah berubah, kita memeriksa waktu dan ukuran file sumber yang terakhir diubah, lalu membandingkannya dengan waktu dan ukuran yang terakhir diubah yang dicatat saat file terakhir kali disalin. Saat mendeteksi file baru atau yang telah diubah, kita menyalin seluruh file ke tujuannya. Untuk informasi selengkapnya tentang keaktualan file, lihat Detail konsistensi data.
Secara default, kami mendeteksi, tetapi tidak menindaklanjuti, file yang dihapus di sumber. Jika Anda memilih opsi sinkronisasi Hapus file tujuan yang tidak ada di sumber saat membuat atau mengedit, transfer Anda akan menghapus objek yang sesuai di tujuan.
Jika Anda memilih opsi sinkronisasi Hapus file tujuan yang tidak ada di sumber, file yang tidak sengaja dihapus di sumber juga akan dihapus di tujuan. Untuk mencegah kehilangan data akibat penghapusan yang tidak disengaja, sebaiknya aktifkan pembuatan versi objek di bucket tujuan jika Anda memilih untuk menggunakan opsi ini. Kemudian, jika Anda menghapus file secara tidak sengaja, Anda dapat memulihkan objek di Cloud Storage ke versi lama.
Detail konsistensi data
Operasi transfer yang berhasil akan mentransfer semua file sumber yang ada dan tidak diubah selama seluruh waktu operasi berjalan. File sumber yang dibuat, diperbarui, atau dihapus selama transfer mungkin atau mungkin tidak memiliki perubahan tersebut yang tercermin dalam set data tujuan.
Storage Transfer Service menggunakan waktu dan ukuran modifikasi terakhir file untuk menentukan apakah file tersebut berubah. Jika file diperbarui tanpa mengubah waktu atau
ukuran modifikasi terakhirnya, dan Anda mengaktifkan opsi delete-objects-from-source
, Anda dapat kehilangan data
dari perubahan tersebut.
Saat menggunakan fitur delete-objects-from-source
, sebaiknya
bekukan operasi tulis ke sumber selama durasi transfer untuk melindungi
dari kehilangan data.
Untuk membekukan operasi tulis ke sumber, lakukan salah satu tindakan berikut:
- Clone direktori yang ingin Anda transfer, lalu gunakan direktori yang di-clone sebagai sumber transfer.
- Hentikan aplikasi yang menulis ke direktori sumber.
Jika penting untuk merekam perubahan yang terjadi selama transfer, Anda dapat menjalankan kembali transfer, atau menetapkan sistem file sumber sebagai hanya baca saat operasi berjalan.
Karena Cloud Storage tidak memiliki konsep direktori, direktori sumber yang kosong tidak akan ditransfer.