免费注册 查看新帖 |

Chinaunix

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

[网络管理] 沙龙讨论: 如何用开源技术搞定负载均衡、访问加速(内网/外网)?(主题聚会召集9.20) [复制链接]

论坛徽章:
0
发表于 2008-07-25 09:38 |显示全部楼层

跟进

跟进跟进跟进跟进跟进跟进

论坛徽章:
0
发表于 2008-07-25 09:41 |显示全部楼层
MySQL Proxy快速实现读写分离以及负载均衡  http://imysql.cn/2008_04_23_quick_startup_with_mysql_proxy

1. 安装
下载已经编译好的安装包,或者预编译安装包均可,在这里,使用预编译版本。

[@s1.yejr.com ~]# tar zxf mysql-proxy-0.6.0-linux-rhas4-x86.tar.gz

[@s1.yejr.com ~]# cd mysql-proxy-0.6.0-linux-rhas4-x86

#可以看到有2个目录
[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# ls
sbin  share

[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# mv sbin/mysql-proxy /usr/local/sbin/

[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# ls share
mysql-proxy         tutorial-constants.lua  tutorial-packets.lua     tutorial-rewrite.lua  tutorial-warnings.lua
tutorial-basic.lua  tutorial-inject.lua     tutorial-query-time.lua  tutorial-states.lua

#将lua脚本放到/usr/local/share下,以备他用
[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# mv share/mysql-proxy /usr/local/share/

#删除符号连接等垃圾代码
[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# strip /usr/local/sbin/mysql-proxy

2. 启动
编译一下启动管理脚本:

[@s1.yejr.com ~]# vi /etc/init.d/mysql-proxy

#!/bin/sh
export LUA_PATH=/usr/local/share/mysql-proxy/?.lua

mode=$1
if [ -z "$mode" ] ; then
  mode="start"
fi

case $mode in
  'start')
    mysql-proxy --daemon \
--admin-address=:4401 \
--proxy-address=:3307 \
--proxy-backend-addresses=:3306 \
--proxy-read-only-backend-addresses=192.168.133.232:3306 \
--proxy-read-only-backend-addresses=10.10.74.61:3306 \
--proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua
    ;;

  'stop')
    killall mysql-proxy
    ;;

  'restart')
    if $0 stop ; then
      $0 start
    else
      echo  "retart failed!!!"
      exit 1
    fi
    ;;
esac
exit 0

现在解释一下启动脚本:
--daemon 采用daemon方式启动
--admin-address=:4401 指定mysql proxy的管理端口,在这里,表示本机的4401端口
--proxy-address=:3307 指定mysql proxy的监听端口,也可以用 127.0.0.1:3307 表示
--proxy-backend-addresses=:3306 指定mysql主机的端口
--proxy-read-only-backend-addresses=192.168.1.1:3306 指定只读的mysql主机端口
--proxy-read-only-backend-addresses=192.168.1.2:3306 指定另一个只读的mysql主机端口
--proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua 指定lua脚本,在这里,使用的是rw-splitting脚本,用于读写分离

完整的参数可以运行以下命令查看:

mysql-proxy --help-all

运行以下命令启动/停止/重启mysql proxy:

[@s1.yejr.com ~]# /etc/init.d/mysql-proxy start

[@s1.yejr.com ~]# /etc/init.d/mysql-proxy stop

[@s1.yejr.com ~]# /etc/init.d/mysql-proxy restart

3. 试用

[@s1.yejr.com ~]# mysql -h127.0.0.1 -uroot -P3307

mysql> show processlist;
+-------+------+----------------+------+---------+------+-------+------------------+
| Id    | User | Host           | db   | Command | Time | State | Info             |
+-------+------+----------------+------+---------+------+-------+------------------+
| 30052 | root | localhost:9656 | NULL | Query   |    0 | NULL  | show processlist |
+-------+------+----------------+------+---------+------+-------+------------------+

可以看到,产生了一个新连接。

用sysbench测试一下,看会不会挂掉:

[@s1.yejr.com ~]# sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 \
--mysql-socket=/tmp/mysql.sock --mysql-user=root --mysql-db=test prepare

[@s1.yejr.com ~]# sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 \
--mysql-socket=/tmp/mysql.sock --mysql-user=root --mysql-db=test run
.........
.........
Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   23.0387/0.00

还好,没给大家丢脸,剩下的测试自己完成吧

4. 其他
mysql proxy还可以实现连接池的功能,这在很多LAMP开发中是软肋,因此,有了mysql proxy,就可以不用再担心连接数超限的问题了。
如果使用rw-splitting.lua脚本的话,最好修改以下2个参数的默认值:

min_idle_connections = 1
max_idle_connections = 3


MySQL Cluster(MySQL 集群) 初试
MySQL 同步/复制
[MySQL 6.0 体验] 集群(cluster)+复制(replicate) -- 集群下的复制


这是我网站上比较好的mysql相关系列,大家可以看看,具体内容就不转帖过来了

[ 本帖最后由 yejr 于 2008-7-25 18:43 编辑 ]

论坛徽章:
5
CU十周年纪念徽章
日期:2012-02-28 22:08:51CU大牛徽章
日期:2012-02-28 22:08:512010年中国数据库技术大会
日期:2012-02-28 22:05:302009年中国系统架构师大会
日期:2012-02-28 22:05:30ChinaUnix元老
日期:2012-02-28 22:26:02
发表于 2008-07-25 09:56 |显示全部楼层
原帖由 yejr 于 2008-7-25 09:37 发表
Nginx 初试   http://imysql.cn/2007_08_22_nginx

搭建高效、可靠、稳定的WEB服务器   http://imysql.cn/node/208

这是我之前工作中总结出来的,欢迎拍砖



请不要 在这个讨论中, 采用 类似的 其他网站的广告链接,大家都这样做,本次讨论就没法集中,没有太大意义了,
请大家注意一下,

Nginx 初试   http://imysql.cn/2007_08_22_nginx

搭建高效、可靠、稳定的WEB服务器   http://imysql.cn/node/208

这是我之前工作中总结出来的,欢迎拍砖

论坛徽章:
0
发表于 2008-07-25 10:04 |显示全部楼层
原帖由 net_robber 于 2008-7-24 16:29 发表
我提个问题

分布式运算 和 分布式存储 算不算 负载均衡

或者 上面三种是并列的三个问题?



上面应该也算负载均衡吧.

我的理解,负载均衡就是从结构上提高应用的高可用性,从结构上做到最佳性能.


不能只是想着WEB前端的调度HA之类的.

要从总体上是必须一个单点的出现.从而做到一个稳定的架构.

[ 本帖最后由 Coolriver 于 2008-7-25 10:33 编辑 ]

论坛徽章:
0
发表于 2008-07-25 10:28 |显示全部楼层
原帖由 terraner 于 2008-7-25 08:56 发表



一些问题:

大网站一般应该有多台服务器作负载均衡吧。那生成的静态叶面还要放到所有服务器上去? 还是只放一台?

如果放所有的服务器,是会有很多问题吧:如文件冗余、更新麻烦等。   
   
如果 ...



呵,不要只为形式而做.
1. 多少台做负载均衡,是根据业务来定的.首先做一个业务预算,然后上线后跟综,如果负载高可以追加.
2. 动静分离可以走proxy模式.(Cache+lighttpd+Apache)之类的形式.
3. 建义放多台.按时间分目录存放或是别的机制,然后用做分发.到每个前端.

论坛徽章:
0
发表于 2008-07-25 10:32 |显示全部楼层
果然很多强人在逐步登场了
拭目以待

论坛徽章:
0
发表于 2008-07-25 10:55 |显示全部楼层
这个题目说的太大了
听完俯卧撑

论坛徽章:
0
发表于 2008-07-25 10:59 |显示全部楼层
heartbeat,saru等算不算呢?

论坛徽章:
0
发表于 2008-07-25 11:23 |显示全部楼层
这个实在是太棒了!!!!

论坛徽章:
0
发表于 2008-07-25 11:27 |显示全部楼层
负载平衡的概念对于未曾接触过的人来说还是相对抽象了一点
高手来讲一讲 通俗一点或者举个形象的例子更有助于理解
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP