免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: send_linux

话题讨论:中小型公司如何实现网站的高可用?欢迎参与! [复制链接]

论坛徽章:
6
丑牛
日期:2013-09-17 00:18:40未羊
日期:2013-10-31 12:10:47午马
日期:2013-12-07 01:58:50水瓶座
日期:2013-12-24 22:43:12水瓶座
日期:2014-03-15 21:12:13操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
发表于 2012-10-16 11:25 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2012-10-16 13:53 |显示全部楼层
回复 6# yuhongchun


    我觉得 这边还有一个问题要考虑, 小企业雇佣一个高素质运维团队的成本,是否比服务器/网站的成本要高,就像你提到的 keep monitor the server running, 这些活大部分不需要太高要求,但做实时的恢复 或者节点失败后的分析检查 可能要求就高一些。

    所以这方面,一些要求不高的小企业倒是可以考虑把大部分网站建设和维护 外包给第三方来完成,这样集约化 也是可以省钱的~~~

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2012-10-16 13:54 |显示全部楼层
回复 24# rootsecurity


    我觉得倒不一定 要同时连接几个运营商, 存储方面可以挂靠在机房让他们做镜像去。。。

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2012-10-16 13:58 |显示全部楼层
回复 13# yifangyou


    这个弱项就在于负载均衡,DNS的动态指向  更多应该是依 访问量来分 而不是处理的数据量~

   不过这里讨论HA, 没问题~~

论坛徽章:
0
发表于 2012-10-16 14:01 |显示全部楼层
我们公司三台服务器,1+2
nginx前端:反向代理,缓存静态文件,负载
apache后端:动态处理php程序
在前端装有nagios监控
每台服务器都配有一个公网IP地址
后端二台mysql为主主复制,网站内容为unison+inotify双向同步

如果后端其中一台服务器出问题,在短期内不碍事
如果前端出问题了,更改域名的IP指向后端期中一台(目前网站访问量不大)

论坛徽章:
27
CU大牛徽章
日期:2013-03-13 15:15:08CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-09-18 15:24:09CU大牛徽章
日期:2013-09-18 15:24:20CU大牛徽章
日期:2013-09-18 15:24:25CU大牛徽章
日期:2013-09-18 15:24:31CU大牛徽章
日期:2013-09-18 15:24:36CU大牛徽章
日期:2013-09-18 15:24:41CU大牛徽章
日期:2013-09-18 15:24:48CU大牛徽章
日期:2013-09-18 15:24:52处女座
日期:2013-09-27 17:45:43
发表于 2012-10-16 14:24 |显示全部楼层
回复 34# to407
基本上还算平均吧,我看了一下四台机器的nginx日志,基本上大小差别不大


   

论坛徽章:
6
丑牛
日期:2013-09-17 00:18:40未羊
日期:2013-10-31 12:10:47午马
日期:2013-12-07 01:58:50水瓶座
日期:2013-12-24 22:43:12水瓶座
日期:2014-03-15 21:12:13操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
发表于 2012-10-16 14:24 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
6
丑牛
日期:2013-09-17 00:18:40未羊
日期:2013-10-31 12:10:47午马
日期:2013-12-07 01:58:50水瓶座
日期:2013-12-24 22:43:12水瓶座
日期:2014-03-15 21:12:13操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
发表于 2012-10-16 16:45 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:19
发表于 2012-10-17 10:27 |显示全部楼层
1.大家也可以讨论下工作中遇到此事的解决方法。

    如果是整体布局架构我们是由硬件(多服务器用何种架构组合)到软程序(程序代码如何规划,是否采用组件扩展的写法等)的规划,但是遇到了问题以后我们一般是由内而外,先对程序等软性问题进行处理,包括:增加带宽(购买网宿的CDN全站加速)、减少文件的HTTP连接数(包括用CSS精灵)、PHP动态内容静态化、SQL语句优化、数据库分表结构等,如果软性故障排除,再考虑是否需要添加硬件等。

2.2/3/4台服务器如何实现网站的负载均衡高可用呢?

      这里以3台服务器组成一个负载均衡高可用为例,1台前端机器安装nginx做负载均衡和WEB缓存服务器(外界访问的都是指向这台机器的IP),后端是2台apache主机,后端2台机器都安装有mysql,并把mysql做主从复制(Replication)的数据同步(这个具体过程配置查百度,大理论就不多说了!)。这样在后端一台机器宕机的时候,另一台可以随时切换过去。

   这种架构的优点是整体框架结构和配置简单。缺点是无论是缓存还是负载均衡的总体效率上不是很高!

    附加以前做测试时用的一个nginx配置表,很重要!大部分主要配置都在这里,一些常见的应用部分都已做了中文注释,当然商业化应用肯定不只这么简单,还需要做很多更详细的组合配置。
