Beli akaun awan Google: Gunakan Cloud Scheduler untuk menukar mesin maya VMsecara automatik secara berkala dengan fungsi awan

awan 2026-05-30 阅读 7
1

Dalam operasi dan penyelenggaraan awan setiap hari, banyak pasukan akan menghadapi "lubang hitam anggaran" yang menyakitkan:

Pelayan terbiar.

Sebagai contoh, persekitaran pembangunan syarikat, persekitaran ujian atau sistem laporan dalaman biasanya hanya digunakan dalam masa 8 hingga 10 jam waktu kerja pada siang hari. Tetapi kerana operasi dan penyelenggaraan terlalu malas untuk membuang, atau sering lupa mematikan selepas bekerja, pelayan ini sering menghidupkan dan menganggur di latar belakang tanpa henti 24 jam dan 365 hari.

Dalam mod pengebilan Google Cloud (GCP), mesin maya (Compute Engine) dikira mengikut detik dan spesifikasi contoh. Ini bermakna bahawa,

Sekiranya anda tidak mematikan selepas bekerja, kos pelayan yang terbuang sepanjang malam mungkin secara langsung menyumbang lebih daripada 60% daripada bil bulanan anda

Pendekatan tradisional adalah menulis skrip Shell yang kompleks dengan tempatan

Cron

Tugas masa. Tetapi apabila mesin tempatan terputus atau dimatikan, skrip akan terlepas.

Dalam ekologi moden Google Cloud, terdapat gabungan emas tanpa pelayan yang elegan:

Gunakan Cloud Scheduler (tugas berjadual awan) dengan Cloud Functions (fungsi awan)

。 Ia seperti "alat suis awan" automatik sepenuhnya. Anda hanya perlu menulis beberapa baris jadual dengan bibir anda, dan Google akan membantu anda menyelesaikan pemutus waktu pelayan dalam beberapa saat tanpa menduduki pelayan di latar belakang.

Hari ini kami menolak retorik rasmi, bermula dari pertempuran sebenar yang murni, dan membawa anda ke barisan pertahanan penjimatan wang masa peringkat kilang yang besar ini.

Tahap pertama: pembongkaran mendalam, "model dunia tiga dimensi" suis pemasa awan

Sebelum menulis kod, anda mesti membuat model fizikal operasi dan penyelenggaraan automatik ini dalam fikiran anda. Keseluruhan rangkaian pemasangan terdiri daripada tiga komponen teras:

Jam Penggera Awan: Pemasa yang dihoskan sepenuhnya (setara dengan crontab awan). Anda menceritakannya dengan sintaks Linux Cron standard: "Panggil saya pada pukul 9 pagi dan pukul 8 malam setiap hari". Ia akan menghantar isyarat keluar tepat pada waktunya.

Utusan Rahsia (barisan mesej Pub/Sub): Stesen radio intranet yang selamat. Setelah jam penggera berbunyi, arahan mudah (seperti permulaan atau berhenti) akan dikemas dan dihantar ke saluran radio tertentu.

Cloud Functions: Fungsi tanpa pelayan ringan Google. Ia biasanya tidak aktif sepenuhnya (kos 0). Setelah mendengar arahan yang sesuai di radio, ia akan "mengangkat mayat" di latar belakang selama 0,5 saat, memanggil API Google Cloud untuk menghidupkan atau mematikan mesin maya sasaran dengan satu kekunci, dan kemudian terus memusnahkannya secara fizikal.

Tahap kedua: malam pertempuran sebenar-membuka identiti undang-undang untuk robot (IAM)

Membuat Cloud Functi

Sebelum memindahkan pelayan, kita mesti dengan tegas melaksanakan "prinsip kebenaran minimum" dan memberikan izin kerja istimewa yang sah untuk mencegahnya daripada merosakkan aset teras lain secara tidak sengaja.

Log masuk ke konsol GCP dan navigasi ke "IAM dan Pengurusan"-> "Akaun Perkhidmatan".

Klik "Buat Akaun Perkhidmatan" dan namakan vm-timer-executor.

