Docker 部署nginx+tomcat 負載冗餘

實驗架構

90ffd15de5f74bbfab872f72aa87cdd6

docker前期配置,設置repo

yum install -y yum-utils \

device-mapper-persistent-data \

lvm2

yum-config-manager \

--add-repo \

https://download.docker.com/linux/centos/docker-ce.repo

安裝docker

yum install -y docker-ce

51bb16bec3614b8dbf624740e80ea8f2

yum list docker-ce --showduplicates | sort -r

0aa8385d9bd6467889006efb349f086e

自動啓動

systemctl start docker

systemctl enable docker

docker安裝驗證

docker run hello-world

d7cb79f3facf4378ad6f1236e0f4dce2

下3個鏡像,都用官網的好了

docker search nginx

docker pull nginx

b02d73e4b24645e98e6e59bc2d2fda5d

docker search tomcat

docker pull tomcat

b8fa96f717204b0d83ccc9cf64a10775

docker search centos

docker pull centos

bdd27506d796455cb7df05f67bf20e0e

同步下時間,每隔12小時自動同步一次

yum install -y ntpdate

ntpdate 0.asia.pool.ntp.org

crontab -e

* * */12 * * ntpdate 0.asia.pool.ntp.org

crontab -l

b73ea2372a2541a6a2329208753ba97a

看看本地鏡像

docker images

08b163eff39344e1aea08a991d1ba67f

更新下網絡配置避免包轉發出錯

echo "net.ipv4.ip_forward=1" >>/usr/lib/sysctl.d/00-system.conf

systemctl restart network

關閉selinux

setenforce 0

sed -i '/^SELINUX=/cSELINUX=disabled' /etc/sysconfig/selinux

docker run -d -p 8080:80 --name nginxdemo nginx #以nginx鏡像啓動容器

#參數說明 -d 以後臺進程運行 -p 本地端口:容器端口 (端口映射) --name 容器名稱

docker ps #顯示當前運行的容器

5361d7dc44894c76b2d6aad55e53d77c

c625eb79c850427abb9333b02c338c38

宿主機器192.168.10.131 端口8080轉發到docker中80中,看起來docker 和nginx鏡像都沒問題

7b05eb7af1e940f08effb69eae7b83c3

清除剛剛的demo

docker stop nginxdemo

docker rm nginxdemo

docker ps

b1e6f3e5305142b5b4c292a8e1c2a5fb

正式做nginx,tag自己的版本然後啓動下

docker tag be1f31be9a87 nginx:v1

docker images

05369d962e3c411889dc47c978c6a061

docker run -ti -d -p 80:80 nginx:v1 /bin/bash

docker ps

8825b89143e24f879252718f6273e80d

這nginx鏡像裏面沒有vim,改不了配置,我先更新下,下一個vim,5k/s好速度,我先安裝tomcat了

docker exec -ti 14efbc894d74 /bin/bash

/usr/sbin/nginx

apt-get update

apt-get install vim

運行下tomcat

docker run -ti -d -h tomcat1 -v /usr/www1:/usr/local/tomcat/webapps/www -p 8081:8080 tomcat

docker run -ti -d -h tomcat2 -v /usr/www2:/usr/local/tomcat/webapps/www -p 8082:8080 tomcat

8081 8082 都轉發到了8080的tomcat上

c90af84366c243ecba6fa2a93a141ecd

宿主機器創建2個目錄和文件

mkdir -pv /usr/www2 /usr/www1

echo "Tomcat 1 html file on /usr/www1">/usr/www1/index.html

echo "Tomcat 2 html file on /usr/www2">/usr/www2/index.html

7c8c6dabda774886a228234965b820ed

重新運行下tomcat容器

docker run -ti -d -P -h tomcat99 -v /usr/www1:/usr/local/tomcat/webapps/ROOT tomcat /bin/bash

docker run -ti -d -P -h tomcat88 -v /usr/www2:/usr/local/tomcat/webapps/ROOT tomcat /bin/bash

docker exec -ti 5c10be46c807 /bin/bash

bin/startup.sh

docker exec -ti 54d5f9f370c2 /bin/bash

bin/startup.sh

32768 32769端口都映射到了宿主機器的目錄,因爲了-P,所以是隨機端口

742ca88bc16144a587cffc865f218f7e

d94f9ac8f419410ea52e73f46936d602

248e80feb2a84357ad4dd65b2a58ff0e

繼續nginx那個鏡像,運行下更新下nginx

docker tag be1f31be9a87 nginx:v0

docker images

docker run -ti -d -p 80:80 nginx:v0 /bin/bash

docker exec -ti a62119e032b3 /bin/bash

/usr/sbin/nginx

apt-get update

apt-get install vim

更新下nginx配置

vim /etc/nginx/nginx.conf

upstream 127.0.0.1 {

server 192.168.10.131:32768;

server 192.168.10.131:32769;

}

8be26ee500cb44608b5f229d0311a8b5

vim /etc/nginx/conf.d/default.conf

ae3c431fc6ab4a41b1310441488ce213

重新更新下nginx配置,然後重啓nginx

nginx -t

nginx -s reload

service nginx restart

78b98f7676984aeca91b92ac733cdf64

客戶端驗證

多刷幾次,nginx 的80端口負載冗餘到後臺的2臺tomcat 上,然後tomcat 的-v虛擬目錄映射了宿主機器的www目錄中的2個地址

3edeeabc9d4a43d7b1386efbfebbe477

d3089f8998054400a9c0f8456f055d24

日誌http200

1248e1e8656c4e23b17f224a1adeffb2

從宿主機器curl下,2個後臺都hit到了

for i in `seq 1 10`; do curl 192.168.10.131;done

83ae8b332b33472c9aeab94fe5c55817

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章