dns + nginx实现负载均衡

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dns + nginx实现负载均衡相关的知识,希望对你有一定的参考价值。

一 搭建环境说明:

服务器公网地址

用途

服务器内网地址

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服务了


三 验证:

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

技术分享


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

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


本文出自 “渐行渐远” 博客,请务必保留此出处http://825536458.blog.51cto.com/4417836/1878212

以上是关于dns + nginx实现负载均衡的主要内容,如果未能解决你的问题,请参考以下文章

nginx配置静态资源缓存, 同时配合k8s的SVC(core dns)实现负载均衡

Nginx和tomcat实现负载均衡

Nginx---负载均衡和缓存

手写负载均衡算法

DNS的主从,转发与负载功能

Nginx和tomcat实现负载均衡