observer 没有在指定的 IP (local_ip) 上监听

【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】OB 4.2.0
【问题描述】清晰明确描述问题

  • 版本信息
[admin@server01 oceanbase]$ bin/observer -V
bin/observer -V
observer (OceanBase_CE 4.2.0.0)

REVISION: 100010022023081817-0bdf1c0c5674e88c5ae9a8d0ae4f8077465d7fae
BUILD_BRANCH: HEAD
BUILD_TIME: Aug 18 2023 17:32:49
BUILD_FLAGS: RelWithDebInfo
BUILD_INFO:

Copyright (c) 2011-present OceanBase Inc.

[admin@server01 oceanbase]$ bin/observer --help |grep local
bin/observer --help
observer [OPTIONS]
  -h,--help                print this help
  -z,--zone ZONE           zone
  -p,--mysql_port PORT     mysql port
  -P,--rpc_port PORT       rpc port
  -N,--nodaemon            don't run in daemon
  -n,--appname APPNAME     application name
  -c,--cluster_id ID       cluster id
  -d,--data_dir DIR        OceanBase data directory
  -i,--devname DEV         net dev interface
  -I,--local_ip            ip of the current machine
  -o,--optstr OPTSTR       extra options string
  -r,--rs_list RS_LIST     root service list
  -l,--log_level LOG_LEVEL server log level
  -6,--ipv6 USE_IPV6       server use ipv6 address
  -m,--mode MODE server mode
  -f,--scn flashback_scn

其中参数 local_ip 据说是用来指定 IP 。

[admin@server01 oceanbase]$ bin/observer 
bin/observer
[admin@server01 oceanbase]$ ps -ef|grep observer
admin        186       1 48 01:01 ?        00:00:02 bin/observer
admin        624      91  0 01:01 pts/1    00:00:00 grep --color=auto observer
[admin@server01 oceanbase]$ strings etc/observer.config.bin|grep 172
local_ip=172.21.0.11
all_server_list=172.21.0.11:12882,172.21.0.12:22882
rootservice_list=172.21.0.11:12882:12881;172.21.0.12:22882:22881
[admin@server01 oceanbase]$ netstat -nltp |grep observer
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:12882           0.0.0.0:*               LISTEN      186/bin/observer
tcp        0      0 0.0.0.0:12881           0.0.0.0:*               LISTEN      186/bin/observer

这里期望监听在指定的 IP 172.21.0.11 上 。因为本机有多个 IP 。

[root@server01 /]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:28:7c:fe brd ff:ff:ff:ff:ff:ff
    inet 172.31.51.153/20 brd 172.31.63.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 172.21.0.11/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet 172.21.0.12/24 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet 172.21.0.13/24 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet 172.21.0.14/24 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fe28:7cfe/64 scope link
       valid_lft forever preferred_lft forever

问题也发在 github上了。

[Bug]: observer doesn’t listen on local_ip · Issue #1570 · oceanbase/oceanbase (github.com)

【复现路径】问题出现前后相关操作
【问题现象及影响】

【附件】

目前observer还不支持直接用binary部署(倒也不是不支持,是非常麻烦), 建议用obd部署