Atlas安装与部署

DerSilvia 8年前

来自: http://my.oschina.net/blogcharles/blog/624802


1.简介

Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。同时,有超过50家公司在生产环境中部署了Atlas。
主要功能:
1. 读写分离
2. 从库负载均衡
3. IP过滤
4. 自动分表
5. DBA可平滑上下线DB
6. 自动摘除宕机的DB

2.CENTOS下安装ATLAS

https://github.com/Qihoo360/Atlas/releases 页面下载最新版RPM包,然后执行:

 sudo rpm –i Atlas-XX.el6.x86_64.rpm

安装。

注意事项:

(1).Atlas只能安装运行在64位的系统上。
(2).Centos 5.X安装 Atlas-XX.el5.x86_64.rpm,Centos 6.X安装Atlas-XX.el6.x86_64.rpm。
(3).如果执行

 sudo rpm –i Atlas-XX.el6.x86_64.rpm

 提示类似:“file /usr/local/mysql-proxy/bin/encrypt from install of
Atlas-2.0.1-1.x86_64 conflicts with file from package Atlas-1.0.3-1.x86_64”错误,则表示该系统之前已经安装过Atlas-1.0.3-1.x86_64,需要执行

 sudo rpm –e Atlas-1.0.3-1.x86_64

将之前安装的Atlas删除掉,再执行

 sudo rpm –i Atlas-XX.el6.x86_64.rpm

安装新版本的Atlas。
(4).后端mysql版本应大于5.1,建议使用Mysql 5.6

 

配置文件修改


Atlas运行需要依赖一个配置文件(test.cnf)。在运行Atlas之前,需要对该文件进行配置。Atlas的安装目录是/usr/local/mysql-proxy,进入安装目录下的conf目录,可以看到已经有一个名为test.cnf的默认配置文件,我们只需要修改里面的某些配置项,不需要从头写一个配置文件。
1.配置范例及说明如下:
[mysql-proxy]
(必备,默认值即可)管理接口的用户名,PS:并不是数据库用户名
admin-username = cekom
(必备,默认值即可)管理接口的密码
admin-password = 123456
(必备,根据实际情况配置)主库的IP和端口
proxy-backend-addresses = 172.16.20.212:3306
(非必备,根据实际情况配置)从库的IP和端口,@后面的数字代表权重,用来作负载均衡,若省略则默认为1,可设置多项,用逗号分隔。如果想让主库也能分担读请求的话,只需要将主库信息加入到下面的配置项中。
proxy-read-only-backend-addresses=172.16.20.240:3306
(必备,根据实际情况配置)用户名与其对应的加密过的MySQL密码,密码使用PREFIX/bin目录下的加密程序encrypt加密,用户名与密码之间用冒号分隔。主从数据库上需要先创建该用户并设置密码(用户名和密码在主从数据库上要一致)。

比如用户名为myuser,密码为mypwd,执行./encrypt mypwd结果为HJBoxfRsjeI 操作所在目录:/usr/local/mysql-proxy/
如果有多个用户用逗号分隔即可。则设置如下行所示:
pwds = myuser: HJBoxfRsjeI=,myuser2:HJBoxfRsjeI=
Atlas原理为进行代理端的校验通过后将密码发送至后端mysql数据库
(必备,默认值即可)Atlas的运行方式,设为true时为守护进程方式,设为false时为前台方式,一般开发调试时设为false,线上运行时设为true
daemon = true
(必备,默认值即可)设置Atlas的运行方式,设为true时Atlas会启动两个进程,一个为monitor,一个为worker,monitor在worker意外退出后会自动将其重启,设为false时只有worker,没有monitor,一般开发调试时设为false,线上运行时设为true
keepalive = true
(必备,根据实际情况配置)工作线程数,若单机只运行Atlas推荐设置成系统的CPU核数的2至4倍
event-threads = 4
(必备,默认值即可)日志级别,分为message、warning、critical、error、debug五个级别,推荐设置成debug,能查看完整的调试信息
log-level = message
(必备,默认值即可)日志存放的路径
log-path = /usr/local/mysql-proxy/log
(必备,根据实际情况配置)SQL日志的开关,可设置为OFF、ON、REALTIME,OFF代表不记录SQL日志,ON代表记录SQL日志,该模式下日志刷新是基于缓冲区的,当日志填满缓冲区后,才将日志信息刷到磁盘。REALTIME用于调试,代表记录SQL日志且实时写入磁盘,默认为OFF,生产环境中最好设置为ON便于查找执行SQL
sql-log = ON
(可选项,可不设置)慢日志输出设置。当设置了该参数时,则日志只输出执行时间超过sql-log-slow(单位:ms)的日志记录。不设置该参数则输出全部日志。
sql-log-slow = 10
(可选项,可不设置)关闭不活跃的客户端连接设置。当设置了该参数时,Atlas会主动关闭经过'wait-timeout'时间后一直未活跃的连接。单位:秒
wait-timeout = 10
(可选项,可不设置)实例名称,用于同一台机器上多个Atlas实例间的区分
instance = test
(必备,默认值即可)Atlas监听的工作接口IP和端口
proxy-address = 0.0.0.0:6033
(必备,默认值即可)Atlas监听的管理接口IP和端口
admin-address = 0.0.0.0:2345
(可选项,可不设置)分表设置,此例中person为库名,mt为表名,id为分表字段,3为子表数量,可设置多项,以逗号分隔,若不分表则不需要设置该项,子表需要事先建好,子表名称为表名_数字,数字范围为[0,子表数-1],如本例里,子表名称为mt_0、mt_1、mt_2
tables = person.mt.id.3
(可选项,可不设置)默认字符集,若不设置该项,则默认字符集为latin1,最好设置为与数据库字符集相同的编码如:UTF-8出现乱码
charset = utf8
(可选项,可不设置)允许连接Atlas的客户端的IP,可以是精确IP,也可以是IP段,以逗号分隔,若不设置该项则允许所有IP连接,否则只允许列表中的IP连接,生产环境中必须设置为应用机IP进行安全隔离
client-ips = 127.0.0.1, 192.168.1
(可选项,极少需要)Atlas前面挂接的LVS的物理网卡的IP(注意不是虚IP),若有LVS且设置了client-ips则此项必须设置,否则可以不设置
lvs-ips = 192.168.1.1
 

性能配置说明

以下配置参数对性能和正常运行起到重要作用,需要正确设置。
event-threads项设置,过小无法充分发挥多核CPU的性能,过大造成不必要的线程切换开销,推荐设置为CPU的核数。

 

以下几项可以设置,也可以使用默认值,区别不大。
(1)Atlas的工作端口
proxy-address项配置,例如proxy-address = 0.0.0.0:6033代表客户端应该使用6033这个端口连接Atlas来发送SQL请求。
(2)Atlas的管理端口
admin-address项配置,例如admin-address = 0.0.0.0:2345代表DBA应该使用2345这个端口连接Atlas来执行运维管理操作。
(3)管理接口的用户名和密码
admin-username项和admin-password项设置,这两项是用来进入Atlas的管理界面的,与后端连接的MySQL没有关系,所以可以任意设置,不需要MySQL在配置上做任何改动。

Atlas安装后检测

启动命令:

 ./bin/mysql-proxyd test start

注test为实例名称,当conf文件夹下只有一个配置文件时与配置文件名称相同,若conf文件夹下有两个.cnf文件时需要指定实例名称

利用

 ps –ef | grep  mysql-proxy

获取进程状态