阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Nginx负载均衡在新浪播客中的实际应用

207次阅读
没有评论

共计 4121 个字符,预计需要花费 11 分钟才能阅读完成。

2008 年的新浪播客由静态服务器集群和动态服务器集群两部分组成,静态服务器集群采用 Squid 做前端缓存,动态服务器也称接口服务器,主要用来实现显示播放数,记录播放日志等等。

接口服务器上采用 F5 BIG-IP 硬件四 / 七层负载均衡交换机,对 4 台 Nginx 反向代理服务器进行四层负载均衡,由这四台 nginx 服务器判断 URL,进行分组,对后端 3 组 web 服务器进行七层负载均衡。

F5 BIG-IP 后端的 3 组 web 服务器,配置不一样,第一组内存密集型,技术主要是 PHP+Mencache 服务;第 2 组为 CPU 密集型服务,主要消耗 CP 资源;第三组为磁盘密集型,为记录日志等操作,要求大空间。

以下代码是接口服务器 Nginx 负载均衡配置;

/*** 代码是 N 年前新浪接口服务器的 nginx 负载均衡配置,提供按 URL 分组服务, 负载均衡服务 ***/

usr www www;
worker_processes 10;
error_log /data1/logs/nginx_error.log crit;
pid  /tmp/nginx.pid
worker_rlimt_nofile 51200;

events
{
    use epull;

    worker_connections 51200;
}

http
{
    include  conf/mine.types;
    default_type application/octet-stream;

    charset gb2312;

    server_name_hash_bucket_size 128;

    keeplaive_timeout 15;

    sendfile on;
    tcp_mopush on;
    tcp_nodelay on;
    #第一组接口机:Memcache 相关(点击数)
    upstream count.interface.video.sian.com.cn{
        server xx.xx.xx.55:80;
        server xx.xx.xx.58:80;
        server xx.xx.xx.47:80;
    }
    #第二组接口机:提供数据类程序
    upstream data.interface.video.sian.com.cn{
        server xx.xx.xx.59:80;
        server xx.xx.xx.64:80;
        server xx.xx.xx.48:80;
    }
    #第三组接口机:打日志类程序,功能相关,嵌套页面
    upstream log.interface.video.sian.com.cn{
        server xx.xx.xx.72:80;
        server xx.xx.xx.49:80;
    }
}
server
{
    listen 80;
    server_name interface.video.sian.com.cn;

    location / {
    proxy_redirect off;

    #后端的 web 服务器可以直接通过 X -Forward-For 获取用户真实 ip
    proxy_set_header X-Forward-For $remote_adr;

    #按 URL 进行分组,第一组:Memcache 相关(点击数)
    if ($request_uri ~ “^\/app\/count\/”)
    {
        proxy_pass http://count.interface.video.sian.com.cn;
    }
    if ($request_uri ~ “^\/app\/online\/”)
    {
        proxy_pass http://count.interface.video.sian.com.cn;
    }
    if ($request_uri ~ “^\/interface\/user\/getLoginGap.php”)
    {
        proxy_pass http://count.interface.video.sian.com.cn;
    }
    #按 URL 进行分组,第二组:外部提供数据类程序
    if ($request_uri ~ “^\/crossdomain.xml”)
    {
        proxy_pass http://data.interface.video.sian.com.cn;
    }
    if ($request_uri ~ “^\/interface\/client\/topVideoClient.php”)
    {
        proxy_pass http://data.interface.video.sian.com.cn;
    }
    if ($request_uri ~ “^\/interface\/common\/”)
    {
        proxy_pass http://data.interface.video.sian.com.cn;
    }
    if ($request_uri ~ “^\/interface\/randplay\/randplay.php”)
    {
        proxy_pass http://data.interface.video.sian.com.cn;
    }
    if ($request_uri ~ “^\/interface\/topic\/suggTop.php”)
    {
        proxy_pass http://data.interface.video.sian.com.cn;
    }
    if ($request_uri ~ “^\/interface\/uploadClient\/”)
    {
        proxy_pass http://data.interface.video.sian.com.cn;
    }
    if ($request_uri ~ “^\/interface\/xml\/”)
    {
        proxy_pass http://data.interface.video.sian.com.cn;
    }
    if ($request_uri ~ “^\/outinterface\/”)
    {
        proxy_pass http://data.interface.video.sian.com.cn;
    }
    #按 URL 进行分组,第三组:打日志类程序
    if ($request_uri ~ “^\/interface\/flash\/”)
    {
        proxy_pass http://log.interface.video.sian.com.cn;
    }
    if ($request_uri ~ “^\/interface\/playrank\/playrank2008_10.php”)
    {
        proxy_pass http://log.interface.video.sian.com.cn;
    }
    #按 URL 进行分组,其他组:功能相关,嵌套页面等未匹配到的 URL
    proxy_pass  http://log.interface.video.sina.com.cn;
}
# 定义日至格式
log_format count ‘$remote_addr – $remote_user [$time_local] $request’
    ‘”$status” $body_bytes_sent “$http_referer”‘
    ‘”$http_user_agent”  “$http_x_forwarded_for”‘;
# 打日志
access_log /data1/logs/interface.log count;

# 允许客户端请求的最大单文件字节数
client_max_body_size 10m;

# 缓冲区代理缓冲用户端的最大字节数 可以理解为现存到本地再传给用户
client_body_size 128k;

# 跟后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_connect_time 600;

# 连接成功后_等待后端服务器响应时间_其实已经进入后端的派对等候处理
proxy_read_timeout  600;

# 后端回传时间_规定时间内传完所有数据
proxy_send_timeout  600;

# 代理请求缓存区,保存用户的头信息以供 Nginx 进行规则处理
proxy_buffer_size  8k;
proxy_buffers  4  32k;
proxy_busy_buffers_size  64k;
proxy_temp_file_write_size 64k;
}
}

更多 Nginx 相关教程见以下内容

CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm

使用 Nginx 搭建 WEB 服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm

搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm

Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm

Nginx 的详细介绍 :请点这里
Nginx 的下载地址 :请点这里

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-08/121859.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计4121字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中