# Goole Cloud Platform 雲端開發應用超入門 ###### tags: `GCP` [出處:Goole Cloud Platform 雲端開發應用超入門](https://www.books.com.tw/products/0010841312) ## 建立VM執行個體  * 標籤:可將具有相同屬性與功能的執行個體群組化   網路設定  * 子網路:其他子網路內的執行個體若屬同一網路則可透過內部IP通訊 * 內部IP:執行個體私有IP位址 * 外部IP:執行個體公開IP位址, 若設定臨時自動配置, 臨時IP當執行個體停止或重新啟動時就會變動 ## Python執行環境建構 1. 進入執行個體  即可對虛擬機器執行個體的Guest OS進行操作 2. 首先先更新Guest OS內的管理套件  > 管理套件系統 > * YUM( Yellowdog Updater, Modified ):Red Hat系列發行版使用 > * APT( Advanced Packaging Tools ):Debian系列發行版使用 3. python套件安裝 ``` sudo apt-get -y install git python-pip \ python-dev python-flask python-wtforms \ python-arrow python-flask-sqlalchemy \ python-pymysql python-flaskext.wtf vim ``` 4. API客戶端函式庫的安裝 ``` sudo pip install --upgrade setuptools sudo pip install --upgrade gcloud ``` ## 應用程式v1 1. 應用程式(app_v1)的部署 ``` $ git clone https://github.com/christinekao88/gcp-compute-engine $ cd gcp-compute-engine $ sudo app_v1/install.sh ``` 2. 應用程式的啟動 ``` $ sudo systemctl enable dengonban.service $ sudo systemctl start dengonban.service $ sudo systemctl status dengonban.service ``` 點選外部IP即能進入佈告欄 ## Cloud SQL 資料管理 1. 建立Cloud SQL執行個體  2. 開啟Cloud SQL API/Cloud SQL Admin API  &  ## 資料庫建立 1. 開啟Cloud Shell連線(存取Cloud SQL執行個體)  2. 存取Cloud SQL  3. 建立資料庫  4. 建立db使用者並設定存取權限  建立使用者appuser , 密碼pas4appuser ## 部署應用程式v2  ## 安裝Cloud SQL Proxy 1. SSH進入VM 2. 下載Cloud SQL Proxy ``` $ cd gcp-compute-engine/ $ wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy ``` * 指定下載檔案儲存在硬碟中的檔名,可以使用 `-O` 參數 3. 設定變更Cloud SQL Proxy ``` $ chmod +x cloud_sql_proxy $ sudo mkdir /opt/cloudsqlproxy $ sudo mv cloud_sql_proxy /opt/cloudsqlproxy/ ``` 4. 建立資料夾儲存Cloud SQL Proxy使用的UNIX Socket ``` $ sudo mkdir /cloudsql $ sudo chmod 777 /cloudsql ``` 5. 修改範例程式(v2) ``` $ vi app_v2/app.py ```  ``` $ vi app_v2/cloudsqlproxy.service ```  5. 停止app_v1 ``` $ sudo systemctl stop dengonban.service ``` 6. 執行app_v2 ``` $ cd gcp-compute-engine/ $ sudo app_v2/install.sh $ sudo systemctl enable cloudsqlproxy.service $ sudo systemctl start cloudsqlproxy.service $ sudo systemctl start dengonban.service $ sudo systemctl status dengonban.service ``` ## Cloud Storage 圖片資料儲存 1. 建立Cloud Storage的Bucket  2. 編輯Bucket權限  3. 新增成員   4. 修改應用程式(v3) ``` $ vi app_v3/app.py ```  ``` $ vi app_v3/cloudsqlproxy.service ``` 5. 執行app_v3 ``` $ sudo systemctl stop dengonban.service $ sudo systemctl stop cloudsqlproxy.service $ sudo app_v3/install.sh $ sudo systemctl start cloudsqlproxy.service $ sudo systemctl start dengonban.service $ sudo systemctl status dengonban.service ``` # IP位址 * 有兩種規格: * IPv4 * IPv6 * 構成網路的機器(Network Interface Controller)被稱之為**節點** * IP位址為節點的識別編號 ## IPv4 使用二進位32的位元表示位址,用8位元一組拆分並轉換為10進位數字  又可分為 * Network ID * HOST ID  兩種表示法 * 子網路遮罩  * CIDR   ## 通訊協定 目的:通訊的雙方如何互相了解  [码农半亩地](https://gaomf.cn/2015/11/23/OSI模型总结/) ## 防火牆 可限制節點間互相通訊 * 封包過濾型:對流過的封包的埠號和IP位址進行篩選 * 存取控制清單(ACL):管理封包過濾規則清單 * 只讓80(http)或443(https)的封包通過 * 除特定網路封包外,其他全部丟棄 ## 路由器 連接兩個以上不同的子網路以傳遞封包的網路設備,提供判斷資料傳送路徑選擇的功能 * 靜態路由:路由表上預先設定的 * 動態路由:透過路由間訊息交換決定路徑 ## DNS 實際通訊時,每個IP對應到一個容易記憶的名稱,該名稱由通訊目的的主機設定,以主機名稱與網域名稱組合而成 Cloud DNS:DNS的託管服務 ## 實體網路  * 網路結構自由度很低,維護陳本很大 ## 虛擬網路(覆蓋網路) 為了在雲端環境對不同使用者提供獨立的網路環境,為邏輯網路環境的實作技術, 覆蓋於實體網路之上,在實體網路上以軟體的方式模擬網路,可自由調整結構 # GCP網路機制 ## GCP網路結構 * Subnet Network架構:每個地區各自成一個獨立網路架構  * Legacy Network (非子網路)架構:跨越全球所有地區的私有網路  ## Global IP (External IP) GCP中提供給網際網路存取,每個地區會保留並分配給執行個體,又可以分為 * Ephemeral:執行個體啟動時會自動分配,因此實體有停止/啟動操作可能會造成IP位址變動 * Static:會保留所分配的IP位址 ## GCP防火牆功能 用以控制虛擬機器執行個體通訊的安全機制,可將之加到準備好的網路 預設會擋掉所有來自網路外部的通訊封包 ## Cloud Load Balancing負載平衡功能 * HTTP(S)負載平衡:將存取分散至數個地區的數個後端執行個體,用於應對大量的存取流量 * TCP/UDP負載平衡:分散GCE同一地區內TCP/UDP協定的流量,不可跨區做負載平衡 # 製作虛擬機器開機映像檔 可快速建立數個相同的執行個體 1. 建立快照  2. 建立磁碟  3. 製作映像檔  4. 自動建立多個執行個體 * 建立執行個體範本  針對各個API設定存取權 * 啟用cloud SQL * 儲存空間為讀寫 勾選允許HTTP流量 5. 建立執行個體群組   # 建立負載平衡 1. 建立負載平衡   2. 後端設定    3. 健康狀態檢查  4. 主機與路徑規則  5. 前端設定  6. 確認運作:用瀏覽器存取ip  # 利用Cloud DNS管理網域名稱 利用Cloud DNS將前面建立負載平衡器所得到的IP位址轉換成獨立的網域名稱 ex: 把 35.198.224.184 -> www.asa.yokohama 1. 存取網域名稱 * 要先申請一個網域名稱[freenom](https://www.freenom.com/zu/index.html?lang=zu)->christinekao.ml 2. 建立 DNS 區域 建立一個kao-zone區域管理christinekao.ml網域   * NS紀錄是網域的名稱伺服器 * SOA紀錄是一份基本資訊的記錄表,用以決定DNS伺服器如何運作 3. 新增紀錄集 用以連接DNS伺服器和IP地址和主機名稱 * 建立A紀錄  * 在建立一個反向解析的PTR紀錄  4. 服務機構設定紀錄 * go to freenom -> manage domain  * 選擇nameservers  * 把cloud DNS上註冊的網域DNS伺服器資訊設定到服務機構的名稱伺服器上  5. 操作確認 可以從瀏覽器存取http://christinekao.ml 6. 從IAM的管理資源->可以刪除專案 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up