Docker+Nginx+tomcat模擬tomcat集群負(fù)載均衡

啟動docker服務(wù)斗忌,拉取tomcat觉啊,nginx鏡像

本文是基于 win10 環(huán)境進(jìn)行集成,至于怎么在win10環(huán)境上體驗docker,可自行百度鲫骗,本文不在闡述犬耻。

安裝好docker服務(wù)之后,啟動docker服務(wù)执泰,運(yùn)行如下命令枕磁,拉取tomcat,nginx鏡像:

docker pull hub.c.163.com/library/tomcat:latest

docker pull hub.c.163.com/library/nginx:latest

鏡像拉取成功之后术吝,運(yùn)行 docker images命令查看拉取的鏡像:

λ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

redis latest c5355f8853e4 4 weeks ago 107MB

hub.c.163.com/library/ubuntu latest ccc7a11d65b1 8 months ago 120MB

hub.c.163.com/library/tomcat latest 72d2be374029 8 months ago 292MB

hub.c.163.com/library/nginx latest 46102226f2fd 12 months ago 109MB

啟動tomcat容器计济,掛載本地目錄

docker run -it -p 58080:8080 -v E:local_data:/data --name tomcat_02 hub.c.163.com/library/tomcat /bin/bash

運(yùn)行上述命令,啟動容器排苍,將宿主機(jī)的 E:local_data 掛載到容器的 /data 目錄下沦寂。將打包好的war包放在 E:local_data目錄下,使用如下命令將war包復(fù)制到 tomcat 的 webapps 下淘衙,并啟動tomcat传藏。

cp /data/nginx_tomcat-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/sh /usr/local/tomcat/bin/startup.sh

重復(fù)上述操作,連續(xù)啟動三個tomcat容器彤守,如下所示:

λ docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

175d6f2be242 hub.c.163.com/library/tomcat "/bin/bash" 7 hours ago Up 7 hours 0.0.0.0:48080->8080/tcp tomcat_03

11d5b4487c66 hub.c.163.com/library/tomcat "/bin/bash" 7 hours ago Up 7 hours 0.0.0.0:38080->8080/tcp tomcat_02

c77cd2b2a6e9 hub.c.163.com/library/tomcat "/bin/bash" 7 hours ago Up 7 hours 0.0.0.0:58080->8080/tcp tomcat_01

啟動nginx并配置

docker run -p 80:80 --privileged=true -v E:my_nginxconfig ginx.conf:/etc/nginx/nginx.conf --name mynginx hub.c.163.com/library/nginx

將nginx的80端口映射到宿主機(jī)的80端口毯侦,將宿主機(jī)的 E:my_nginxconfig ginx.conf 目錄掛載到容器的 /etc/nginx/nginx.conf 目錄下,用自定義 nginx.conf配置文件覆蓋默認(rèn)配置文件具垫。

配置文件如下所示:

user nginx;

worker_processes 1;

error_log /var/log/nginx/error.log warn;

pid /var/run/nginx.pid;

events {

worker_connections 1024;

}

