Tomcat集羣由多個tomcat組成,使用Nginx的好處是可以實現負載均衡和動靜分離。
使用Docker的好處是~~~我們不需要複雜的配置,只需要執行簡單的命令就能拉取已有的官方docker鏡像,再通過一條命令就能運行我們的實例了。對於多個Tomcat,我們使用相同的鏡像,然後使用簡單的命令,就能創建不同的tomcat container實例。
1.拉去鏡像
$ docker pull tomcat:8-jre8-alpine
$ docker pull nginx:latest
$ docker images
2.創建tomcat文件夾和webapps的交換文件夾,並創建container
$ docker run --name tomcat1 -p 18080:8080 -v $PWD/webapps:/usr/local/tomcat/webapps -d tomcat:8-jre8-alpine
# cc8d9b8bc8a90d0768df15f94ae2cb37694021cf637d0610d10eaee669b0d5bad
$ docker run --name tomcat2 -p 28080:8080 -v $PWD/webapps:/usr/local/tomcat/webapps -d tomcat:8-jre8-alpine
# 711e6a6fd1a3f6d088b8b6f527b9c558114bdd5e1592b03a18cb3abaaaf08815
創建nginx文件夾。
$ docker run --name tmp-nginx-container -d nginx
$ docker cp tmp-nginx-container:/etc/nginx/nginx $PWD/conf
$ docker cp mynginx:/usr/share/nginx/html $PWD/html
$ docker cp mynginx:/var/log/nginx $PWD/logs
$ docker rm -f tmp-nginx-container
運行nginx
$ docker run -p 80:80 -p 8080:8080 --name mynginx -v $PWD/html:/usr/share/nginx/html -v $PWD/conf:/etc/nginx -v $PWD/logs:/var/log/nginx -d nginx
-p 18080:8080:將容器的8080端口映射到主機的18080端口
-v 掛載目錄
具體參數命令可自行google,都是些簡單的常用命令。
$ docker container ls
- 將自己的項目放入本地的webapps目錄下
爲了便於區分工程,我的項目主頁獲取了本地的IP和端口,分別使用18080和28080訪問test項目,可以得到如下圖所示信息。
4.設置Nginx配置文件
chrome訪問服務器80端口,顯示如下:
Nginx的配置文件是nginx.conf,打開文件夾,發現裏邊並沒有配置端口等信息,而是有一段:include /etc/nginx/conf.d/*.conf;
這是將conf.d目錄下的所有配置文件全部加入進來。其中這個歡迎頁面的設置就是在其目錄下的一個名叫default.conf的文件中設置的。
模仿此文件,我們創建自己的tomcat.conf。
然後自己配置信息相關信息。 - 測試
輸入nginx地址和tomcat server 8080端口.
多次輸入我們可以發現我們對應的tomcat地址會發生變化,這就是訪問到了不同的tomcat。
6.後期擴展
我們可以修改不同的均衡策略,比如修改weight值,和設置備份服務器等方式來實現不同的功能。
除了負載均衡,我們還可以進行將靜態文件和動態文件進行分離,這也是Nginx的重要功能之一。