Rumah >pangkalan data >tutorial mysql > 基于amoeba+keepalived+mmm实现mysql读写分离高可用架构

基于amoeba+keepalived+mmm实现mysql读写分离高可用架构

WBOY
WBOYasal
2016-06-07 17:37:28767semak imbas

更多博文请关注:没有伞的孩子必须努力奔跑(www.xuchanggang.cn)在上一篇已经通过mysql-mmm实现对mysql数据库的动态监控,这一篇我们将结合amoeba实现对数据库访

1.将需要的包传送到服务器并解压[我这里默认安装包已经上传到服务器家目录]

# 在192.168.1.112/192.168.1.113上分别解压如下几个包 [root@client112 ~]# tar -xf keepalived-1.2.9.tar.gz [root@client112 ~]# tar -xf jdk-7u15-linux-x64.tar.gz -C /usr/local/ # 在192.168.1.113 [root@client113 ~]# tar -xf keepalived-1.2.9.tar.gz [root@client113 ~]# tar -xf jdk-7u15-linux-x64.tar.gz -C /usr/local/

2.分别到192.168.1.112/192.168.1.113上配置java环境[这里只演示在112上的操作,113上重复此操作即可]

[root@client112 ~]# cd /usr/local/ [root@client112 local]# mkdir java # 将解压出来的内容移到java目录 [root@client112 local]# mv jdk1.7.0_15/* java # 设置java环境变量 [root@client112 local]# echo $JAVA_HOME [root@client112 local]# vim /etc/profile # 在末尾添加 JAVA_HOME=/usr/local/java AMOEBA_HOME=/usr/local/amoeba export PATH=$PATH:$AMOEBA_HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin # 使变量生效 [root@centos local]# source /etc/profile

3.分别到192.168.1.112/192.168.1.113上配置amoeba[这里只演示在112上的操作,113上重复此操作即可]

(1).配置amoeba中的dbServer.xml(后端mysql 服务器连接配置)

# 建立相应amoeba目录 [root@client112 local]# mkdir /usr/local/amoeba # 将压缩包解压到指定目录 [root@client112 local]# tar -xf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba [root@client112 local]# cd /usr/local/amoeba/ [root@client112 local]# cd conf/ # 配置后端mysql 服务器连接[dbServer.xml] [root@client112 conf]# vim dbServers.xml .........................(省略) ${defaultManager} 64 128 # 设置 mysql 数据库的端口 3306 # 设置缺省的数据库,当连接amoeba时,操作表必须显式的指定数据库名,即采用dbname.tablename的方式, # 不支持 use dbname指定缺省库,,因为操作会调度到各个后端dbserver kongzhong # 设置amoeba连接后端数据库服务器的账号和密码,需在后端数据库器上创建该用户,并授权amoeba连接 # 此处需要特别注意:**** 密码默认是注释掉,需要去掉注释!!! kongzhong kongzhong # 最大连接数[默认] 500 # 最大空闲连接数[默认] 500 10 600000 600000 true true true # 设置一个后端的dbServer,名为master ,这个可以随便取,但是为了明确其含义,最好给予特殊含义的单词 # 下面指定的数据库IP地址,为mmm提供给对外访问的虚拟IP地址 192.168.1.12 192.168.1.13 192.168.1.14 192.168.1.15 192.168.1.16 # 指定一个虚拟的dbServer,将上面定义的dbserver加入这个虚拟的dbserver,相当于组成一个组[这里我们将读的数据库组成一个组] # 这里 需要将 改成自己想要取的名字,这个名字也需要有含义,后面会用到 # 选择调度算法 1 是轮询 2 是权重 3 是HA 这里选择1 轮询 1 # 负载均衡,slave1,slave2当成2个服务器进行调度,这模拟量加权的调度算法。 # 注意这里使用的dbserver必须是已经定义了的,可以写多个,如slave1,slave2 slave1,slave2,slave3,slave4


(2).配置 Amoeba 监听端口[amoeba.xml]

[root@client112 conf]# vim amoeba.xml .........................(省略) # 设置amoeba监听的端口(这里如果默认,后面测试需要指定端口,就是这里的端口) 3306 .........................(省略) # 提供客户端连接amoeba时需要使用这里设定的账号 (这里的账号密码和amoeba连接后端数据库服务器的密码无关) kongzhong123 # 提供客户端连接amoeba时需要使用这里设定的密码 kongzhong123 ${amoeba.home}/conf/access_list.conf .........................(省略) ${amoeba.home}/conf/rule.xml ${amoeba.home}/conf/ruleFunctionMap.xml ${amoeba.home}/conf/functionMap.xml 1500 master # 把默认注释掉的读写分离选项,把注释去掉并readpool修改成virtualslave(这个名字,我们前面在dbServer.xml里设置一个读数据库组,这里是作为只读池) master virtualslave true
Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn