Docker+nginx+tomcat7配置簡單的負載均衡

本文介紹在Docker上配置簡單的負載均衡壹瘟,宿主機為CentOS和兩個CentOS容器其障,宿主機安裝Nginx达罗,兩臺容器安裝tomcat7。結構如下



此方案的原理是將宿主機的端口和docker容器的端口做一個映射(即訪問宿主機的某端口會映射到docker容器對應的端口)静秆,然后在宿主機通過配置Nginx,即可達到訪問宿主機的某端口巡李,按規(guī)則分配到指定的服務地址抚笔,即完成了負載均衡。

配置步驟

  1. 準備宿主機侨拦,宿主機是CentOS7殊橙,安裝在Vmware中,具體安裝方式不做贅述狱从。
  2. 在宿主機中安裝Nginx膨蛮,直接用如下命令即可。
$ yum -y install nginx

安裝完成后季研,可以查看Nginx是否安裝完成敞葛,可以用如下命令查看版本,打印出Nginx版本与涡,則說明安裝成功惹谐。

$ nginx -v
nginx version: nginx/1.10.2

之后,可以用如下命令啟動Nginx服務:

#啟動服務
$ service nginx start
#查看服務狀態(tài)
$ service nginx status
Active: active (running)    #說明服務是啟動狀態(tài)

在瀏覽器中訪問 http://宿主機的IP ,顯示結果如下:


  1. 下載Docker鏡像驼卖,用docker pull命令即可氨肌,具體鏡像操作可參看這片文章
  2. 啟動一個容器并設置端口映射,其中一臺命令如下:
$ docker run -t -i -p 3222:22 -p 3280:80 centos /bin/bash

上面的命令是以標準的bash輸出方式啟動一個容器酌畜,設置端口映射怎囚,用-p參數,-p 宿主機端口:docker容器端口 桥胞,上面的命令是設置宿主機的3222端口映射到容器的22端口恳守,設置宿主機的3280的端口映射到容器的80端口。

# 安裝wget命令
$ yum -y install wget
  1. 在容器中安裝jre和tomcat7.0埠戳,安裝jre
$ wget -O jre-7u6-linux-x64.rpm http://javadl.sun.com/webapps/download/AutoDL?BundleId=67387
$ yum install jre-7u6-linux-x64.rpm

查看jre是否安裝成功

$ java -version
java version "1.7.0_06"

安裝tomcat7.0

$ wget http://apache.fayea.com/tomcat/tomcat-7/v7.0.73/bin/apache-tomcat-7.0.73.tar.gz
$ tar -zxvf  apache-tomcat-7.0.73.tar.gz

啟動tomcat,進入解壓目錄井誉,cd到bin目錄,執(zhí)行命令并輸入如下信息整胃,說明tomcat啟動成功

$ bash startup.sh
Using CATALINA_BASE:   /home/apache-tomcat-7.0.73
Using CATALINA_HOME:   /home/apache-tomcat-7.0.73
Using CATALINA_TMPDIR: /home/apache-tomcat-7.0.73/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /home/apache-tomcat-7.0.73/bin/bootstrap.jar:/home/apache-tomcat-7.0.73/bin/tomcat-juli.jar
Tomcat started.

由于tomcat默認端口是8080颗圣,這里設置的是80端口,所以,需要修改默認端口到80在岂,進入tomcat安裝目錄的conf目錄奔则,用vi打開server.xml文件,將如下配置

<Connector port="8080" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443" />

修改為

<Connector port="80" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443" />

之后蔽午,在這臺docker容器中易茬,訪問 http://localhost:80 ,可以訪問到tomcat主頁,說明tomcat安裝并配置成功及老。

如果要在docker中訪問http請求抽莱,可以安裝links
Links瀏覽器命令行,是一個帶有ncurse界面的文本模式WEB瀏覽器骄恶,支持彩色食铐,table渲染和后臺下載,且包括菜單界面的瀏覽器僧鲁,支持 Frame框架虐呻。我們可以通過外部的訪問器來進行不同文件格式的瀏覽。支持通過外部客戶端使用mailto:和telnet:進行瀏覽寞秃。

1斟叼、安裝
apt--get install links (debian系統(tǒng)版本)
yum install links (centos系統(tǒng)版本)
2、使用
links links http://localhost:80
  1. 進入tomcat的webapps/ROOT目錄中春寿,由于這個容器的ip為172.17.0.2朗涩,創(chuàng)建一個hello.html文件,在文件中寫上如下內容“hello this is 172.17.0.2”堂淡,然后在宿主機訪問http://172.17.0.2/hello.html

  2. 同上面的步驟一致馋缅,配置另外一臺容器,只是容器啟動時設置的映射端口有所區(qū)別绢淀,命令如下:

