美文网首页
Cetus 调研

Cetus 调研

作者: 单车变摩托_0463 | 来源:发表于2018-11-13 15:52 被阅读0次

    简介

    Cetus是由C语言开发的MySQL的中间件,主要提供了一个全面的数据库访问代理功能。Cetus连接方式与MySQL基本兼容,应用程序几乎不用修改即可通过Cetus访问数据库,实现了数据库层的水平扩展和高可用。

    关键特性

    • 支持SQL读写分离
    • 支持原生MySQL协议,对客户端透明(无感知)
    • 支持状态监控
    • 支持MGR
    • 支持黑白名单
    • 支持主从延迟检测(自动切换读到主)

    针对我们关心的问题,详细说明

    • 统一接入入口,客户端可以像连接mysql一样连接到Cetus
    • 屏蔽读写分离,Cetus会解析并判断sql该转发到主库还是从库
    • 故障转移
      • 主库宕机时
        • 当主库地址配置为dns:MHA切换dns指向从库,Cetus发现到主库的连接不通,会重新解析dns,然后连接到新的uri
        • 当主库地址配置为ip:通过MHA脚本发送命令update backends到Cetus,切换主/从库地址
      • 从库宕机时,请求会被转发至另一个已配置的从库地址,当所有从库地址都不可用时,会转发到主库
      • Cetus宕机时,通过部署多台Cetus保证高可用
    • 可运维性
      • 支持管理命令(没有web页面)
      • 支持动态修改配置

    Cetus不能做哪些事

    • 不支持批量sql语句的执行
    • 不支持TLS
    • 不支持多租户
    • 单进程工作模式,建议在docker容器使用
    • 只支持linux系统
    • 不支持客户端ctl+c操作,即不支持kill query操作
    • set命令的有限支持,不支持global级别的set命令,支持部分session级别的set命令
    • sql语句的有限支持,包括以下几点:
      • 不支持将LAST_INSERT_ID 嵌套在INSERT或者其他的语句中
      • 不支持客户端的change user命令

    举例一些配置

    Cetus 共3个配置文件,包括用户配置文件(users.json)、变量处理配置文件(variables.json)和启动配置文件(proxy.conf)

    users.json

    用来配置用户登陆信息

    {
        "users":[
            {
                "user": "XXXX",
                "client_pwd":   "XXXXXX",
                "server_pwd":   "XXXXXX"}, 
                {
                "user": "XXXX",
                "client_pwd":   "XXXXXX",
                "server_pwd":   "XXXXXX"
            }
        ]
    }
    
    • user的值是用户名
    • client_pwd的值是前端登录Cetus的密码
    • server_pwd的值是Cetus登录后端的密码。

    variables.json

    用来支持会话级系统变量的设置,可以通过在variables.json配置允许发送的值和静默处理的值

    {
     "variables": [
       {
         "name": "sql_mode", # 会话级系统变量的名称
         "type": "string-csv", # 变量的类型,可以为string或string-csv逗号分隔的字符串值
         "allowed_values": # 指定允许设定的变量值,可以使用通配符*表示此变量设任意值都允许
         ["STRICT_TRANS_TABLES",
           "NO_AUTO_CREATE_USER",
           "NO_ENGINE_SUBSTITUTION"
         ]
       },
       {
         "name": "connect_timeout",
         "type": "string",
         "allowed_values": ["*"],
         "silent_values": ["10", "100"] # silent_values的值是指定静默处理的值,可以使用通配符*
       }
     ]
    }
    

    proxy.conf

    [cetus]
    # Loaded Plugins
    plugins=proxy,admin #加载的插件,读写分离插件、管理插件
    
    # Defines the number of worker processes. 
    worker-processes=4 # 工作进程数量为4
    
    # Proxy Configuration
    proxy-address=127.0.0.1:1234 # 客户端访问地址
    proxy-backend-addresses=127.0.0.1:3306 # 读写(主库)节点,可配置多个,可配置dns
    proxy-read-only-backend-addresses=127.0.0.1:3307 #只读节点,可配置多个,可配置dns
    
    # Admin Configuration 管理模块的配置
    admin-address=127.0.0.1:5678
    admin-username=admin
    admin-password=admin
    
    # Backend Configuration
    default-db=test # 默认数据库,当连接未指定db时,使用的默认数据库名称
    default-username=dbtest # 默认登陆用户名,在Proxy启动时自动创建连接使用的用户名
    
    # File and Log Configuration
    log-file=cetus.log
    log-level=debug
    

    读写分离

    proxy-address=192.168.222.175:13306
    proxy-backend-addresses=192.168.222.172:3306 
    proxy-read-only-backend-addresses=192.168.222.173:3306,192.168.222.174:3306 
    

    相关文章

      网友评论

          本文标题:Cetus 调研

          本文链接:https://www.haomeiwen.com/subject/sgdlfqtx.html