上一篇文章中我們將host container所需要的環境建置完成,並且也設定了container image;接著我們要將tomcat網站與mySQL連接起來,並且設定Load balancer來Load balance tomcat網站的流量。
Load Balance的部分,一開始我們會透過Azure本身的Load Balance Set來達成。由於tomcat預設使用8080 port,因此在Load Balance Set的設定上,我們會把Public 80 port對應到Privte 80 port;然後透過docker本身,將host的80 port與container的8080做mapping。
設定LBSet
- 登入http://manage.windowsazure.com
- 打開虛擬機器 –> dockerweb1 –> Endpoints
- 新增一個Load Balanced端點,設定Public Port為80,Private Port為80
- 切換到dockerweb2的端點設定,新增一個端點並加入剛剛建立的LBSet中
設定Tomcat應用程式
- SSH到dockerweb1
- 建立一個新的folder /home/azureuser/webapps;稍後我們會將這個folder與tomcat container中的webapps目錄作對應,如此一來,當我們在host修改這個目錄下的檔案,也會直接反映在container中的相對應的folder中。可以把這個方式想像成是在container裡面設定一個map folder到host中,方便管理。
- 透過以下的指令執行tomcat container(這邊叫做michilab);其中:
- -v用來指定folder對應;
- -p用來指定將host的80 port對應到container的8080 port;
- -d表示這個container將以背景模式執行
sudo docker run -p 80:8080 -d -v /home/azureuser/webapps/:/tmp/apache-tomcat-7.0.59/webapps michilab /bin/sh /tmp/apache-tomcat-7.0.59/bin/catalina.sh run
- 接著,把我的測試用tomcat程式下載到host上的/home/azureuser/webapps中,並確定已經修改web.xml中的連線資訊指向mySQL Server;其中10.32.0.4:3306是dockermysql1的IP及host port
- 在dockerweb2執行上述指令
設定mySQL
mySQL預設使用3306 port,這裡我會將host 3306與container 3306做對應;因此tomcat可以透過host IP:3306來與mySQL溝通
- ssh到mySQL host將測試用的資料庫以及資料建置完成
- 透過以下指令加入一個新的使用者,並允許遠端連線
INSERT INTO user(host,user,password) VALUES('%','apuser',password('mypassword'));
GRANT ALL ON *.* TO 'apuser'@'%' identified by 'mypassword'';
FLUSH PRIVILEGES;
- 離開container並commit以上的改變,然後執行以下的命令啟動mySQL container
- Sudo docker run -t –i –p 3306:3306 michilab bash
- 在container中執行以下指令啟動mySQL service
- service mysqld start
如此以來所有的準備都完成了,接著打開瀏覽器瀏覽Cloud Service的網址,應該就可以看到結果了。
在這個Lab中,我們為了簡單,在每一個host上只啟動一個container;這樣的好處是可以直接利用Azure LBSet來做Load balance;後續我們會透過HAProxy建置一個簡單的proxy,來load balance多個container在一個host上的情況。
沒有留言:
張貼留言