【产品名称】
obproxy
【产品版本】
3.2.0
【问题描述】
使用 OBD部署 单节点集群后,首次启动集群(初始化)后,通过 yaml中设置的密码(obproxy_sys_password)连接 obproxy的proxysys租户正常;当停止并再次启动集群后,通过yaml中设置的密码(obproxy_sys_password)再次连接obproxy的proxysys租户时,一直提示验证失败问题;(注:后面不管停止、启动多少次集群,现象均存在),但通过obproxy连接observer一直是正常的。
下面将排查过程做一些记录(大概找出原因所在,但未找到是什么原因造成?),按操作时间顺序:
OBD部署完成单节点集群 obce-single2
yaml 文件中,关于 obproxy_sys_password 的密码设置:
[admin@obproxy01 ~]$ cat single9.yaml | grep obproxy_sys_password obproxy_sys_password: rootpwd123 [admin@obproxy01 ~]$
1、首次启动集群 obce-single2
[admin@obproxy01 ~]$ obd cluster start obce-single2 Get local repositories and plugins ok … obce-single2 running [admin@obproxy01 ~]$
2、连接 obproxy 测试
使用yaml中设置的密码: obproxy_sys_password = rootpwd123 ,连接正常,如下:
[admin@obproxy01 ~]$ obclient -h192.168.111.9 -uroot@proxysys -P2883 -prootpwd123 Welcome to the OceanBase. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.6.25 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement. MySQL [(none)]>
3、查看 obproxy 的配置文件
配置文件: /home/admin/obproxy/etc
首次初始化并启动后,配置文件中记录的obproxy_sys_password加密后的密码:obproxy_sys_password**=5e013b7a4fda3f33e725b96173a4dbf331e8889f ** 该密码是预期的密码;
[admin@localhost obproxy]$ strings etc/obproxy_config.bin | grep sys Eobserver_sys_password1= observer_sys_password=68a15da0cadb03262670c17a2de565478b713b0d obproxy_sys_password=5e013b7a4fda3f33e725b96173a4dbf331e8889f skip_proxy_sys_private_check=True syslog_level=INFO
以下是该目录下,另一个旧配置文件的输出:(注意:obproxy_sys_password的密码)
[admin@localhost obproxy]$该[admin@localhost obproxy]$ strings etc/obproxy_config.bin.old | grep sys observer_sys_password1= observer_sys_password=68a15da0cadb03262670c17a2de565478b713b0d obproxy_sys_password=e3fd448c516073714189b57233c9cf428ccb1bed skip_proxy_sys_private_check=True syslog_level=INFO
4、查看 obproxy 中 proxysys 租户中的参数值设置
可以看出: obproxy_sys_password 的密码值 与 /home/admin/obproxy/etc/obproxy_config.bin 中是一致的;
MySQL [(none)]> show proxyconfig like ‘%_sys%’ → ; ±-----------------------------±-----------------------------------------±-------------------------------±------------±--------------+ | name | value | info | need_reboot | visible_level | ±-----------------------------±-----------------------------------------±-------------------------------±------------±--------------+ | observer_sys_password1 | | password for observer sys user | false | SYS | | observer_sys_password | 68a15da0cadb03262670c17a2de565478b713b0d | password for observer sys user | false | SYS | | obproxy_sys_password | 5e013b7a4fda3f33e725b96173a4dbf331e8889f | password for obproxy sys user | false | SYS | | skip_proxy_sys_private_check | True | skip_proxy_sys_private_check | false | USER | ±-----------------------------±-----------------------------------------±-------------------------------±------------±--------------+ 4 rows in set (0.004 sec)
5、查看首次启动过程中 obproxy 的日志输出
日志文件:/home/admin/obproxy/log/obproxy.log
整个启动过程中,做了几次的 ob_proxy_main.cpp:480 [11903][Y0-0] [lt=7] [dc=0] has no inherited sockets, start new obproxy … 操作,其中有记录了 obproxy_sys_password 的值, e3fd448c516073714189b57233c9cf428ccb1bed 和 5e013b7a4fda3f33e725b96173a4dbf331e8889f 两个值均有出现,最终以 5e013b7a4fda3f33e725b96173a4dbf331e8889f 更新至配置 /home/admin/obproxy/etc/obproxy_config.bin 中
(篇幅限制—输出略,可以看附件中的日志)
6、停止集群,再启动集群 obce-single2
[admin@obproxy01 ~]$ obd cluster stop obce-single2 … 输出—略 [admin@obproxy01 ~]$ obd cluster start obce-single2 …输出—略
7、连接 obproxy 测试 — 报错
[admin@obproxy01 ~]$ obclient -h192.168.111.9 -uroot@proxysys -P2883 -prootpwd123 ERROR 2013 (HY000): Lost connection to MySQL server at ‘reading authorization packet’, system error: 11 [admin@obproxy01 ~]$
8、查看obproxy的配置文件
配置文件中 obproxy**_sys_**password 的密码已经被修改为:e3fd448c516073714189b57233c9cf428ccb1bed
[admin@localhost obproxy]$ strings etc/obproxy_config.bin | grep sys observer_sys_password1= observer_sys_password=68a15da0cadb03262670c17a2de565478b713b0d obproxy_sys_password=e3fd448c516073714189b57233c9cf428ccb1bed skip_proxy_sys_private_check=True syslog_level=INFO [admin@localhost obproxy]$
9、查看 obproxy 启动的日志文件
整个启动过程中,做了几次的 ob_proxy_main.cpp:480 [11903][Y0-0] [lt=7] [dc=0] has no inherited sockets, start new obproxy … 操作,
其中有记录了 obproxy_sys_password 的值, e3fd448c516073714189b57233c9cf428ccb1bed 和 5e013b7a4fda3f33e725b96173a4dbf331e8889f 两个值均有出现,最先一次以 5e013b7a4fda3f33e725b96173a4dbf331e8889f 读取(预期行为),但最终以e3fd448c516073714189b57233c9cf428ccb1bed 更新至配置 /home/admin/obproxy/etc/obproxy_config.bin 中
**疑问:**奇怪的是,在启动时做 ob_proxy_main.cpp:480 [11903][Y0-0] [lt=7] [dc=0] has no inherited sockets, start new obproxy … 操作时,都会默认带参数: argv[1]="-o", argv[2]=“obproxy_sys_password=e3fd448c516073714189b57233c9cf428ccb1bed”, … 看日志,也从配置文件中读取了正确的值5e013b7a4fda3f33e725b96173a4dbf331e8889f ,但接着又被更新成了 e3fd448c516073714189b57233c9cf428ccb1bed ;
从OBD 启动集群(启动obproxy步骤)的日志,如下:(启动命令中指定了obproxy**_sys_**password 的值,为啥? 这里的值是从哪里获取的? )
[2022-04-30 15:30:35] [52223bba-c857-11ec-abb6-00505692ecfa] [INFO] Start obproxy … [2022-04-30 15:30:35] [52223bba-c857-11ec-abb6-00505692ecfa] [DEBUG] – starting 192.168.111.9 obproxy [2022-04-30 15:30:35] [52223bba-c857-11ec-abb6-00505692ecfa] [DEBUG] – admin@192.168.111.9 set env LD_LIBRARY_PATH to ‘/home/admin/obproxy/lib:’ [2022-04-30 15:30:35] [52223bba-c857-11ec-abb6-00505692ecfa] [DEBUG] – admin@192.168.111.9 execute: cd /home/admin/obproxy; /home/admin/obproxy/bin/obproxy -o obproxy_sys_password=e3fd448c516073714189b57233c9cf428ccb1bed --listen_port 2883 --prometheus_listen_port 2884 --rs_list ‘192.168.111.9:2881’ --cluster_name ‘obce-single2’ [2022-04-30 15:30:35] [52223bba-c857-11ec-abb6-00505692ecfa] [DEBUG] – exited code 0 [2022-04-30 15:30:35] [52223bba-c857-11ec-abb6-00505692ecfa] [DEBUG] – admin@192.168.111.9 set env LD_LIBRARY_PATH to ‘’ [2022-04-30 15:30:35] [52223bba-c857-11ec-abb6-00505692ecfa] [DEBUG] – admin@192.168.111.9 execute: ps -aux | grep -e ‘/home/admin/obproxy/bin/obproxy -o obproxy_sys_password=e3fd448c516073714189b57233c9cf428ccb1bed --listen_port 2883 --prometheus_listen_port 2884 --rs_list 192.168.111.9:2881 --cluster_name obce-single2$’ | grep -v grep | awk ‘{print $2}’ > /home/admin/obproxy/run/obproxy-192.168.111.9-2883.pid [2022-04-30 15:30:35] [52223bba-c857-11ec-abb6-00505692ecfa] [DEBUG] – exited code 0 [2022-04-30 15:30:35] [52223bba-c857-11ec-abb6-00505692ecfa] [INFO] obproxy program health check
10、其他说明:
1)如果直接修改/home/admin/obproxy/etc/obproxy_config.bin 中的 obproxy_sys_password 的值(即使修改正确了),但在启动时,该文件会被 obproxy进程更新;
2)从多次测试来看,obproxy_sys_password=e3fd448c516073714189b57233c9cf428ccb1bed 的值像是在哪里写死的。
3)后续不管重启多少次集群,obproxy_sys_password 的密码均被设置为:e3fd448c516073714189b57233c9cf428ccb1bed
以上为排查过程,由于 obproxy_sys_password 密码被修改了,所以无法使用 yaml 配置文件中的密码连接 obproxy 的proxysys租户。 表象原因找到了,那该原因的根本之处在哪? 望各位大神 帮忙解释一下,谢谢;
log.zip (176350 KB)