一 搭建环境说明:

服务器公网地址

用途

服务器内网地址

123.56.x.92

Nginx负载兼web服务

10.171.132.57

123.57.x.176

Nginx负载兼Web服务

10.172.235.86




两台服务器上面分别有三个站点,web,app,h5

PC站前端    nginx  80

H5站前端    nginx+tomcat  28180

3 app客户端   nginx+tomcat  28543



 负载均衡实现方式和前提

准备用dns轮询解析来实现负载均衡,并且在两台server上面还同时启用了Nginx负载均衡,两台服务器是互为负载。前提是两台web服务端的网站内容一致。


二 配置文件更改:

1  三个站点具体配置详情


更改nginx负载服务器上面各个站点的端口 

##web的配置文件

server
{
    listen 10.171.132.57:81;
    server_name www.hu.com;
    index index.html index.htm;
    root /data/wwwroot/www.hu.com/;
}


 

##h5配置文件

server
{
    listen 10.171.132.57:82;
    server_name m.hu.com;
    index index.html index.htm;
    root /data/wwwroot/m.hu.com/;
}


## app配置文件

server
{
    listen 10.171.132.57:83;
    server_name s.hu.com;
    index index.html index.htm;
   root  /data/www/nestpc/; 
 
        location ^~ /nestservice/ {
        proxy_pass http://10.171.132.57:28080;        
        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_redirect off;
    }
}

同理

按照上面92的操作,在176上面再操作一次(拷贝文件即可),把10.171.132.57都改成10.172.235.86 即可。


Nginx负载端配置详情

92 上面编辑一个配置文件 vi /usr/local/nginx/conf/vhost/ld.conf 

## web

 upstream www{
    server 10.171.132.57:81;      
    server 10.172.235.86:81 ;     
    ip_hash;
}
server {
     listen 80;
     server_name  www.hu.com;
     location / {
       proxy_pass http://www/;
       proxy_set_header Host $host;
  }
}

##  APP

 

upstream s{
    server 10.171.132.57:83 ;    
    server 10.172.235.86:83 ;      
    ip_hash;
}
server {
     listen 80;
     server_name  s.hu.com;           
     location / {
       proxy_pass http://s/;
       proxy_set_header Host $host;
  }
}

##   h5

 

upstream h5{
    server 10.171.132.57:82;   
    server 10.172.235.86:82;
    ip_hash;   
}
server {
     listen 80;
     server_name  m.hu.com;
     location / {
       proxy_pass http://h5/;
       proxy_set_header Host $host;
  }
}

到此,配置文件已经全部配置完毕,可以重启nginx服务了

同样176上面编辑一个配置文件 vi /usr/local/nginx/conf/vhost/ld.conf跟92的一模一样

这样不管是哪个nginx服务坏了,都可以工作,既实现了负载均衡也实现了高可用

 

三 验证:

比如当用户访问www.hu.com 这个站点的时候,通过DNS轮询到 Nginx前端,再根据你的配置甩向不同upstream(服务器)如下图:

dns + nginx实现负载均衡_第1张图片


测试停掉其中一台服务器的nginx看是否可以正常工作

缺点:如果重启nginx会造成3个站点同时启动