OneProxy :: 走出胜利的第一步,安装OneProxy中间件,并连接到数据库!

OneProxy目前只提供Linux x86_64平台的版本,可以到下载页面上去获得并上传到你的目标服务器,通常解压到“/usr/local”目录下。在这里我不介绍如何安装MySQL数据库,假设你已经有独立的MySQL服务器或者已经安装在OneProxy同一台机器上了。为了能顺利地进行下一步,请确保MySQL中已经创建了“test”用户(密码同为“test”),并且有“test”数据库存在,总之确保如下命令能够正常运行。

$ mysql -utest -ptest -h<host> -P3306 test -e "select now()"
+---------------------+
| now()               |
+---------------------+
| 2015-11-05 18:46:56 |
+---------------------+

然后进入到OneProxy的安装目录,在这里是“/usr/local/oneproxy”,可以用如下命令来启动OneProxy,不同的版本可能输出信息会不太一样。

$ ./oneproxy --pid-file=./oneproxy.pid
2015-11-05 18:50:52: (critical) plugin oneproxy 5.8.0 (Nov 4 2015) started
2015-11-05 18:50:52: (critical) valid config checksum = 1582984919

虽然没有配置MySQL数据库,但已经可以登录到OneProxy的管理端口(管理端口的用户名和密码可以通过参数来更改,“admin-username”表示用户名,“admin-password”表示密码,未设置就是如下的默认值)来做一些事情,比如来对“test”账号的密码进行加密,如下所示:

# ./mysql -uadmin -pOneProxy -h127.0.0.1 -P4041 -e "passwd 'test'"
+------+------------------------------------------+
| TEXT | PASSWORD                                 |
+------+------------------------------------------+
| test | 1378F6CC3A8E8A43CA388193FBED5405982FBBD3 |
+------+------------------------------------------+

加密操作也可以在命令行用“mysqlpwd”工具来完成(出于安全考虑,OneProxy中所有的密码都需要此方法加密),例如:

[root@rh4srv1 oneproxy]# bin/mysqlpwd test
1378F6CC3A8E8A43CA388193FBED5405982FBBD3

然后按“ctrl+c”来中断前面启动的OneProxy实例,这一次多加几个参数,如下所示(基本可以猜到每个参数的含义了吧):

./oneproxy --proxy-address=:3307 \
   --proxy-user-list=test/1378F6CC3A8E8A43CA388193FBED5405982FBBD3@test \
   --proxy-master-addresses=<host>:3306 \
   --pid-file=./oneproxy.pid

如果所有的信息都配置准确,OneProxy将成功连接到指定的MySQL ,并输出如下信息:

11-05 19:01:59: (critical) plugin oneproxy 5.8.0 (Nov  4 2015) started
11-05 19:01:59: (critical) valid config checksum = 1582984919
11-05 19:02:00: (critical) Ping backend (test@<host>:3306) success, mark ...

然后更改一下最前面测试MySQL是否能连接的命令里的主机名和端口,换上OneProxy中间件的地址和端口(“proxy-address”选项中指定了“3307”),就可以测试一下OneProxy是否能正常工作。

# ./mysql -utest -ptest -h127.0.0.1 -P3307 -e "select now()"
+---------------------+
| now()               |
+---------------------+
| 2015-11-05 19:07:10 |
+---------------------+

如果能的话,你可以发送更多的查询语句进行测试。接下来可以了解一下部份常用的命令行选项,更多的选项意味着更多的功能:

  1. keepalive:将OneProxy运行在后台,并且启动一个守护进程,可以在OneProxy进程意外情况下马上重起,相当于网络交换机的瞬间重起功能,只要应用能够重连OneProxy,上层业务将不会有影响。
  2. proxy-address:指定OneProxy的工作端口(用来和后端MySQL交互),默认值是“:4040”。
  3. proxy-user-list:指定允许登录OneProxy和后端MySQL的用户名及口令信息(格式: 用户名/口令@默认数据库),这个选项可以在命令行重复指定多次,以便多个用户名可以登录OneProxy。如果没有显式指定默认数据库,则会连接到“test”数据库,并不支持没有默认数据库的连接。请在配置前用MySQL客户端进行验证,保证这些信息的准确性。
  4. proxy-master-addresses:指定后端MySQL主库的地址信息(格式:IP地址:端口@组名),OneProxy可以管理多套MySQL主备集群,不同的组需要用不同的名字来进行区分。这里不要搞乱了,将没有主备关系的MySQL实例配置到同一个组中。
  5. log-file:指定日志文件,指定后所有信息将不再输出到屏幕上,而是写入文件。
  6. pid-file:指定进程ID文件,以方便在Linux的脚本中来管理OneProxy的进程,比如停止服务。

添加更多选项之后的启动脚本如下所示:

export ONEPROXY_HOME=/usr/local/oneproxy
${ONEPROXY_HOME}/oneproxy --keepalive --proxy-address=:3307 \
   --proxy-user-list=test/1378F6CC3A8E8A43CA388193FBED5405982FBBD3@test \
   --proxy-master-addresses=127.0.0.1:3306 \
   --log-file=${ONEPROXY_HOME}/oneproxy.log \
   --pid-file=${ONEPROXY_HOME}/oneproxy.pid

也要以将命令行选项写到一个配置(INI格式)文件中,然后用“defaults-file”选项来指定本置文件,对于可以重复指定的选项,在配置文件中可以在后面加序号,比如“.1”或“.2”等。

[root@rh4srv1 oneproxy]# cat proxy.conf
[oneproxy]
keepalive     = 1
event-threads = 4
log-file      = /data/oneproxy/oneproxy.log
pid-file      = /data/oneproxy/oneproxy.pid
lck-file      = /data/oneproxy/oneproxy.lck

proxy-address            = :3307
proxy-master-addresses.1 = 192.168.1.119:3306@server1

proxy-user-list          = test/956C97523BADD23B6091B09E332A77B5CBDBBEEF@test
[root@rh4srv1 oneproxy]# cat demo.sh
#/bin/bash
#
export ONEPROXY_HOME=/data/oneproxy
${ONEPROXY_HOME}/oneproxy --defaults-file=${ONEPROXY_HOME}/proxy.conf

当你需要停止OneProxy时,可以登录到管理端口(参照前面加密密码的命令)里执行“shutdown force”命令,或者找到OneProxy的进程(可以从“pid-file”选项指定的文件中获得)后,使用“kill”命令发送中断指定(格式:kill -INT 进程号)。