docker案例篇之nginx负载均衡

#搭建nginx镜像
docker run -it --privileged --name tmp centos /usr/sbin/init
## 另外打开一个ssh窗口
docker ps
docker exec -it tmp /bin/bash
## 使用yum安装nginx
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx -y
## 设置开机启动并启动nginx
systemctl enable nginx
systemctl start nginx
## 把修改好的容器tmp提交成一个新的镜像 docker commit
docker commit -c ‘CMD ["/usr/sbin/init"]‘ -c "EXPOSE 80" tmp centos:nginx
## 从容器中拷贝文件到主机 docker cp
docker cp tmp:/etc/nginx/nginx.conf /home/sucd/nginx/conf/
## 启动镜像
docker run --name mynginx --privileged -p 9090:80 -v /home/sucd/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -d centos:nginx

#nginx负载均衡准备工作
## 基于centos:httpd镜像创建两个容器
docker run --name web1 -d -p 8080:80 --privileged -v /home/sucd/nginx/web1/:/var/www/html/ centos:httpd
docker run --name web2 -d -p 8081:80 --privileged -v /home/sucd/nginx/web2/:/var/www/html/ centos:httpd
## 使用docker compose编排
### 文档地址: https://docs.docker.com/compose/install/#install-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
## 然后赋予可执行权限
sudo chmod +x /usr/local/bin/docker-compose
## 查看下版本
docker-compose -v
## 创建目录和新建 docker-compose.yml文件
### docker-compose命令文档 https://docs.docker.com/compose/reference/overview/
## 详情参见 docker-compose.yml 文件
## yaml文件在线检查工具 : http://www.yamllint.com/
## docker-compose启动容器
docker-compose up -d

## 查看所有网络
docker network ls
## 查看某个网络
docker network inspect mycompose_default
## 查看容器IP
docker exec -it web2 /bin/bash
cat /etc/hosts
## 创建一个mynginx网络并指定子网地址
docker network create -d bridge --subnet=192.168.0.0/16 mynginx

1、compose up时自动创建网络
2、容器创建时指定IP
3、nginx配置负载均衡
## 先停止容器然后删除容器
docker-compose rm -sf
## 详情参见 docker-compose.yml 文件
## 配置nginx负载均衡 /etc/nginx/nginx.conf
cat /home/sucd/nginx/conf/nginx.conf
upstream mydocker {
server 192.156.0.6;
server 192.156.0.3;
}
server {
listen 80;
server_name mydocker;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
proxy_pass http://mydocker;
}
}
## 重启
docker-compose up -d
## 查看网络
docker network ls
docker network inspect mycompose_mynginx-net
## 虚拟机中直接访问mynginx容器
curl http://192.156.0.2
## 或者浏览器访问虚拟机 http://192.168.10.11:9090/ 打印web1或者web2,表示负载均衡完成

# 使用compose管理容器的健康检查
## 以健康检查机制创建容器web3
docker run --name web3 -d -p 8082:80 --privileged -v /home/sucd/nginx/web1/:/var/www/html --health-cmd="curl --silent --fail http://localhost:80/ || exit 1" --health-interval=3s --health-retries=3 --health-timeout=5s centos:httpd
## 另外打开一个窗口,并且关闭掉httpd服务。
docker exec -it web3 /bin/bash
[[email protected] /]# systemctl stop httpd
docker ps 会出现 unhealthy
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bc59ac44db79 centos:httpd "/bin/sh -c /usr/sbi…" About a minute ago Up About a minute (unhealthy) 0.0.0.0:8082->80/tcp web3
## 使用compose设置健康检查
https://docs.docker.com/compose/compose-file/#healthcheck
## 具体查看 docker-compose.yml healthcheck部分

docker-compose.yml文件内容

cat /home/sucd/mycompose/docker-compose.yml
services:
  nginx:
    container_name: mynginx
    image: "centos:nginx"
    ports:
      - "9090:80"
    privileged: true
    volumes:
      - "/home/sucd/nginx/conf/nginx.conf:/etc/nginx/nginx.conf"
    networks:
      mynginx-net:
        ipv4_address: 192.156.0.2
    healthcheck:
      test: ["CMD", "curl","-s","-f", "http://localhost:80"]
      interval: 5s
      timeout: 5s
      retries: 3

  web1:
    container_name: web1
    image: "centos:httpd"
    ports:
      - "8080:80"
    privileged: true
    volumes:
      - "/home/sucd/nginx/web1/:/var/www/html/"
    networks:
      mynginx-net:
        ipv4_address: 192.156.0.6
    healthcheck:
      test: ["CMD", "curl","-s","-f", "http://localhost:80"]
      interval: 5s
      timeout: 5s
      retries: 3

  web2:
    container_name: web2
    image: "centos:httpd"
    ports:
      - "8081:80"
    privileged: true
    volumes:
      - "/home/sucd/nginx/web2/:/var/www/html/"
    networks:
      mynginx-net:
        ipv4_address: 192.156.0.3
    healthcheck:
      test: ["CMD", "curl","-s","-f", "http://localhost:80"]
      interval: 5s
      timeout: 5s
      retries: 3

