免费注册 查看新帖 |

ChinaUnix.net

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

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

论坛徽章:
0
发表于 2012-10-12 17:27 |显示全部楼层
2台机器弄得比较多了,基本就是heartbeat+lvs+ldirectord,可以很好满足即让2台机器都使用上,又去掉了单点故障。
3或4台其实可以依次扩展,也不是什么大问题
不过4台的话,还是建议将LB层独立出来(如果资源允许的情况下)

论坛徽章:
0
发表于 2012-10-12 21:57 |显示全部楼层
不是这方面的,纯支持一下。~~~~~~~~~~~~~~

论坛徽章:
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-13 00:25 |显示全部楼层
本帖最后由 yifangyou 于 2012-10-13 00:32 编辑

我公司前段时间做了一个活动,花了5000块购买了5台虚拟机(每台cpu 为单核2GHZ,内存为1.5GB)做了一个两个月大活动,我设计支持高并发的系统如下:
活动的特点是高并发,逻辑不是很复杂,因此我采用DNS做负载均衡器+nginx做前端+php开发+redis数据库的分布式结构。
使用DNS负载均衡的原因是,我没有更多的钱买负载均衡,其次负载均衡至少得双机主备,再次DNS负载均衡不用部署配置,比lvs简单多了。
为了解决跨域的session问题,我使用了一个redis数据库来存储session的id,这样我的php程序得改成不读取本地session,而去读取redis中的session数据。可以实现跨域的session,不用担心分布式带来的session问题。
同时redis可以用作存储用户数据,例如微博id,生成图片路径等等信息,并发性要比mysql高得多。
为了解决redis单点故障,我添加了一个从redis数据库实时和主redis数据库进行同步,若是主数据库挂了,可以用从数据库来顶替。
请求负载均衡拓扑图1.jpg

但是这个网站每台机器上都会生成各自的图片,而这些图片需要在网站上显示,这样的话存在一个问题:
某个用户是通过DNS只能请求到一台机器上(VM3)上,那么在网站上出现的VM2,VM4,VM5的图片就无法显示了。
我冥思苦想,想到了一个好办法:就是利用nginx的proxy模块来实现:
1)VM2上由程序生成的每一张的图片都存在目录(10.200.225.158--VM2的内网ip)下,VM3上由程序生成的每一张的图片都存在目录(10.200.226.56)下...
2) 这样VM2下的图片路径就是http://www.a.com/10.200.225.158/xxx.jpg,VM3下的图片就是http://www.a.com/10.200.226.56/xxx.jpg
3)我VM2上的nginx上配置使得:
    3.1)当用户被DNS解析到VM2上时,若URL是http://www.a.com/10.200.225.158/xxx.jpg时就直接读取本地图片
    3.2)当用户被DNS解析到VM2上时,若URL是http://www.a.com/10.200.226.56/xxx.jpg时就通过VM2代理读取远程的VM3上的图片
    3.3)当用户被DNS解析到VM2上时,若URL是http://www.a.com/10.200.55.39/xxx.jpg时就通过VM2代理读取远程的VM4上的图片
    3.4)当用户被DNS解析到VM2上时,若URL是http://www.a.com/110.200.51.143/xxx.jpg时就通过VM2代理读取远程的VM5上的图片
请求负载均衡拓扑图2.jpg
也就是说当www.a.com解析到vm2,若是要显示vm3上生成的图片的话,得通过vm2的代理去获取,由于我设置的代理的ip都是内网的,因此不占用外网ip的网络资源,不影响用户的访问速度。  


vm2的nginx配置文件如下
  1. location /10.200.226.56 {
  2.              root    /opt/tmp/;
  3.              proxy_redirect off ;
  4.              proxy_set_header Host $host;
  5.              proxy_set_header X-Real-IP $remote_addr;
  6.              proxy_set_header REMOTE-HOST $remote_addr;
  7.              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  8.              client_max_body_size 50m;
  9.              client_body_buffer_size 256k;
  10.              proxy_connect_timeout 30;
  11.              proxy_send_timeout 30;
  12.              proxy_read_timeout 60;
  13.              proxy_buffer_size 256k;
  14.              proxy_buffers 4 256k;
  15.              proxy_busy_buffers_size 256k;
  16.              proxy_temp_file_write_size 256k;
  17.              proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
  18.              proxy_max_temp_file_size 128m;
  19.              proxy_pass    http://10.200.226.56:80;
  20.             
  21. }

  22. location /10.200.55.39 {
  23.              root    /opt/tmp/;
  24.              proxy_redirect off ;
  25.              proxy_set_header Host $host;
  26.              proxy_set_header X-Real-IP $remote_addr;
  27.              proxy_set_header REMOTE-HOST $remote_addr;
  28.              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  29.              client_max_body_size 50m;
  30.              client_body_buffer_size 256k;
  31.              proxy_connect_timeout 30;
  32.              proxy_send_timeout 30;
  33.              proxy_read_timeout 60;
  34.              proxy_buffer_size 256k;
  35.              proxy_buffers 4 256k;
  36.              proxy_busy_buffers_size 256k;
  37.              proxy_temp_file_write_size 256k;
  38.              proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
  39.              proxy_max_temp_file_size 128m;
  40.              proxy_pass    http://10.200.55.39:80;
  41.             
  42. }
  43. location /10.200.51.143 {
  44.              root    /opt/tmp/;
  45.              proxy_redirect off ;
  46.              proxy_set_header Host $host;
  47.              proxy_set_header X-Real-IP $remote_addr;
  48.              proxy_set_header REMOTE-HOST $remote_addr;
  49.              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  50.              client_max_body_size 50m;
  51.              client_body_buffer_size 256k;
  52.              proxy_connect_timeout 30;
  53.              proxy_send_timeout 30;
  54.              proxy_read_timeout 60;
  55.              proxy_buffer_size 256k;
  56.              proxy_buffers 4 256k;
  57.              proxy_busy_buffers_size 256k;
  58.              proxy_temp_file_write_size 256k;
  59.              proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
  60.              proxy_max_temp_file_size 128m;
  61.              proxy_pass    http://10.200.51.143:80;
  62.             
  63. }

  64. location ~ \.php$ {
  65.            fastcgi_pass   127.0.0.1:9000;
  66.            fastcgi_index  index.php;
  67.            fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
  68.            include        fastcgi_params;
  69. }
复制代码

论坛徽章:
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-13 00:41 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2012-10-13 20:41 |显示全部楼层
最简单的DNS轮询到2台LVS的VIP上
一般这是OK的,而且是机器少
如果负载都要很多,那可不是小公司哦

论坛徽章:
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-14 10:23 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2012-10-14 22:02 |显示全部楼层
回复 16# yuhongchun

占位不交钱的IDC··········换吧

只是前端负载2台就够了
应用的负载看业务量呗

   

论坛徽章:
0
发表于 2012-10-15 10:04 |显示全部楼层
dns +haproxy比较经典的负载均衡组合。

论坛徽章:
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-15 16:40 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2012-10-15 17:55 |显示全部楼层
本来是节约成本,好家伙一个F5上来了 ~回复 9# zhaopingzi


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

基于案例的 SQL 优化实战训练营

讲师:中电福富特级专家梁敬彬,参与本次课程培训,你将收获:
1. 能编写出较为高效的 SQL;
2. 能解决70%以上的数据库常见优化问题;
3. 能得到老师提供的高效的相关工具和解决方案;
4. 能举一反三,收获不仅仅是 SQL 优化。
现在购票享受8.8折优惠!
----------------------------------------
优惠时间:2019年3月20日前

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP