2015年5月15日

Azure Logic App - 使用Twilio Connector傳送簡訊

在佈署服務到Azure上後,一個常常遇到的問題就是如果服務出了狀況,要怎麼收到及時的通知。目前Azure預設功能僅有提供email通知;但是收email有時還是會有遺漏的狀況,這時如果需要透過簡訊的話,只能透過開發程式完成。
現在,隨著Azure App Services加入了更多的Connector,只需要在Azure portal上拖拉就從指定的電子郵件信箱收信,然後將訊息發給指定的電話號碼了。
這樣的功能,在Azure上是透過Twilio Connector來達成;Twilio是一家提供簡訊、語音服務的公司;它們提供了完整的API給開發者透過REST API、C#、PHP…etc來呼叫他們的服務傳送簡訊或是語音訊息。並且,你也可以透過Twilio來取得一組國外的電話號碼。
  • 首先,登入Twilio網站註冊一個免費試用帳號:http://ahoy.twilio.com/azure
  • 註冊完成後,記得申請一組電話號碼並啟用SMS功能。
image
  • 記住Twilio的Account SID與Auth Token,稍後我們會用到。
image
image
  • 點開Trigger and Actions編輯視窗,加入POP3 Connector與Twilio Connector。其中,POP3 Connector試了要從我們指定的email收信,這裡應該會是我們的Account Live ID信箱。Twilio Connector則是要將信件內容透過Twilio API發送簡訊到我們的手機上
image
  • 畫面看起來應該是這樣子的
image
  • 在這裡把信箱的POP3登入資訊,以及剛剛Twilio的Account ID & Auth Token填入後。等待API App建立完成
  • 接著,編輯POP3 Connector的Get Email Trigger
image
  • 設定多久收一次信,這邊我設定每分鐘收一次;請注意,如果你的Web Plan是選擇Free Tier的話,可能沒有辦法用這麼短的時間間隔收信
image
  • 按下完成後,接著編輯Twilio Connector的Send Message Action
image
  • 在From Phone Number欄位,填上剛剛在Twilio取得的電話號碼;To Phone Number填上收信人的電話號碼
image
  • Text則是簡訊的內容,這裡選擇信件的Subject
image
  • 按下完成後,存檔
image
  • 等待Logic App建立完成,發一封信到剛剛指定的信箱,稍後一會,就可以收到簡訊了!由於是試用帳號,因此簡訊前面會有”Send from your Twilio trial account”的字樣。
image

2015年5月12日

[Azure]在Azure上建立mongodb Replica Set

在大部分的情況下,使用者可以透過mongoLab在Azure上提供的SaaS服務使用mongoDB;或是透過這個ARM Template自動佈署mongodb replica set:https://github.com/Azure/azure-quickstart-templates/tree/master/mongodb-high-availability

如果你使用的是China Azure,或是有其他特殊需求,還是可以在Azure VM上架設

mongodb本身的官方文件已經有說明如何透過Azure VM建立mongodb replica set,但是文件本身已經有點久了,實際依照上面的步驟進行時,發現有一些小地方還是需要研究一下;這一篇文章紀載了我在依照文件安裝的過程以及遇到的一些狀況及解決方式。

在開始之前,這次的目的是希望驗證是否可能在Azure上透過Cross-VNet將兩個不同資料中心串起來,並在不同資料中心設定Cross-Region的replicate set。mongodb確實建議這樣的佈署方式:http://www.mongodb.com/presentations/deploying-mongodb-high-availability 我們希望透過實作在Azure上佈署起來。

參考資料:

步驟

  • 首先在Azure上建立兩個VNet
    • mongodbVnet-EA
      • IP Range:172.16.1.0 ~ 172.16.1.255
      • 東亞資料中心
    • mongodbVnet-SEA
      • IP Range:172.16.2.0 ~ 172.16.2.255
      • 單南亞資料中心
  • 建立完成後,依照這裡的方式,將兩個VNet透過S2S Tunnel連線:https://msdn.microsoft.com/en-us/library/azure/dn690122.aspx
  • 完成之後,應該要看到以下的狀態

image

  • 接著,在mongodbVNet-EA中建立兩台機器
    • mongodb-ea-01:
      • CentOS 6.5
      • 172.16.1.4
      • Endpoint:Public 27018/Private 27018
    • mongodb-ea-02:
      • CentOS 6.5
      • 172.16.1.5
      • Endpoint:Public 27019/Private 27019
  • 在mongodbVNet-SEA中建立一台機器
    • mongodb-sea-01
      • CentOS 6.5
      • 172.16.2.4
      • Endpoint:Public 27020/Private 27020
  • 將mongodb-ea-01與mongodb-ea-02加入同一個Availability Set以確保99.95 SLA

image

  • SSH到mongodb-ea-01,執行sudo yun update更新所有package
  • 修改/etc/hosts檔案,新增以下紀錄
127.0.0.1 mongodb-ea-01
  • 重複以上動作在mongodb-ea-02與mongodb-sea-01
    • /etc/hosts檔案中的內容須更改為mongodb-ea-02或mongodb-sea-01
  • 接著,在mongodb-ea-01上,建立或修改/etc/yum.repos.d/mongodb.repo這個檔案,其內容如下:
[mongodb]
name=MongoDB
Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0
enabled=1
  • 執行以下指令安裝mongodb
sudo yum install mongo-10gen mongo-10gen-server
  • 等待安裝完成

image

  • 重複以上步驟在mongodb-ea-02與mongodb-sea-01上
  • 現在mongodb已經在三台機器上都安裝完成了,接著我們要設定mongodb replica set。此次佈署,我們會建置一台master與兩台slave
  • SSH到mongodb-ea-01
  • 修改/etc/mongod.conf檔案,修改以下的設定;其中:
    • dbpage與logpath為資料庫檔案與log檔案的位置,可以隨著實際上的路徑調整
    • replSet為這個replica set的名稱,可以視需要調整
    • port為此機器上的mongod所監聽的port

port = 27018
dbpath = /mnt/datadrive/data
logpath = /mnt/datadrive/mongod.log
replSet = mongors
bind_ip = 172.16.1.4

  • 存檔後,執行以下指令啟動mongodb:sudo mongod –-config /etc/mongod.conf
  • SSH到mongodb-ea-02
  • 修改/etc/mongod.conf檔案,修改以下的設定

port = 27018
dbpath = /mnt/datadrive/data
logpath = /mnt/datadrive/mongod.log
replSet = mongors
bind_ip = 172.16.1.5

  • 存檔後,執行以下指令啟動mongodb:sudo mongod –-config /etc/mongod.conf
  • SSH到mongodb-sea-01
  • 修改/etc/mongod.conf檔案,修改以下的設定

port = 27018
dbpath = /mnt/datadrive/data
logpath = /mnt/datadrive/mongod.log
replSet = mongors
bind_ip = 172.16.2.4

  • 存檔後,執行以下指令啟動mongodb:
sudo mongod –-config /etc/mongod.conf
  • 現在mongodb在三台機器上都已經啟動完成,接著我們要設定replica set,將mongodb-ea-02設為primary,其他兩台設為secondary
  • 以下的動作,只能在primary上執行
  • SSH到mongodb-ea-02
  • 執行以下的指令連線到mongodb console
mongo 172.16.1.5:27019
  • 在console輸入以下指令

conf = {
   _id : "mongors",
   members : [
     {_id:0, host:"172.16.1.5:27019"},
     {_id:1, host:"172.16.2.4:27020"},                                    {_id:2, host:"172.16.1.4:27018"}]}

image
  • 輸入rs.initiate(conf)初始化replica set
  • 接著可以透過rs.status()確認狀態

image

  • 試著新增一筆資料並查詢看看

image

  • 把mongodb-ea-02關機

image

  • 過一會,就會看到另一台機器成為primary了

image

About Me