Isi peranan terkecil dengan tepat: cari dan pilih "Computering Instance Admin (v1)" (pengurus contoh mesin maya) di halaman peranan. Nota: Jika untuk keselamatan yang lebih ketat, anda boleh menyesuaikan watak khusus yang hanya mengandungi compute.instances.start dan compute.instances.stop.

Klik Selesai.

Tahap ketiga: latihan praktikal satu-menulis kod suis teras Cloud Functions

Kami datang ke medan perang pengkomputeran teras. Kami ingin menulis kod Node.js minimalis sehingga dapat menerima kod rahsia dan memberi arahan kepada pelayan.

Cari dan pergi ke halaman Fungsi Awan dan klik "Buat fungsi".

Tetapan asas: Nama fungsi: vm-auto-switcher. Wilayah: Pilih kawasan yang paling dekat dengan mesin maya anda (seperti asia-east1 Taiwan). Jenis Pencetus (Trigger): Pilih "Cloud Pub/Sub" untuk menu lungsur. Klik untuk membuat tema baru, bernama vm-timer-topic.

Penyesuaian parameter runtime: Kembangkan "runtime, build, sambungan dan tetapan keselamatan" di bawah. Di lajur akaun perkhidmatan, akaun lalai mesti dipotong, dan vm-timer-executor yang kami bina pada tahap kedua mesti dipilih dengan tepat.

Klik Seterusnya untuk memasukkan editor kod. Pemilihan persekitaran operasi

Node.js 20

(Atau mana-mana bahasa yang anda kenal).

Menjadikan

Index. js

Semua kod di dalamnya dikosongkan, dan kod kawalan tegar berikut dari standard persekitaran pengeluaran pengeluar utama dilampirkan:

JavaScript

Const Compute = require('@ google-cloud/compute');

Const compute = baru Compute();

Exports. manageVmStatus = async (cloudEvent) => {

// 1. Paksa secara paksa membongkar isyarat radio yang disulitkan dari stesen Pub/Sub

Const base64Data = cloudEvent.data.message.data;

Const jsonS

Tring = Buffer. dari (base64Data, 'base64').toString();

Const payload = JSON.parse(jsonString);

// 2. Ekstrak lukisan reka bentuk dengan tepat: Mesin mana yang akan anda gerakkan? Apa yang awak nak buat?

Const {zone, instanceName, action } = payload;

jika (! Zon | |! InstanceName | |! Tindakan) {

Console. error('[Laporan Kesalahan Bencana] Tiada rujukan! Mesti mengandungi zone, instanceName, dan action! ');

kembali;

}

Const zoneObj = compute.zone(zone);

Const vm = zoneObj.vm(instanceName);

Console. log('[Automasi Operasi dan Pengaktifan Penyelenggaraan] sedang berusaha untuk melakukan operasi [${action}] pada mesin maya yang terletak di ${zon}] [${instanceName}]...');

cuba {

If (action.toLowerCase() === 'start') {

// Jalankan boot satu klik

Await vm.start();

Console. log('[Kejayaan] Mesin maya [${instanceName}] Perintah but berjaya dikeluarkan, dan ia bangun dengan kelajuan penuh! ');

} Else if (action.toLowerCase() === 'stop') {

// Lakukan penutupan selamat satu klik

Await vm.stop();

Console. log('[Berjaya] Mesin maya [${instanceName}] Perintah penutupan berjaya dikeluarkan dan kegagalan kuasa selamat bermula! ');

} lain {

Console. warn('[amaran] arahan operasi yang tidak dikenali: ${action}. Fungsi ini hanya menyokong permulaan atau berhenti. ');

}

} tangkap (rantaian) {

Console. error('[Kegagalan Fizikal] Kesalahan semasa pelaksanaan: ${error.message}');

}

};

Letakkan sebelah

Pakej. json

Diubah untuk memasukkan rasmi Google

Pergantungan perpustakaan Compute:

JSON

{

"Dependencies": {

"@ Google-cloud/compute": "^ 4.0.0",

"@ Google-cloud/cloud-conformance": "^ 0.2.2"

}

}

Ubah suai "Entry point" di sudut kanan atas untuk:

ManageVmStatus

。 Klik

"Penyebaran (Deploy)"

Tahap keempat: latihan pertempuran sebenar dua-konfigurasi Cloud Scheduler mengimpal pistol permulaan masa mati

Setelah fungsi digunakan, ia seperti ejen yang diam-diam menunggu kod rahsia. Sekarang, kita akan membina dua jam penggera awan, satu bertanggungjawab untuk menyalakannya pada waktu pagi dan yang lain bertanggungjawab mendesaknya untuk tidur pada waktu malam.

Cari masuk

Cloud Scheduler (Misi perancangan awan)

Halaman.

1. Jam penggera 1: Konfigurasi Isnin hingga Jumaat jam 8:30 pagi untuk boot dengan kelajuan penuh

Klik

"Buat kerja rumah"

:

Nama: cron-start-dev-vm.

Frekuensi: Masukkan ungkapan Linux Cron standard: 30 8*1-5. (Terjemahan: Dipicu pada pukul 8:30 pagi setiap hari Isnin hingga Jumaat).

Zon waktu: Pilih zon waktu utama tempatan anda (seperti waktu Shanghai, China).

Jenis sasaran: Pilih Pub/Sub.

Topik: Pilih topik vm-timer yang baru kami bina.

Badan mesej: Ini adalah teras Payload robot, dan arahan JSON berikut diposkan dengan tepat: JSON{ "zone": "asia-east1-a", "instanceName": "my-dev-workstation", "action": "mula"}

Klik untuk mencipta.

2. Jam penggera 2: Konfigurasikan penutupan paksa pada pukul 20:30 pada hari Isnin hingga Jumaat

Klik sekali lagi untuk membuat kerja rumah:

Nama: cron-stop-dev-vm.

Frekuensi: Masukkan 30 20*1-5. (Terjemahan: Dipicu pada pukul 20:30 setiap hari Isnin hingga Jumaat).

Jenis sasaran: Pub/Sub, temanya masih vm-timer-topic.

Badan mesej: Tukar tindakan ke arahan penutupan: JSON{ "zone": "asia-east1-a", "instanceName": "my-dev-workst

Ation ", "tindakan ":" berhenti "}

Klik untuk mencipta. Pada ketika ini, wayar berduri gelung tertutup terbuka dan ditutup sepenuhnya terkunci.

Tahap kelima: pemandangan menyaksikan keajaiban-latihan ujian manual "tekan badan"

Konfigurasi sudah berakhir, adakah kita harus menunggu sehingga jam 8:30 malam untuk melihatnya tidak berkesan? Operasi dan penyelenggaraan kilang besar tidak pernah berjudi dengan nasib, kami secara langsung melakukan "ujian pemangkin manual" di tempat.

Pastikan mesin maya anda yang dipanggil my-dev-workstation sedang berjalan dalam keadaan hijau (Running).

Datang ke halaman senarai Cloud Scheduler.

Cari tugas cron-stop-dev-vm yang bertanggungjawab untuk penutupan, klik pada tiga titik di sebelah kanannya, dan jangan teragak-agak untuk memilih "Force run".

Sebaik sahaja anda mengklik, Cloud Scheduler secara paksa akan melewati had masa dan mengambil isyarat penutupan ke Pub/Sub.

Pada masa ini, anda segera memotong kembali

Senarai Mesin Maya Enjin Komputer

。 Anda secara ajaib akan mengetahui bahawa ikon status pelayan yang pada awalnya mempunyai lampu hijau langsung berubah menjadi kuning tanpa campur tangan manual.

Stopping

, Selepas beberapa saat, kelabu sepenuhnya dan masuk

Terminal

(Matikan) Keadaan hibernasi.

Tidak berfungsi

Logs (log)

Melihatnya di layar besar, jejak kod yang baru kami tulis dicetak dengan jelas di dalamnya:

[Kejayaan] Mesin maya [stesen kerja saya] berjaya mengeluarkan arahan penutupan dan mula mematikan dengan selamat!

Tugas selesai dengan jayanya! Sejak itu, mesin ini akan menjadi seperti pekerja yang bekerja dan berehat secara berkala.

Tahap keenam: sejarah operasi dan penyelenggaraan automatik komersial

Set seni bina tanpa pelayan ini sangat menyegarkan untuk digunakan, dan kesan penjimatan wang segera. Tetapi untuk bertahan dalam persekitaran pasaran peringkat perusahaan yang sebenar, sebagai ketua arkitek, anda mesti segera memperkuat batas rancangan untuk mencegah dua lubang besar yang tidak dapat dilihat berikut:

1. Bahaya tersembunyi "data cakera tempatan dihapuskan" yang mematikan (lubang dalam khas GCP)

Apabila banyak pemula membuka mesin maya, mereka tamak dengan kelajuan membaca dan menulis, dan mereka akan dipasang di mesin

SSD tempatan (SSD tempatan)

Atau konfigurasikan sistem sebagai cakera yang tidak berkekalan.

Bencana berlaku: Dalam logik GCP yang mendasari, jika anda memanggil vm.stop() untuk melakukan penutupan fizikal, data dalam semua SSD Tempatan yang dipasang pada mesin ini akan dikeluarkan sepenuhnya dari perkakasan fizikal oleh Google pada saat kegagalan kuasa. Padamkan dengan jelas. Hanya data yang dipasang pada Cakera Persisten standard yang dapat disimpan setelah dimatikan.

Spesifikasi penghindaran lubang arkitek: Untuk semua pelayan yang ingin bergabung dalam barisan suis biasa, dilarang sama sekali menyimpan Loc yang belum melakukan banyak sandaran.

Al SSD data teras sementara. Pastikan anda mengambil semua aset Disk Persistent.

2. Berhati-hatilah dengan ratapan "anjing lembur larut malam" (mekanisme pemutus litar berperikemanusiaan)

Automasi terlalu tegar dan kadang-kadang membawa maklum balas negatif. Sebagai contoh, pada pukul 8:30 malam pada hari Jumaat, seluruh kumpulan pembangunan dengan panik menukar bug di pelayan untuk menangkap projek kecemasan. Akibatnya, pada pukul 8:30, Cloud Scheduler sangat berdedikasi dan kejam untuk mematikan pelayan dengan satu klik. Akibatnya, separuh daripada kod yang ditulis oleh pembangunan secara langsung terputus dan kehilangan paket, dan mental langsung seluruh kumpulan runtuh.

Tune manusiawi tegar: Jangan mengeluarkan vm.stop() secara membuta tuli dalam kod.

Penyelesaian lanjutan: Sebelum kod penutupan dijalankan, biarkan fungsi melakukan pengesanan dalaman satu langkah (misalnya, periksa kadar penggunaan CPU pelayan semasa atau jumlah sambungan intranet rangkaian melalui SSH atau petunjuk pemantauan).

Sekiranya didapati bahawa kadar penghunian CPU masih lebih besar dari 20% (menunjukkan bahawa seseorang sedang melakukan ujian tekanan atau bekerja lebih masa), fungsi tersebut secara automatik akan mengirimkan pemberitahuan buku terbang/Dingding: "Tanda-tanda kerja lembur telah dipantau, dan penutupan larut malam ini akan dilangkau secara automatik, dan penundaan akan dilakukan setelah satu jam Periksa". Kod ini meninggalkan kehangatan, yang merupakan pencapaian tertinggi arkitek operasi dan penyelenggaraan yang matang.

Ringkasan

Dengan menggunakan GCP Cloud Scheduler dan Cloud Functions untuk memainkan mesin maya secara automatik, inti pati industri sebenarnya terletak pada enam belas perkataan:

Pesanan masa, penghantaran tanpa wayar, pesanan fungsi, sekering hangat

Anda benar-benar mengucapkan selamat tinggal kepada keadaan asal penggunaan telefon bimbit anda untuk menyambung ke VPN untuk mematikan pelayan secara manual selepas bekerja. Gunakan kuasa pengkomputeran Serverless yang benar-benar percuma untuk menahan setiap duit syiling awan yang tidak boleh disia-siakan. Biarkan mesin menguruskan mesin, ini adalah postur penjimatan wang yang paling sahih dan elegan di era awan moden.

1
← 返回新闻中心