11lxm 发表于 2018-12-4 10:34:28

Docker 部署nginx+tomcat 负载冗余

  实验架构
http://i2.运维网.com/images/blog/201810/14/6a6862d0fffa62404da2b373cb2b67d3.jpg
  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
http://i2.运维网.com/images/blog/201810/14/c72e43398827ea03ab15757a56da4178.jpg
  yum list docker-ce --showduplicates | sort -r
http://i2.运维网.com/images/blog/201810/14/4c06c03c4540fcc5aedb921ce0a54621.jpg
  自动启动
  systemctl start docker
  systemctl enable docker
  docker安装验证
  docker run hello-world
http://i2.运维网.com/images/blog/201810/14/9057fe21e80afe22c683cac019cad15a.jpg
  下3个镜像,都用官网的好了
  docker search nginx
  docker pull nginx
http://i2.运维网.com/images/blog/201810/14/d92280330efed692a65e1827b0b34514.jpg
  docker search tomcat
  docker pull tomcat
http://i2.运维网.com/images/blog/201810/14/b1afb15b1dee2fcf8b8fa127c41c6ef3.jpg
  docker search centos
  docker pull centos
http://i2.运维网.com/images/blog/201810/14/1c79eed4c01bc24a9cee9d6a6751dacc.jpg
  同步下时间,每隔12小时自动同步一次
  yum install -y ntpdate
  ntpdate 0.asia.pool.ntp.org
  crontab -e
  * * */12 * * ntpdate 0.asia.pool.ntp.org
  crontab -l
http://i2.运维网.com/images/blog/201810/14/aecbbcd487c2072f9d4b2923f2106ce0.jpg
  看看本地镜像
  docker images
http://i2.运维网.com/images/blog/201810/14/7805b2abdbcd315829e32666c47aa994.jpg
  更新下网络配置避免包转发出错
  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 #显示当前运行的容器
http://i2.运维网.com/images/blog/201810/14/da2c67ce217f81d856dba98ac293a0dd.jpg
http://i2.运维网.com/images/blog/201810/14/7398fec36d7cf70dc534224bfb2805d8.jpg
  宿主机器192.168.10.131 端口8080转发到docker中80中,看起来docker 和nginx镜像都没问题
http://i2.运维网.com/images/blog/201810/14/6d19b9255724cf78939afd50b97457a1.jpg
  清除刚刚的demo
  docker stop nginxdemo
  docker rm nginxdemo
  docker ps
http://i2.运维网.com/images/blog/201810/14/8c5a067934273f2d33b8bc831dac5f87.jpg
  正式做nginx,tag自己的版本然后启动下
  docker tag be1f31be9a87 nginx:v1
  docker images
http://i2.运维网.com/images/blog/201810/14/16288dc108f66fc42129604cafa95c90.jpg
  docker run -ti -d -p 80:80 nginx:v1 /bin/bash
  docker ps
http://i2.运维网.com/images/blog/201810/14/22ad1e3a7910b897abf4710aa8fb0e59.jpg
  这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上
http://i2.运维网.com/images/blog/201810/14/3000a53befbdc92fc61bdd2722646eaa.jpg
  宿主机器创建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
http://i2.运维网.com/images/blog/201810/14/73a2aa9f3a32d87cafa04b6e506298ba.jpg
  重新运行下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,所以是随机端口
http://i2.运维网.com/images/blog/201810/14/aa0e53fc7b86719a7b71b3389907c3c6.jpg
http://i2.运维网.com/images/blog/201810/14/c163a6a422921f98c78c2d616bbd3361.jpg
http://i2.运维网.com/images/blog/201810/14/9273f95ca18f6fc2e112ba22c797758c.jpg
  继续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;
  }
http://i2.运维网.com/images/blog/201810/14/1975a95e9028955dc4d3ff188dd13be2.jpg
  vim /etc/nginx/conf.d/default.conf
http://i2.运维网.com/images/blog/201810/14/4191f948363116e7a7426735c8ba43eb.jpg
  重新更新下nginx配置,然后重启nginx
  nginx -t
  nginx -s reload
  service nginx restart
http://i2.运维网.com/images/blog/201810/14/95c95ab13ef659ad2ef7c2099abc6892.jpg
  客户端验证
  多刷几次,nginx 的80端口负载冗余到后台的2台tomcat 上,然后tomcat 的-v虚拟目录映射了宿主机器的www目录中的2个地址
http://i2.运维网.com/images/blog/201810/14/dc44cd2109dcfcc8b520600999f64ab9.jpg
http://i2.运维网.com/images/blog/201810/14/f8e6a19d1d2c486062a051a89782644e.jpg
  日志http200
http://i2.运维网.com/images/blog/201810/14/3d7cc84a314baae89b30a9c2b62f19bb.jpg
  从宿主机器curl下,2个后台都hit到了
  for i in `seq 1 10`; do curl 192.168.10.131;done
http://i2.运维网.com/images/blog/201810/14/5984454daddae4e55a6c250468e68e5e.jpg



页: [1]
查看完整版本: Docker 部署nginx+tomcat 负载冗余