-->

signed

QiShunwang

“诚信为本、客户至上”

docker安装nginx 并配置负载均衡

2021/6/3 15:27:04   来源:

一、docker安装nginx

1.查看nginx版本

[root@localhost ~]# docker search nginx

2.获取最新版本的Nginx镜像

# 我拉的是官方的版本
[root@localhost ~]# docker pull nginx:latest

3.查看本地已经下载镜像

[root@localhost ~]# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
nginx                        latest              d1a364dc548d        7 days ago          133MB          

4.运行容器

# 参数说明:
# --name nginx 容器名字
# -p 80:80 将本地80端口映射成容器内部80端口
[root@localhost ~]# docker run --name nginx -p 80:80 -d nginx

5.查看已启动容器

说明:

  • 显示nginx,说明容器已经启动,这时就可以正常访问了
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
e47bfbac7a0b        nginx               "/docker-entrypoint.…"   28 minutes ago      Up 16 minutes       0.0.0.0:80->80/tcp       nginx
8e01736b1e21        redis               "docker-entrypoint.s…"   7 days ago          Up 19 hours         0.0.0.0:6379->6379/tcp   redis-test

  • 浏览器输入:http://172.16.47.2:80  这时我本地ip

 

二、nginx配置负载均衡

1.打开nginx配置文件

  • 进入nginx容器
  • [root@localhost ~]# docker exec -it nginx bash
    root@e47bfbac7a0b:/# 
    
  • 进入容器无法使用vi 或者是vim 需要安装
  • root@e47bfbac7a0b:/# apt-get update  
    root@e47bfbac7a0b:/# apt-get install vim
  • 此时就可以编辑nginx.conf文件了
  • root@e47bfbac7a0b:/# vim /etc/nginx/nginx.conf

    1.内置负载策略

  • Nginx负载均衡是通过upstream模块来实现的,内置实现了三种负载策略,配置还是比较简单的。官网负载均衡配置说明:http://nginx.org/en/docs/http/load_balancing.html

    轮循(默认)
    Nginx根据请求次数,将每个请求均匀分配到每台服务器
    最少连接
    将请求分配给连接数最少的服务器。Nginx会统计哪些服务器的连接数最少。
    IP Hash
    绑定处理请求的服务器。第一次请求时,根据该客户端的IP算出一个HASH值,将请求分配到集群中的某一台服务器上。后面该客户端的所有请求,都将通过HASH算法,找到之前处理这台客户端请求的服务器,然后将请求交给它来处理。
     

    http {
    
      
    
        upstream nginxtest {
            server 10.101.3.47:1111;
            server 10.101.3.47:2222;
            
        }
    
        server {
            listen 80;
    
            location / {
                proxy_pass http://nginxtest;
            }
        }
    
       
    }