宝塔 Docker部署nginx实现负载均衡

Docker部署nginx实现负载均衡

实验环境:
Centos 7
Docker
Nginx

利用宿主机和两个nginx容器来实现负载均衡,宿主机无任何内容。只搭载一台nginx服务器,并由此台服务器将请求转发给两个nginx容器来进行处理

不知道什么是nginx 负载均衡,请移步 nginx负载均衡

一、安装相关环境

1.安装Docker(个人推荐配置阿里云源)
2.宿主机安装Nginx

关闭防火墙和selinux

[root@iZbp18vj2il5rgv6uy66xxZ ~]# systemctl stop firewalld.service  //Centos7 关闭防火墙命令
[root@iZbp18vj2il5rgv6uy66xxZ ~]# setenforce 0  //临时关闭SELinux
//如果是宝塔安装,则省略
[root@iZbp18vj2il5rgv6uy66xxZ ~]# yum install docker -y
[root@iZbp18vj2il5rgv6uy66xxZ ~]# wget http://dl.Fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@iZbp18vj2il5rgv6uy66xxZ ~]# yum install nginx -y

传送门:
selinux是什么
centos7 防火墙命令

用命令测试是否成功安装 能否开启服务

//如果是宝塔安装,则省略
[root@iZbp18vj2il5rgv6uy66xxZ ~]# systemctl start docker.service
[root@iZbp18vj2il5rgv6uy66xxZ ~]# systemctl start nginx.service   Centos 7 启动服务命令与6.x不同哦

测试web页面是否显示成功

完全ok 没问题!!!
我们先删除掉nginx默认html,并创建一个空白index.html 方便我们配置成功后查看效果

[root@iZbp18vj2il5rgv6uy66xxZ ~]# cd /www/server/nginx/html/
[root@iZbp18vj2il5rgv6uy66xxZ ~]# rm index.html
[root@iZbp18vj2il5rgv6uy66xxZ ~]# touch index.html
二、安装Nginx容器
  1. pull nginx镜像
    [root@iZbp18vj2il5rgv6uy66xxZ www]# docker pull nginx
    Using default tag: latest
    latest: Pulling from library/nginx
    07aded7c29c6: Pull complete 
    bbe0b7acc89c: Pull complete 
    44ac32b0bba8: Pull complete 
    91d6e3e593db: Pull complete 
    8700267f2376: Pull complete 
    4ce73aa6e9b0: Pull complete 
    Digest: sha256:765e51caa9e739220d59c7f7a75508e77361b441dccf128483b7f5cce8306652
    Status: Downloaded newer image for nginx:latest
    docker.io/library/nginx:latest
    
  2. pull完成使用docker images命令查看
    [root@iZbp18vj2il5rgv6uy66xxZ www]# docker images 
    REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
    nginx        latest    f8f4ffc8092c   7 days ago   133MB
    
  3. docker run 创建容器
//容器名:nginx_web1 映射容器8080端口到宿主机80端口上
docker run -p 8080:80 --name nginx_web1 -it nginx /bin/bash

进入nginx_web1容器的nginx目录下 创建一个index.html

root@9f88cab79ac8:/# cd /usr/share/nginx/html/
root@9f88cab79ac8:/usr/share/nginx/html# ls
50x.html  index.html
root@9f88cab79ac8:/usr/share/nginx/html# rm index.html 
root@9f88cab79ac8:/usr/share/nginx/html# echo hello nginx_web1 ninetySeven > index.html
root@9f88cab79ac8:/usr/share/nginx/html# exit

下面创建多一个新的nginx容器

//容器名:nginx_web2 映射容器8080端口到宿主机80端口上
docker run -p 8081:80 --name nginx_web2 -it nginx /bin/bash

进入nginx_web2容器的nginx目录下 创建一个index.html