networks:
  mynginx-net:
    driver: bridge
    ipam:
      config:
        - subnet: 192.156.0.0/16
version: "3"

原文地址:http://blog.51cto.com/autophp/2320572

时间: 2024-11-09 02:59:01

docker案例篇之nginx负载均衡的相关文章

用docker搭建nginx负载均衡测试环境

昨天收了一篇好文章 nginx常用功能全揭秘,想着今天来按照步骤配置一下nginx代理的,结果在使用docker的时候一直出问题,才诞生了这篇关于docker配置nginx负载均衡. 首先在宿主机上创建两个两个目录n1,n2,分别作为两台nginx服务器的目录. mkdir -p n1 n2 然后分别在目录里新建一个index.html文件,并输入内容作为nginx集群配置成功的后页面呈现的标识. cd n1 && echo 'this is n1' >> index.html

nginx负载均衡篇一、nginx配置

如果不知道在Linux下如何安装nginx请参考前一篇文章. nginx负载均衡的配置较apache要简单许多,这里用nginx做负载均衡将不再描述tomcat集群的配置,如果对tomcat集群配置有不懂的地方,请参考Apache反向代理结合Tomcat集群来实现负载均衡(三).tomcat集群文章进行配置.下边进入正题,开始配置nginx负载均衡. 先来看下nginx的完全配置: #user nobody; worker_processes 1; #error_log logs/error.l

nginx负载均衡篇一、nginx安装

现在国内许多家大的网站都已经采用了Nginx作为web服务器,毕竟nginx在高并发.资源消耗低.反向代理等方面有着不错的性能,现在咱也随下大众,学习下nginx,顺便做下负载均衡. 系统环境,rhel6.5 x86_64   ,去nginx官网(http://nginx.org/)看了下,发现主线版已经到了1.7.3,由于是测试,所以就下了个稳定版1.6.0(http://nginx.org/download/nginx-1.6.0.tar.gz) 解压文件: <span style="

企业级Nginx负载均衡与keepalived高可用实战(二)keepalived篇

1.Keepalived高可用软件 1.1.Keepalived介绍 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能.因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx,Haproxy,MySQL等)的高可用解决方案软件. Keepalived软件主要是通过VRRP协议实现高可用功能的.VRRP是Virtual Router Redundancy Pro

Docker 安装 Nginx 负载均衡配置

Docker 安装 # 1)安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 # 2)添加Docker软件包源(否则doker安装的不是新版本) yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 3)安装Docker CE yum install -y docker-ce # 4)启动Doc

docker 搭建 nginx负载均衡

本文描述如何在一台机器上搭建nginx负载均衡,我将会启动3个nginx的docker,分别是1台前置nginx负责分发,后面2台负责处理请求. 首先我切换到/usr/local/docker/文件夹下,这个文件夹是专门用来做docker映射文件夹用的,docker里的重要的文件夹会映射到这里,在这里执行 mkdir nginx mkdir nginx01 mkdir nginx02 nginx下存储的是前置nginx的文件 nginx01和nginx02负责存储后边两台nginx服务器的文件

【中级篇】部署Tomcat+Nginx负载均衡集群

部署Tomcat+Nginx负载均衡集群 1.          实验需求: 1)     2台服务器同时部署tomcat; 2) 部署Nginx 3) 搭建负载均衡,测试其效果. 2.          实验环境: Linux服务器系统版本:CentOS-6.5 -S02 IP:192.168.10.15  ( tomcat 2 ) Linux服务器系统版本:CentOS-6.5 -S03 IP : 192.168.10.18  ( Nginx) Linux服务器系统版本:  RedHat6.

nginx负载均衡、动静分离

一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm 一.前言 在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解.nginx作为

nginx负载均衡2

负载均衡2 网站是发展初期,nginx只代理了后端一台服务器,但由于网站名气大涨访问的人越来越多一台服务器实在是顶不住,于是我们加了多台服务器,那么多台服务器又怎么配置代理呢,这里以两台服务器为案例,为大家做演示. 1.upstream 负载均衡模块说明 案例: 下面设定负载均衡的服务器列表. upstream webservers { server 192.168.18.201 weight=1; server 192.168.18.202 weight=1; } server { liste