使用docker搭建nginx集群

简介

  • 在同一台主机中,使用docker搭建nginx集群。
  • 创建三个nginx容器,其中一台需要进行宿主主机的端口映射作为主服务器,其余容器不需要端口映射,也不需要配置桥接网络,默认即可。

实操

创建容器

  • 获取镜像:docker pull daocloud.io/nginx
    在这里插入图片描述

  • docker run -itd --name nginx_master -p 8080:80 daocloud.io/nginx /bin/bash创建nginx主服务容器,将容器的80端口映射到宿主主机的8080端口。
    在这里插入图片描述

    • 发现访问:http://localhost:8081, 并不能访问, 因为是nginx服务默认没有启动,docker exec -it nginx_master bash进入容器,/usr/sbin/nginx启动nginx服务即可。
      在这里插入图片描述
  • 创建两个从nginx容器:

docker run -itd --name nginx_slave1 daocloud.io/nginx /bin/bash
docker run -itd --name nginx_slave2 daocloud.io/nginx /bin/bash

在这里插入图片描述
然后需要分别启动nginx_slave1和nginx_slave2的nginx服务, 请参考主nginx的启动。
在这里插入图片描述

配置nginx

  • 三个容器均需要进行apt update && apt install vim
  • 打开一个终端查看容器的网络信息:
docker network ls
docker network inspect 对应你实际NETWORK ID

在这里插入图片描述

主nginx配置

  • 进入主nginx容器docker exec -it nginx_master bash:
    在这里插入图片描述
  • 修改主nginx配置vim /etc/nginx/conf.d/default.conf的默认站点配置:
upstream 172.17.0.2 {
  server 172.17.0.3 weight=10;  # 对应nginx_slave1
  server 172.17.0.4 weight=20; # 对应nginx_slave2
}


server {

    listen       80;
    server_name  172.17.02;


    location / {
	proxy_pass http://172.17.0.2;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }


    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

  • service restart nginx重启服务。
    在这里插入图片描述

从nginx配置

  • 在两个slave容器中,分别修改默认站点的首页,添加各自的ip来标识。
    vim /usr/share/nginx/html/index.html

  • nginx_slave2:
    在这里插入图片描述

  • nginx_slave1
    在这里插入图片描述

至此已经部署完一个简单的集群。

效果图

在这里插入图片描述
在这里插入图片描述

发布了78 篇原创文章 · 获赞 178 · 访问量 35万+

猜你喜欢

转载自blog.csdn.net/ClassmateLin/article/details/104691196