root@f1b7fcac2dad:/#  cd /usr/share/nginx/html/
root@f1b7fcac2dad:/usr/share/nginx/html# ls
50x.html  index.html
root@f1b7fcac2dad:/usr/share/nginx/html# rm index.html 
root@f1b7fcac2dad:/usr/share/nginx/html# echo hello nginx_web2 ninetySeven > index.html
root@f1b7fcac2dad:/usr/share/nginx/html# exit

先查看容器

[root@iZbp18vj2il5rgv6uy66xxZ www]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS              PORTS                                   NAMES
f1b7fcac2dad   nginx     "/docker-entrypoint.…"   4 minutes ago    Up About a minute   0.0.0.0:8081->80/tcp, :::8081->80/tcp   nginx_web2
9f88cab79ac8   nginx     "/docker-entrypoint.…"   10 minutes ago   Up 49 seconds       0.0.0.0:8080->80/tcp, :::8080->80/tcp   nginx_web1

exit退出后容器不运行 先启动两个nginx容器再执行启动服务命令

[root@iZbp18vj2il5rgv6uy66xxZ ~]# docker start f1b7fcac2dad
f1b7fcac2dad
[root@iZbp18vj2il5rgv6uy66xxZ ~]# docker start 9f88cab79ac8
9f88cab79ac8
[root@iZbp18vj2il5rgv6uy66xxZ ~]# docker exec -d f1b7fcac2dad service nginx start
[root@iZbp18vj2il5rgv6uy66xxZ ~]# docker exec -d 9f88cab79ac8 service nginx start
三、配置宿主机nginx文件

方式一:命令行操作(推荐)

[root@iZbp18vj2il5rgv6uy66xxZ /]# cd /www/server/nginx/conf/
[root@iZbp18vj2il5rgv6uy66xxZ conf]# vim nginx.conf

方式二:打开宝塔面板找到nginx管理

在http段加入以下代码

// nginx.kkcake.cn 自己服务器的域名
upstream nginx.kkcake.cn { 
      server  101.37.157.104:8080 weight=10; 
      server  101.37.157.104:8081 weight=20; 
}
server{ 
    listen 80; 
    server_name nginx.kkcake.cn; 
    location / { 
        proxy_pass         http://nginx.kkcake.cn; 
        proxy_set_header   Host             $host; 
        proxy_set_header   X-Real-IP        $remote_addr; 
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for; 
    } 
}

保存配置并重启宿主机Nginx 或者 宝塔面板nginx管理重启服务

[root@iZbp18vj2il5rgv6uy66xxZ ~]# systemctl restart nginx.service

查看Nginx容器运行状态

注:如果是线上服务器,则需要在服务器和宝塔界面开启端口

服务器配置端口

宝塔配置端口

五、测试

 

再刷新几次?

 

 

 

web1 web2 看出来了吧?

以上基于docker实现nginx负载成功!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现Nginx负载均衡配置,可以通过修改Nginx的配置文件nginx.conf来实现。首先,需要定义一个upstream块,用于指定后端服务器的地址和权重。例如,可以使用以下配置来定义一个名为OrdinaryPolling的upstream块,其中包含两个后端服务器的地址和权重: ``` upstream OrdinaryPolling { server 127.0.0.1:8080 weight=5; server 127.0.0.1:8081 weight=2; } ``` 接下来,在server块中配置监听端口和服务器名称,并在location块中配置代理转发规则。例如,可以使用以下配置来实现将所有请求转发到OrdinaryPolling upstream块中定义的后端服务器: ``` server { listen 80; server_name localhost; location / { proxy_pass http://OrdinaryPolling; index index.html index.htm index.jsp; } } ``` 通过以上配置,Nginx会将请求转发到OrdinaryPolling upstream块中定义的后端服务器,并根据权重进行负载均衡。其中,权重越高的服务器将获得更多的请求。可以根据实际需求进行配置调整。 #### 引用[.reference_title] - *1* [宝塔/本地 nginx负载均衡配置](https://blog.csdn.net/stringQiang/article/details/118466139)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [宝塔Nginx负载均衡](https://blog.csdn.net/qq_42980417/article/details/124746710)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值