关闭

mysql cluster

379人阅读 评论(0) 收藏 举报
分类:
mysql-proxy 
MySQL Proxy是一个处于你的client端和MySQL server端之间的简单程序,它可以监测、分析或改变它们的通信。它使用灵活,没有限制,常见的用途包括:负载平衡,故障、查询分析,查询过滤和修改等等。[1] 
MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤,从而实现读写分离和负载平衡。对于应用来说,MySQL Proxy是完全透明的,应用则只需要连接到MySQL Proxy的监听端口即可。当然,这样proxy机器可能成为单点失效,但完全可以使用多个proxy机器做为冗余,在应用服务器的连接池配置中配置到多个proxy的连接参数即可。 
MySQL Proxy更强大的一项功能是实现“读写分离”,基本原理是让主数据库处理事务性查询,让从库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从库。    
附mysql-proxy 的所有语法命令: 
$ mysql-proxy --help-all 
Usage: 
mysql-proxy [OPTION...] - MySQL Proxy 
Help Options: 
-?, --help Show help options 
--help-all Show all help options 
--help-admin Show options for the admin-module 
--help-proxy Show options for the proxy-module 
admin module 
--admin-address=<host:port>listening address:port of internal admin-server (default: :4041) 
proxy-module 
--proxy-address=<host:port>listening address:port of the proxy-server (default: :4040) 
--proxy-read-only-backend-addresses=<host:port>address:port of the remote slave-server (default: not set) 
--proxy-backend-addresses=<host:port>address:port of the remote backend-servers (default: 127.0.0.1:3306) 
--proxy-skip-profiling disables profiling of queries (default: enabled) 
--proxy-fix-bug-25371 fix bug #25371 (mysqld >5.1.12) for older libmysql versions 
--proxy-lua-script=<file>filename of the lua script (default: not set) 
--no-proxy Don't start proxy-server 
Application Options: 
-V, --version Show version 
--daemon Start in daemon-mode 
--pid-file=<file>PID file in case we are started as daemon 



amoeba 
概述 

Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单)。 
Amoeba相当于一个SQL请求的路由器,目的是为负载均衡、读写分离、高可用性提供机制,而不是完全实现它们。用户需要结合使用MySQL的 Replication等机制来实现副本同步等功能。amoeba对底层数据库连接管理和路由实现也采用了可插拨的机制,第三方可以开发更高级的策略类来替代作者的实现。这个程序总体上比较符合KISS的思想。 


优势 

Amoeba主要解决以下问题: 
a). 数据切分后复杂数据源整合 
b). 提供数据切分规则并降低数据切分规则给数据库带来的影响 
c). 降低数据库与客户端连接 
d). 读写分离路由 
f).支持分库,分表,事务 


不足 

a)、目前还不支持事务b)、暂时不支持存储过程(近期会支持) 
c)、不适合从amoeba导数据的场景或者对大数据量查询的query并不合适(比如一次请求返回10w以上甚至更多数据的场合) 
d)、暂时不支持分库分表,amoeba目前只做到分数据库实例,每个被切分的节点需要保持库表结构一致: 
Amoeba:阿米巴原虫 

haproxy 
简介 

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。 
HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。[1] 


安装 

tar zxvf haproxy-1.4.8.tar.gz 
cd haproxy-1.4.8 
uname -a //查看linux内核版本 
make TARGET=linux26 PREFIX=/usr/local/haproxy 
make install PREFIX=/usr/local/haproxy 


配置 

配置HAProxy Session亲缘性的三种方式 
haproxy负载均衡保持客户端和服务器Session亲缘性的三种方式: 
1 用户IP 识别 
haroxy 将用户IP经过hash计算后 指定到固定的真实服务器上(类似于nginx 的IP hash 指令) 
配置指令 balance source 
2 cookie 识别 
haproxy 将WEB服务端发送给客户端的cookie中插入(或添加加前缀)haproxy定义的后端的服务器COOKIE ID。 
配置指令例举 cookie SESSION_COOKIE insert indirect nocache 
用firebug可以观察到用户的请求头的cookie里 有类似" Cookie jsessionid=0bc588656ca05ecf7588c65f9be214f5; SESSION_COOKIE=app1" SESSION_COOKIE=app1就是haproxy添加的内容 
3 session 识别 
haproxy 将后端服务器产生的session和后端服务器标识存在haproxy中的一张表里。客户端请求时先查询这张表。 
配置指令例举 appsession JSESSIONID len 64 timeout 5h request-learn 
配置举例: 
#vi /usr/local/haproxy/haproxy.cfg 
backend COOKIE_srv 
mode http 
cookie SESSION_COOKIE insert indirect nocache 
server REALsrv_70 184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1 
server REALsrv_120 220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1 
backend SOURCE_srv 
mode http 
balance source 
server REALsrv_70 184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1 
server REALsrv_120 220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1 
backend APPSESSION_srv 
mode http 
appsession JSESSIONID len 64 timeout 5h request-learn 
server REALsrv_70 184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1 
server REALsrv_120 220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1[2] 


启动 

#启动haproxy 
/usr/local/haproxy/haproxy -f /usr/local/haproxy/haproxy.cfg 
#查看是否启动 
[zhangy@BlackGhost haproxy]$ ps -e|grep haproxy 
4859 ? 00:00:00 haproxy 
4860 ? 00:00:00 haproxy 


测试 

[root@BlackGhost haproxy]# /usr/local/bin/webbench -c 100 -t 30 http://localhost:1080/phpinfo.php 


说明 

HAProxy监听的端口是1080,代理192.168.18.2:10000,127.0.0.1:10000 
统计监听的是8888端口 http://localhost:8888/haproxy-stats
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:425426次
    • 积分:5547
    • 等级:
    • 排名:第4753名
    • 原创:54篇
    • 转载:549篇
    • 译文:1篇
    • 评论:23条
    最新评论