http {

server {

listen 80;

location / {

proxy_pass http://blance;

}

}

upstream blance{

server 172.17.0.2:8080;

server 172.17.0.3:8080;

server 172.17.0.4:8080;

}

include /etc/nginx/mime.types;

default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;

#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

include /etc/nginx/conf.d/*.conf;

}

其中侈离,以下為在默認(rèn)配置內(nèi)容中新增的內(nèi)容

server {

listen 80;

location / {

proxy_pass http://blance;

}

}

upstream blance{

server 172.17.0.2:8080;

server 172.17.0.3:8080;

server 172.17.0.4:8080;

}

運(yùn)行啟動命令,啟動nginx容器做修。

查看所有啟動容器霍狰,測試是否均衡負(fù)載

運(yùn)行 docker ps 命令查看所有正在運(yùn)行的容器:

λ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

b0d477164bed hub.c.163.com/library/nginx "nginx -g 'daemon of…" 35 minutes ago Up 35 minutes 0.0.0.0:80->80/tcp mynginx

175d6f2be242 hub.c.163.com/library/tomcat "/bin/bash" 7 hours ago Up 7 hours 0.0.0.0:48080->8080/tcp tomcat_03

11d5b4487c66 hub.c.163.com/library/tomcat "/bin/bash" 7 hours ago Up 7 hours 0.0.0.0:38080->8080/tcp tomcat_02

c77cd2b2a6e9 hub.c.163.com/library/tomcat "/bin/bash" 7 hours ago Up 7 hours 0.0.0.0:58080->8080/tcp tomcat_01

瀏覽器訪問 127.0.0.1:80 ,進(jìn)入tomcat 歡迎頁面饰及。

多次訪問 127.0.0.1/nginx_tomcat-0.0.1-SNAPSHOT/test/loadBalancing 鏈接蔗坯,會打印請求到的服務(wù)的ip及端口,

java代碼如下:

/**

  • Created by Haiyoung on 2018/5/1.

*/@RestController@RequestMapping( value = "/test")public class LoadBalancing {

@RequestMapping( value = "/loadBalancing")

public String loadBalancingTest(HttpServletRequest request) throws UnknownHostException {

String ip = java.net.InetAddress.getLocalHost().getHostAddress();

int post = request.getLocalPort();

System.out.println(ip + ":" + post);

return ip + ":" + post;

}}

請求結(jié)果如下所示:

172.17.0.2:8080

172.17.0.3:8080

172.17.0.4:8080

172.17.0.2:8080

172.17.0.3:8080

172.17.0.4:8080

172.17.0.2:8080

可見燎含,nginx實現(xiàn)了對請求的負(fù)載均衡宾濒。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市屏箍,隨后出現(xiàn)的幾起案子绘梦,更是在濱河造成了極大的恐慌,老刑警劉巖赴魁,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卸奉,死亡現(xiàn)場離奇詭異,居然都是意外死亡颖御,警方通過查閱死者的電腦和手機(jī)榄棵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來潘拱,“玉大人疹鳄,你說我怎么就攤上這事÷瘢” “怎么了瘪弓?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長禽最。 經(jīng)常有香客問我腺怯,道長,這世上最難降的妖魔是什么川无? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任瓢喉,我火速辦了婚禮,結(jié)果婚禮上舀透,老公的妹妹穿的比我還像新娘栓票。我一直安慰自己,他們只是感情好愕够,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布走贪。 她就那樣靜靜地躺著,像睡著了一般惑芭。 火紅的嫁衣襯著肌膚如雪坠狡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天遂跟,我揣著相機(jī)與錄音逃沿,去河邊找鬼婴渡。 笑死,一個胖子當(dāng)著我的面吹牛凯亮,可吹牛的內(nèi)容都是我干的边臼。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼假消,長吁一口氣:“原來是場噩夢啊……” “哼柠并!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起富拗,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤臼予,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后啃沪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粘拾,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年创千,在試婚紗的時候發(fā)現(xiàn)自己被綠了半哟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡签餐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出氯檐,到底是詐尸還是另有隱情戒良,我是刑警寧澤冠摄,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站河泳,受9級特大地震影響沃呢,放射性物質(zhì)發(fā)生泄漏拆挥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一纸兔、第九天 我趴在偏房一處隱蔽的房頂上張望惰瓜。 院中可真熱鬧汉矿,春花似錦崎坊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽曲尸。三九已至,卻和暖如春男翰,著一層夾襖步出監(jiān)牢的瞬間另患,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工奏篙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人迫淹。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓秘通,卻偏偏與公主長得像,于是被迫代替她去往敵國和親敛熬。 傳聞我的和親對象是個殘疾皇子肺稀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評論 2 349

推薦閱讀更多精彩內(nèi)容