繼上一篇的Azure Container Service初體驗之後,就在想要如何去應用ACS(Azure Container Service的簡稱)的功能,有什麼場景是在對於系統開發或是企業應用方面有幫助的方案,突然,想到其中一個方式,就是建立開發測試的資料庫,在開發時期拿來使用,所以,用ACS建立一個臨時要用的資料庫來做測試用,或許也是一個不錯的選擇,其實,也是可以做為微服務中的資料庫區塊
不過,說這樣多,還是先在ACS中建立一個可外部連線的資料庫吧
ACS的Docker Swarm
如果要使用Docker Swarm模式,就必須先了解這張圖架構圖,這張圖是說明了ACS中的Docker Swarm架構,這是非常重要的,在這之中包含了Master
& Agent
,與網路結構
不過,有一點不解的是這張圖的Master
對應到的NAT
,但是實際上建置起來後,是對應到Load Balance
,也就是說是跟Agent
相同,在Agent的Load Balance
是80
,443
& 8080
的Port有被設定對外開放,如果今日你需要的服務對應的Port沒有被開啟,必須要在Loader Balance控制器做開起設定,就如等下做的SQL Server,必須要去開起1433
,不然,外部系統是無法連線的到內部Container,如果是在Master,所有Port預設都是沒有被開放,必須自己去做設定
輸入docker info
得到的資訊,如下
如果是想要知道Master的Docker Host資訊,輸入docker -H 172.16.0.5 info
就可以得知此Host的資訊,以及此Host對應的Agent IP
如前面所講的,因為是要安裝SQL Server,所以,需要再ACS的Loading Balance控制器設定對外與對內Mapping的Port
在狀態探查
地方加入SQL的1433 Port,通訊協定選擇TCP
再到負戴平衡
的地方,加入SQL的規則
設定內的內容會是下面這樣
以上設定完後,後續等安裝完SQL,就可以透過SSMS連線進去
安裝SQL Server for Linux
在Swarm
中,所具備的VM是屬於Linux作業系統,所以,用一般的SQL Server是無法安裝的,必須使用SQL Server for Linux,因此,必須先去Docker Store
下載,因為主要是在於開發使用,在SQL Server for Linux內的一些管理功能可能無法與一般的SQL Server一樣齊全,不過,這倒是影響不大
下載SQL Server for Linux
開始安裝SQL Server for Linux,預設登入帳號是SA
當安裝完畢後,輸入docker -H 172.16.0.5:2375 ps -a
就可以下面資訊,表示服務有起來了,其中,會看到Port的對應關係是10.0.0.5
,表示是位在Agent VM段
docker -H
-H, –host=[unix:///var/run/docker.sock]: tcp://[host:port]來綁定或者 unix://[/path/to/socket] 來使用。在 daemon 模式下綁定的 socket,透過一個或多個 tcp://host:port, unix:///path/to/socket, fd://*
這樣就安裝完畢,看是很簡單,當時要搞定這個,還花了不少時間,最常看到就是Port的資訊是空的,這表示SQL Server並未真正啟動,只是安裝好Container而已,還必須要透過docker run
啟動
SSMS連線
設定好Container後,就必須要能進行連線,這邊是透過外部方式連入到ACS內的Container,因為是使用SQL Server,那就用SSMS工具來進行測試吧,要測試前首先要知道ACS對外的FQDN或是IP位置,我們可以去公用IP位址
的服務找到Agent對外IP和Host Name
在資料庫伺服器位置,需輸入tcp:IP or tcp:hostname
,同時,輸入你剛剛安裝SQL Server的Password,如果Container正常啟動,這樣就可以連入進去了,這裡看到名稱剛好會是Container ID