$ docker run -t -i -p 3322:22 -p 3380:80 87e5b6b3ccc1 /bin/bash

最后在這臺容器tomcat安裝目錄的webapps/ROOT目錄下創(chuàng)建hello.html文件萤悴,因為這臺容器的ip為172.17.0.3,所以hello.html文件中填入的內容為“hello this is 170.17.0.3”皆的,之后在宿主機訪問http://172.17.0.3/hello.html

  1. 容器配置完成后覆履,剩下的工作就是配置宿主機的Nginx,用來完成負載均衡工作。
    進入/etc/nginx费薄,用vim編輯nginx.conf硝全,注釋掉如下內容:
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

然后創(chuàng)建自己的nginx.conf,進入/etc/nginx/conf.d目錄楞抡,用vim編輯nginx.conf伟众,增加如下內容:

upstream blance {
    server localhost:3280 weight=5;
    server localhost:3380 weight=5;
}
server {
    listen 80;
    server_name localhost;
    location / {
    error_log logs/nginx_error.log error;
        proxy_pass http://blance;
    }
}

首先定義一個upstream,設置web服務器的端口映射和權重,之后定義一個server,監(jiān)聽80端口召廷,server_name為訴諸本機凳厢,這是宿主機的ip地址(可配置成域名)账胧,“l(fā)ocation /” 意思是監(jiān)聽80端口下的所有請求,并使用上面設置的upstream作為代理先紫。

  1. 完成以上配置并保存后治泥,重啟nginx(只要修改了配置都要reload)
# 啟動nginx
$ /usr/sbin/nginx
# reload nginx
$ /usr/sbin/nginx -s reload
# 查看進程
$ ps -ef | grep nginx
  1. 如果要關閉nginx,直接可以kill掉進程
$ ps -ef | grep nginx | awk '{print $2}' | xargs kill
  1. 在瀏覽器中訪問http://宿主機ip/hello.html 遮精,并刷新頁面居夹,會發(fā)現(xiàn)頁面有時顯示“hello this is 172.17.0.3”,有時顯示“hello this is 172.17.0.2”本冲,說明配置成功准脂,這樣就完成了一個簡單的負載均衡環(huán)境的配置。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末檬洞,一起剝皮案震驚了整個濱河市意狠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疮胖,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闷板,死亡現(xiàn)場離奇詭異澎灸,居然都是意外死亡,警方通過查閱死者的電腦和手機遮晚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門性昭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人县遣,你說我怎么就攤上這事糜颠。” “怎么了萧求?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵其兴,是天一觀的道長。 經常有香客問我夸政,道長元旬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任守问,我火速辦了婚禮匀归,結果婚禮上,老公的妹妹穿的比我還像新娘耗帕。我一直安慰自己穆端,他們只是感情好,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布仿便。 她就那樣靜靜地躺著体啰,像睡著了一般攒巍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上狡赐,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天窑业,我揣著相機與錄音,去河邊找鬼枕屉。 笑死常柄,一個胖子當著我的面吹牛,可吹牛的內容都是我干的搀擂。 我是一名探鬼主播西潘,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哨颂!你這毒婦竟也來了喷市?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤威恼,失蹤者是張志新(化名)和其女友劉穎品姓,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體箫措,經...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡腹备,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了斤蔓。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片植酥。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖弦牡,靈堂內的尸體忽然破棺而出友驮,到底是詐尸還是另有隱情,我是刑警寧澤驾锰,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布卸留,位于F島的核電站,受9級特大地震影響椭豫,放射性物質發(fā)生泄漏艾猜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一捻悯、第九天 我趴在偏房一處隱蔽的房頂上張望匆赃。 院中可真熱鬧,春花似錦今缚、人聲如沸算柳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瞬项。三九已至蔗蹋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間囱淋,已是汗流浹背猪杭。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留妥衣,地道東北人皂吮。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像税手,于是被迫代替她去往敵國和親蜂筹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理芦倒,服務發(fā)現(xiàn)艺挪,斷路器,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件兵扬?Google Compute Engi...
    ahohoho閱讀 15,511評論 15 147
  • Docker從2013年發(fā)布第一個版本以來麻裳,已經火遍全球,技術迭代也比較頻繁器钟,其周邊產品和技術也越來越豐富掂器。Doc...
    歸海聽雪閱讀 12,267評論 7 44
  • 轉載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,476評論 0 120
  • 小時候寫作文的時候只會形容父愛如山俱箱,即便不能理解,也要硬湊上一筆灭必,小時候爸爸在我眼里從來不是愛如山狞谱,只有面對面時的...
    禮禮閱讀 441評論 0 2