Ubuntu下用docker和nginx实现负载均衡

Ubuntu下用docker和nginx实现负载均衡,需要安装docker编译安装nginx

在安装好docker以后,可以修改/etc/docker/daemon.json文件并添加上 registry-mirrors 键值。

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

修改保存后重启 Docker 使配置生效。

完成上述步骤后,我们接下来:

  1. 使用docker拉取nginx镜像

    docker pull nginx
  2. 创建两个目录,分别用于存放两个容器对应的网页

    mkdir -p /data/demo1
    mkdri -p /data/demo2

分别在两个目录下创建index.html文件。

demo1下的index.html内容为

<h1>
    This is demo One!
</h1>

demo2下的index.html内容为

<h1>
    This is demo Two!
</h1>
  1. 运行两个容器,并将网页目录映射到刚刚创建的两个目录。
    容器1的80端口映射到8081端口。

    docker run --name nginx-demo1 -d -p 8081:80 -v /data/demo1:/usr/share/nginx/html nginx

    容器2的80端口映射到8082端口。

    docker run --name nginx-demo2 -d -p 8082:80 -v /data/demo2:/usr/share/nginx/html nginx

    需要注意的是,nginx镜像中,默认的网页目录为/usr/share/nginx/html

  2. 修改宿主机的nginx配置,以下配置可供参考

    #user  nobody;
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        upstream fengtalk {
        server 172.18.0.1:8081 weight=1;# 172.18.0.1为docker内部IP地址
        server 172.18.0.1:8082 weight=1;# 可通过ifconfig查看到
        }
        server {
            listen 80;
            server_name 192.168.50.251;# 把域名或IP地址替换成你自己的
            location / {
            proxy_redirect off;  
                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_pass http://fengtalk;# 与上面的upstream后名称对应
              }
        }
    }
  3. 保存配置并重启nginx
  4. 此时,在浏览器打开IP或域名对应的地址。刷新页面时,如果内容This is demo One!This is demo Two!来回切换,说明负载均衡配置成功。

标签: docker

评论已关闭