Amoeba变形虫(阿米巴)入门级代理服务器
Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单)。
搭建步骤
1配置jdk环境
上传jdk
解压jdk
配置环境变量:vim /etc/profile
4.重写加载 source /etc/profile(手动刷新环境变量-没报任何错就是配置好了)
2安装Amoeba
[root@localhost src]# ls
amoeba-mysql-3.0.4-BETA.tar.gz java
[root@localhost src]# tar -xvf amoeba-mysql-3.0.4-BETA.tar.gz
[root@localhost src]# ls
amoeba-mysql-3.0.4-BETA amoeba-mysql-3.0.4-BETA.tar.gz java
[root@localhost src]# rm amoeba-mysql-3.0.4-BETA.tar.gz
rm: remove regular file `amoeba-mysql-3.0.4-BETA.tar.gz'? y
[root@localhost src]# mv amoeba-mysql-3.0.4-BETA amoeba
[root@localhost src]# ls
amoeba java
[root@localhost src]# cd amoeba/
[root@localhost amoeba]# ls
benchmark bin conf jvm.properties lib
[root@localhost amoeba]# cd conf
[root@localhost conf]# ls
access_list.conf dbserver.dtd functionMap.xml rule.dtd
amoeba.dtd dbServers.xml log4j.dtd ruleFunctionMap.xml
amoeba.xml function.dtd log4j.xml rule.xml
更改dbServer
connectionManager连接管理器
sendBufferSize缓冲区大小
maxActive最大活跃数量
minIdle最小活跃数量
3306
定义公共连接端口
修改如下配置
root
root
192.168.161.132
192.168.161.133
1
slave01,master,slave01
完整版
${defaultManager}
64
128
3306
test
root
root
500
500
1
600000
600000
true
true
true
192.168.161.132
192.168.161.133
1
slave01,master,slave01
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.161.134:8066/jtdb2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
jdbc.username=root
jdbc.password=123456
amoeba.xml
root
root
${amoeba.home}/conf/access_list.conf
放开
server1
server1
修改
master
multiPool
完整版
8066
128
64
root
root
${amoeba.home}/conf/access_list.conf
128
500
60
com.meidusa.toolkit.net.AuthingableConnectionManager
${amoeba.home}/conf/dbServers.xml
${amoeba.home}/conf/rule.xml
${amoeba.home}/conf/ruleFunctionMap.xml
${amoeba.home}/conf/functionMap.xml
1500
multiPool
master
multiPool
true
修改jvm内存
jvm.properties
# JVM相关的参数,包括内存配置、垃圾回收策略
JVM_OPTIONS="-server -Xms256m -Xmx1024m -Xss196k -XX:PermSize=16m -XX:MaxPermSize=96m"
完整版
# app名字
APP_NAME=Amoeba-MySQL
# app版本号
APP_VERSION=3.0.0-beta
# 日志输出路径,log4j中可引用参数 ${project.output}
APP_OUTPUT_PATH=$PROJECT_HOME/logs
# 应用程序的PID文件存放路径, 默认存放在: ${project.home}/${APP_NAME}.pid
#APP_PID_PATH=/temp/logs/$APP_NAME
# 控制台输出到日志文件
APP_CONSOLE_LOG=$APP_OUTPUT_PATH/console.log
# 程序相关的配置参数
#APP_OPTIONS="-DmyParam=value1 -DmyParam2=value2"
# 启动参数
#APP_ARGS="args0 "
# JVM相关的参数,包括内存配置、垃圾回收策略
JVM_OPTIONS="-server -Xms256m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"
# 应用程序忽略的信号列表,以逗号分割,程序shutdown的信号为15(可用 kill -15 pid 可让程序文明的shutdown,请不要在这儿填15)
IGNORE_SIGNALS=1,2
-Xms256m 初始内存大小256m
-Xmx1024m 最大内存 1g
-Xss196k 每个线程的大小196kb
这个要改
Amoeba对线程有要求至少需要217kb
我们取整数改成256
启动Amoeba
1关闭防火墙
benchmark.classpath launcher.bat mkdirhier
benchmark.bat launcher launcher.classpath shutdown
[root@localhost bin]# pwd
/usr/local/src/amoeba/bin
[root@localhost bin]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
[root@localhost bin]# ./launcher
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.161.134:8066/jtdb2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
jdbc.username=root
jdbc.password=root
http://localhost:8091/index