2014-09-28 170 views
13

我有一個GCE實例,我已經定製並上傳了各種應用程序(例如在Apache下運行的PHP應用程序)。我現在想複製這個實例 - 即它的一切。 我原本以爲克隆可能會做到這一點,但我有一個玩弄它,它似乎只克隆實例配置,並沒有任何定製的。谷歌計算引擎 - 克隆實例

我一直在使用它,它看起來像我需要做的是創建一個圖像,並在新實例或克隆上使用此圖像? 這是正確的嗎? 如果是這樣,是否有任何步驟可以通過步驟來做到這一點? 我看了一下圖片上的Google頁面,它談到了必須終止實例才能做到這一點。我對此有點謹慎。也許這只是文檔中使用的語言,但我不想丟失現有的實例。

此外,將一切都存儲在圖像? 因此,舉例來說,以下所有內容都會在圖像上顯示出來嗎?

  • MySQL - config &數據庫模式& data?
  • 阿帕奇 - 所有在/var/www/html
  • PHP安裝的應用程序 - php.ini,等...
  • 所有其他的服務器CONFIGS /修改?
+0

相關:http://stackoverflow.com/q/31312085/322020 – Nakilon 2016-12-26 14:38:12

回答

15

您可以創建源實例的snapshot,然後創建一個新實例,將源快照選爲磁盤。它將非常快速地複製服務器。對於其他連接的磁盤,您必須創建一個新的磁盤並通過網絡複製文件(scp,rsync等)

+2

如果您的源實例具有作爲讀取/寫入的輔助磁盤連接和掛載,則需要在創建快照之後卸載它們(否則您將不能ssh進入新實例),然後創建一個新的磁盤克隆源磁盤並將它們掛載到目標系統上。 – 2016-07-14 09:11:45

+0

您是否可以不關閉實例,將輔助永久磁盤更改爲只讀然後拍攝快照。 – mobcdi 2016-07-18 20:21:36

+0

對服務器設置 – nafg 2017-06-14 18:27:52

0

如前所述,如果源實例連接了輔助磁盤,則不可能將ssh放入新的實例。 我不得不拍攝生產實例的快照,因此無法在不中斷的情況下卸載輔助磁盤。 我能夠通過從快照創建磁盤,在另一個實例上掛載磁盤,刪除對輔助磁盤的任何引用(即從/ etc/fstab刪除條目)來解決此問題。 一旦我這樣做了,我就可以在新實例中將該磁盤用作引導磁盤,並將其作爲ssh使用。

0

在Web控制檯,創建一個快照,然後單擊快照並在創建實例按鈕,你可以自定義設置,然後單擊它說:

等REST或命令行

並複製命令行,這將是您的模板。

這個,你可以創造出一個bash腳本(clone_instance.sh),我做了這樣的事情:現在

#!/bin/bash -e 

snapshot="my-snapshot-name" 
gcloud_account="[email protected]" 

#clone 10 machines 
for machine in 01 02 03 04 05 06 07 08 09 10 
do 

    gcloud compute --project "myProject" disks create "instance-${machine}" --size "220" --zone "us-east1-d" --source-snapshot "${snapshot}" --type "pd-standard" 

    gcloud compute --project "bizqualify" instances create "webscrape-${machine}" --zone "us-east1-d" --machine-type "n1-highmem-4" --network "default" --maintenance-policy "MIGRATE" --service-account "[email protected]" --scopes "https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring.write","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" --tags "http-server","https-server" --disk "name=webscrape-${machine},device-name=webscrape-${machine},mode=rw,boot=yes,auto-delete=yes" 

done 

,在你的終端,你可以執行你的腳本

sh clone_instance.sh 
0

如果你有其他磁盤連接,最好的辦法是不用卸載它們,而是改變它們在/ etc/fstab中的安裝路徑。

如果您在fstab中使用UUID並使用快照中的相同磁盤(它們具有相同的UUID),那麼您可以在不卸載任何內容的情況下進行克隆。

只要改變每個磁盤fstab中使用UUID這樣

UUID=[UUID_VALUE] [MNT_DIR] ext4 discard,defaults,[NOFAIL] 0 2 

你可以從

sudo blkid /dev/[DEVICE_ID] 

獲得UUID,如果你不確定你的DEVICE_ID可以使用

sudo lsblk 

以獲取系統使用的設備ID列表。

+0

沒有幫助,注意如果您希望系統甚至在沒有找到磁盤的情況下啓動系統,則應將[NOFAIL]替換爲「nofail」(無引號) – Trak 2017-09-19 05:02:59

0

您可以使用GCP導入VM選項將本機導回到項目中。