user  nginx nginx;
worker_processes  2;
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;
events {
    use epoll;
    worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

                server_names_hash_bucket_size 128;
                client_header_buffer_size 32k;
                large_client_header_buffers 4 32k;
                client_max_body_size 50m;

                sendfile on;
                tcp_nopush     on;

                keepalive_timeout 60;

                tcp_nodelay on;

                fastcgi_connect_timeout 300;
                fastcgi_send_timeout 300;
                fastcgi_read_timeout 300;
                fastcgi_buffer_size 64k;
                fastcgi_buffers 4 64k;
                fastcgi_busy_buffers_size 128k;
                fastcgi_temp_file_write_size 256k;

                gzip on;
                gzip_min_length  1k;
                gzip_buffers     4 16k;
                gzip_http_version 1.0;
                gzip_comp_level 2;
                gzip_types       text/plain application/x-javascript text/css application/xml;
                gzip_vary on;

   ################################################
   #负载均衡部分
   #192.168.1.55是前端nginx主机,244,245是后端apache.
   ###############################################

    upstream   test {
      #server 192.168.1.55;
      ip_hash;  
      server 192.168.1.244;
      server 192.168.1.245;
     }
    ########################################################
    #
    # The default server
    #
    server {
        listen       80;
        server_name  192.168.1.55;
      

        location / {
              root   /usr/share/nginx/html;
              index  index.html index.htm index.php;
     ###########################
      #代理部分设置  
     ###########################
            
                         proxy_pass   http://test;   

                         proxy_set_header   Host             $host;

                         proxy_set_header   X-Real-IP        $remote_addr;

                         proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
         

           # rewrite ^/photo/([0-9]+)\.html$ /sinaphoto.php?pid=$1 last;
        }
        

        
        ########################
        #伪静态重定向
        ########################
        rewrite ^/photo/(.+)\.html$ /sinaphoto.php?pid=$1 last;
      
        error_page  404              /404.htm;
        location = /404.html {
            root   /usr/share/nginx/html;
        }

        
        location ~ .*\.(php|php5)?$
                        {
                                fastcgi_pass  unix:/tmp/php-cgi.sock;
                                #fastcgi_pass 127.0.0.1:9000;
                                fastcgi_index index.php;
                                include fcgi.conf;
                        }

        # deny access to .htaccess files, if Apache's document root
          concurs with nginx's one
         
        location ~ /\.ht {
             deny  all;
         }
         ########################
         #简单防盗链
         ######################
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
                        {
                     
                          valid_referers none blocked 192.168.1.244;
                          if  ( $invalid_referer ) {
                            rewrite ^/ http://$host/upload/logo.jpg;
                            }

                          if (-f $request_filename){       
                            expires      90d;
                            break;
                           }
                        }

                location ~ .*\.(js|css)?$
                        {
                                expires      24h;
                        }
    }

    # Load config files from the /etc/nginx/conf.d directory
    #include /etc/nginx/conf.d/*.conf;

3.如何在负载均衡高可用/成本上取一个平衡?

如问题2里的结构,后端在2台负载不了的情况下,可以增加到3台,甚至4台,在nginx配置中多增加一个代理。甚至可以把纯静态的部分JS、CSS、图片等,单独列为一台进行处理,尽可能在保证低成本的情况下,完成高可用的稳定和速度!从而达到一个比较理想状态的平衡!

论坛徽章:
0
发表于 2012-10-17 15:30 |显示全部楼层
运维新手,纯粹来支持下这种好的技术分享!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

ITPUB技术栈

ITPUB技术栈是ITPUB企业打造的垂直于IT领域的知识社群平台,在这里,你既可以是创作者也可以是消费者。如果你的IT生涯丰富多彩,喷薄的个人价值尽可在小栈内体现;如果你渴望找到志同道合的伙伴,拓宽人脉,小栈比跑会场更快。 小栈特色:
1.极高的用户转化率,实现更直接的知识变现;
2.随时随地,刷个朋友圈的时间,实现更长效的信息沉淀;
3.戳痛、难点的专业咨询,更接近成功解决方案的时刻;
4.贴近意见领袖,个人高速成长,迈入更富有价值的人际圈。

----------------------------------------

技术小栈>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP