+86 135 410 16684Mon. - Fri. 10:00-22:00

google cloud GCP – 防火牆規則設定

google cloud GCP – 防火牆規則設定

google cloud GCP – 防火牆規則設定

GCP的防火牆設定與AWS的 Security Group 類似,但又有些不同

首先你先開一個你需要的規則

設定名稱,給一個標記,這裡取名tmp

給要允許的iP,port

如下圖

%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7-2017-09-28-%E4%B8%8A%E5%8D%8811.27.29

然後去GCE,編輯你需要給這個規則的機器

貼上剛剛設定的標記

如下圖

%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7-2017-09-28-%E4%B8%8A%E5%8D%8811.27.57

這樣子就生效了

不過我還是覺得AWS的比較好用,因為GCP的話 SQL還要另外設定

AWS是全部都可以吃同一組規則,不論內外網,與全部的Service

GCP都要分開設,標記對標記的話,也只吃內網規則,不好用就是了

GCP – Cloud SQL 所謂的HA&MA

其實這篇算是發牢騷,一個簡單的抱怨

希望GCP能快點修改這種不成熟的HA

以往在AWS RDS上的HA機制是

當Master fail,背後的HA Server 會Switch上去

而GCP SQL 上的HA機制是

當Master fail,另一台HA Server 會跟你講149397168373560x6eebyS1u

不會觸發,是的你沒看錯,HA Server不會甩你

然後官方文件跟你說觸發條件是

Failover is triggered when the zone where the master is located experiences an outage. If your master instance is experiencing issues not caused by a zone outage, a failover is not initiated.

不想貼google翻譯的話,小弟幫各位翻譯

如果你的Master在A區,Failover在B區,要A區掰掰了才會觸發

如果是A區你的Master掛了,請自求多福,看著B區那台Failover在笑你…

 

好吧,這就是問題,目前GCP給的回覆是無解,但會排入更新時程

請有使用SQL的朋友多保重…

 

另一個MA問題是,如果你的Master設定為 假設週一07:00-08:00 維護

你開了Failover與readonly的時候,你會發現這三台的MA Time

全部被鎖定跟Master相同

翻成白話文的意思,就是MA Time一到,你的DB全部會被重啟

搭配上述的HA機制….你應該保佑你公司的服務不是7*24小時…

或是程式端最好寫好一點…

三經半夜設定MA Time的,自求多福吧

 

GCP – Stackdriver Logging 解決無法收集log問題

Stackdriver Logging的功能在Basic版本上也是可以使用的

但因為後來發現舊LOG檔案太大

中間停止收集

然後清空,再重新啟動時發現

LOG的收集停止了

 

這時去確認agent的設定檔

%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7-2017-09-01-%E4%B8%8B%E5%8D%882.40.27

找 pos_file的路徑

%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7-2017-09-01-%E4%B8%8B%E5%8D%882.43.15

vi 這個設定檔,會看到目前取得的資料值

把這一行清空,再將agent重啟

%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7-2017-09-01-%E4%B8%8B%E5%8D%882.44.52

LOG的收集就恢復正常了

本來以為是直接爬LOG連續的爬

沒想到還有存進度的值….

GCP – 費用計算機

在AWS上有很方便的計算成本工具

相對的在GCP也有這樣子的工具

https://cloud.google.com/products/calculator/

使用方式有點與AWS不同

但還是大同小異,有需要的可以使用一下計算成本

再評估是否要使用GCP喔

GCP – 使用Image開機自動替換Hostname

這個問題在AWS上遇過,但是AWS即使使用AMI啟動

也是會替換成IP開頭的hostname

而在GCP上則是會沿用上一次壓成的Image

例如我原本使用 web-01的hostname 壓成Image

在使用這個Image啟動後的server還會是web-01

造成做一個就要連線修改一次

 

這時拿出AWS的經驗,先找出如何呼叫instance的metadata

 

再使用腳本替換掉,寫了一隻shell
#!/bin/bash

name=`curl “http://metadata.google.internal/computeMetadata/v1/instance/name” -H “Metadata-Flavor: Google”`

hostnamectl set-hostname $name

systemctl restart rsyslog.service

再啟動instance時,在開機啟動碼中填入即可

如果有其他的指令需要開機啟動,可以寫成一隻boot.sh

在壓成image時放入,然後再啟動instance時

一樣使用開機啟動碼去執行

例如,開機替換hostname並拉取web 的設定檔等指令

 

%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7-2017-08-15-%E4%B8%8B%E5%8D%882.58.47

我寫完shell之後搭配變數使用,可以下 web 就拉取web設定檔

設定 ap 就拉取 ap設定檔等

減少手動部署時間

GCP – FW規則CLI指令

最近新工作都是使用GCP在環境的建置上

由於摸熟了AWS的規則,切換過來發現GCP的不同

為了快速的新增這些設定,CLI的指令就比較好用

然後一行一行塞又覺得很慢,所以寫偷懶的shell

在專案內啟用google cloud shell%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7-2017-08-15-%E4%B8%8B%E5%8D%881.57.26

會出現一個shell的視窗

%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7-2017-08-15-%E4%B8%8B%E5%8D%881.59.47

這時就可以執行CLI指令了,但一行一行下太麻煩

所以我用shell的方式執行

vi fw.sh

%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7-2017-08-15-%E4%B8%8B%E5%8D%882.02.09

塞了兩行,如果需要大量產生FW規則的話

就以此類推,例如

#!/bin/bash

a=123.123.123.123
b=111.111.0.0/16
c=111.222.111.111
d=222.222.222.222

 

#設定aIP可以連接
#gcloud compute firewall-rules create allow-proxy-to-b –allow tcp:8080,tcp:8443 –source-ranges=$a –target-tags=allow-a

#開放snmp給c監控
gcloud compute firewall-rules create allow-snmp –allow udp:161 –source-ranges=$c

#開放健康檢查使用
gcloud compute firewall-rules create allow-ha-check –allow all –source-ranges=$b

#開放公司內部IP
gcloud compute firewall-rules create allow-office –allow all –source-ranges=$d –target-tags=office

之後離開

chmod +x fw.sh

sh fw.sh

就可以快速塞FW規則進GCP專案了