使用docker 部署简单的nginx负载均衡服务器

使用docker  部署3个nginxweb服务器,端口分别为8005,8006,8007   ,然后再部署一个nginx负载均衡服务器端口号为8008

1、首先部署3个web服务器,以8007端口为例

1.1  使用以下命令生成名字为8007的nginx镜像web服务器

docker run -it -d  -p 8007:80 --name 8007 nginx

1.2  使用docker ps  查看8007服务器的容器id

 1.3  使用docker cp 命令将8007服务器容器的nginx的两个配置文件拷贝到阿里云宿主机home/testnginxconf目录内,其中default.conf是被nginx.conf文件引用的子文件

docker cp d4912007061c:/etc/nginx/conf.d/default.conf /home/testnginxconf/
docker cp d4912007061c:/etc/nginx/nginx.conf /home/testnginxconf/

1.4  在宿主机上修改default.conf文件,此文件被nginx.conf文件include引用

server {
    listen       80;
    server_name  localhost;

  
           location / {
             root  /web8007/; #此地址是nginx容器根目录下新建的web8007目录,不是宿主机的目录
             index  index.html; #默认加载index.html文件
       }
}

1.5  在宿主机上的nginx.conf 文件,此文件可以不做修改

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {

   
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

1.6  将宿主机上修改完成的default.conf和nginx.conf文件拷贝到8007容器的对应目录

docker cp /home/testnginxconf/default.conf   d4912007061c:/etc/nginx/conf.d/
docker cp /home/testnginxconf/nginx.conf d4912007061c:/etc/nginx

1.7   修改完配置文件后,要想配置文件起作用,必须停止和重启8007容器

docker  stop d4912007061c
docker restart d4912007061c

1.8  使用exec命令进入8007容器,准备新建项目文件夹

docker exec -it d4912007061c /bin/bash

1.9 使用 mkdir命令在8007容器根目录下建立8007的web文件夹

mkdir web8007

 

1.10  在宿主机上home/nginxtestpublish/8007index目录修改nginx默认index页面为8007index

1.11 拷贝8007index页面到8007容器的web8007目录内

docker cp /home/nginxtestpublish/8007index/index.html d4912007061c:web8007

1.12  接着在宿主机上执行curl http://localhost:8007  可以看到8007index页面在宿主机部署好了

 

1.13  确保阿里云服务器的防火墙已经放开8005到8008端口,如果没有,设置后,重启阿里云服务器

 1.14  在外网的windows机器上访问http://外网ip:8007 ,看到8007index页面,说明8007nginx服务器和网站搭建完毕,8005和8006 同样操作。

 

 

 

2、搭建负载均衡服务器

2.1 使用以下命令生成8008负载均衡服务器,8008是负载均衡服务器,不需要添加web8008目录

docker run -it -d  -p 8008:80 --name 8008 nginx

2.2  在宿主机上修改的default.conf文件 ,http://lrgtest是域名,没有域名就通过http://ip:8008访问

server {
    listen       80;
    server_name  182.92.101.106;

   
        #集群站点路由
    location / {

        proxy_pass http://lrgtest;  #对应upstream后面的名称加上http://
      }
}

2.3 在宿主机上修改nginx.conf文件,主要是添加upstream 负载均衡及诶点设置

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {

    #集群站点配置
    upstream lrgtest{
        
        server    182.92.101.106:8005 weight=1;
        server    182.92.101.106:8006 weight=1;
        server    182.92.101.106:8007 weight=1;
    }



    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

 

2.4  拷贝nginx.conf和default.conf到8008nginx服务器的对应目录

docker cp /home/testnginxconf/default.conf   e321fa5c766c:/etc/nginx/conf.d/
docker cp /home/testnginxconf/nginx.conf e321fa5c766c:/etc/nginx

2.5  修改完配置文件后,要想配置文件起作用,必须停止和重启8008负载均衡服务器

docker  stop e321fa5c766c
docker restart e321fa5c766c

 2.6  然后在外网访问http://外网ip:8008  多次,实现了nginx的轮训策略负载均衡

 

 

 

 

posted @ 2023-04-20 21:06  无声袖箭  阅读(236)  评论(0)    收藏  举报