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>

3.运行两个容器,并将网页目录映射到刚刚创建的两个目录。
容器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

4.修改宿主机的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后名称对应
          }
    }
}

5.保存配置并重启nginx

6.此时,在浏览器打开IP或域名对应的地址。刷新页面时,如果内容This is demo One!This is demo Two!来回切换,说明负载均衡配置成功。