实际可以ping通但是报错eth0 fail to ping xxx.xxx.xxx.xxx. Please check configuration `devname`

【 使用环境 】测试环境
【 OB or 其他组件 】
libobclient-2.0.2-2.el8.x86_64.rpm
obclient-2.0.2-3.el8.x86_64.rpm
ob-deploy-1.5.0-12.el8.x86_64.rpm
obproxy-ce-3.2.3.5-2.el8.x86_64.rpm
oceanbase-ce-3.1.4-10000092022071511.el8.x86_64.rpm
oceanbase-ce-libs-3.1.4-10000092022071511.el8.x86_64.rpm
oceanbase-ce-utils-3.1.4-10000092022071511.el8.x86_64.rpm
【 使用版本 】
ob:3.1.4
obd:1.5.0
操作系统:Anolis OS 8.6
【问题描述】安装提示报错无法ping通,但是经过测试实际可以ping通
【复现路径】
部署执行:

obd cluster autodeploy obdora -c distributed-with-obproxy-example.yaml

过程

Package oceanbase-ce-3.1.4-10000092022071511.el8 is available.
Package obproxy-ce-3.2.3.5-2.el8 is available.
install oceanbase-ce-3.1.4 for local ok
install obproxy-ce-3.2.3.5 for local ok
Cluster param config check ok
Open ssh connection ok
Generate observer configuration ok
Generate obproxy configuration ok
oceanbase-ce-3.1.4 already installed.
obproxy-ce-3.2.3.5 already installed.
+-------------------------------------------------------------------------------------------+
|                                          Packages                                         |
+--------------+---------+-----------------------+------------------------------------------+
| Repository   | Version | Release               | Md5                                      |
+--------------+---------+-----------------------+------------------------------------------+
| oceanbase-ce | 3.1.4   | 10000092022071511.el8 | 6e37b476af77b883861e2e334bc0fcb5080a2290 |
| obproxy-ce   | 3.2.3.5 | 2.el8                 | 05e827f092932dfaa250d8d0b93743c5afcc9294 |
+--------------+---------+-----------------------+------------------------------------------+
Repository integrity check ok
Parameter check ok
Open ssh connection ok
Cluster status check ok
Initializes observer work home ok
Initializes obproxy work home ok
Remote oceanbase-ce-3.1.4-10000092022071511.el8-6e37b476af77b883861e2e334bc0fcb5080a2290 repository install ok
Send /root/.obd/repository/oceanbase-ce/3.1.4/6e37b476af77b883861e2e334bc0fcb5080a2290/etc to /home/admin/.obd/repository/oceanbase-ce/3.1.4/6e37b476af77b883861e2e334bc0fcb5080a2290/etc ok
Send /root/.obd/repository/oceanbase-ce/3.1.4/6e37b476af77b883861e2e334bc0fcb5080a2290/etc to /home/admin/.obd/repository/oceanbase-ce/3.1.4/6e37b476af77b883861e2e334bc0fcb5080a2290/etc ok
Remote oceanbase-ce-3.1.4-10000092022071511.el8-6e37b476af77b883861e2e334bc0fcb5080a2290 repository lib check !!
Remote obproxy-ce-3.2.3.5-2.el8-05e827f092932dfaa250d8d0b93743c5afcc9294 repository install ok
Remote obproxy-ce-3.2.3.5-2.el8-05e827f092932dfaa250d8d0b93743c5afcc9294 repository lib check ok
Try to get lib-repository
Package oceanbase-ce-libs-3.1.4-10000092022071511.el8 is available.
install oceanbase-ce-libs-3.1.4 for local ok
Remote oceanbase-ce-libs-3.1.4-10000092022071511.el8-b2b744a809402059b38ce99265ced33db09860d4 repository install ok
Remote oceanbase-ce-3.1.4-10000092022071511.el8-6e37b476af77b883861e2e334bc0fcb5080a2290 repository lib check ok
obdora deployed
Get local repositories ok
Search plugins ok
Open ssh connection ok
Load cluster param plugin ok
Check before start observer x
[ERROR] server3(xx.xx.xx.27) eth0 fail to ping xx.xx.xx.26. Please check configuration `devname`
[ERROR] server3(xx.xx.xx.27) eth0 fail to ping xx.xx.xx.25. Please check configuration `devname`
[ERROR] server3(xx.xx.xx.27) eth0 fail to ping xx.xx.xx.25. Please check configuration `devname`

Check before start obproxy ok

登录到:xx.xx.xx.27,可以正常ping通其他机器

[root@oceanbase3 ~]# ping xx.xx.xx.25 -I eth0
PING xx.xx.xx.25 (xx.xx.xx.25) from xx.xx.xx.27 eth0: 56(84) bytes of data.
64 bytes from xx.xx.xx.25: icmp_seq=1 ttl=64 time=1.33 ms
64 bytes from xx.xx.xx.25: icmp_seq=2 ttl=64 time=0.530 ms
64 bytes from xx.xx.xx.25: icmp_seq=3 ttl=64 time=0.588 ms
64 bytes from xx.xx.xx.25: icmp_seq=4 ttl=64 time=0.538 ms
64 bytes from xx.xx.xx.25: icmp_seq=5 ttl=64 time=0.551 ms
^C
--- xx.xx.xx.25 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4080ms
rtt min/avg/max/mdev = 0.530/0.706/1.327/0.312 ms

【问题现象及影响】
无法正常使用obd安装OceanBase
【附件】
distributed-with-obproxy-example.yaml文件内容我附在1楼

distributed-with-obproxy-example.yaml文件

## Only need to configure when remote login is required
user:
   username: admin
   password: 'xxxxx'
#   key_file: your ssh-key file path if need
#   port: your ssh port, default 22
#   timeout: ssh connection timeout (second), default 30
oceanbase-ce:
  servers:
    - name: server1
      # Please don't use hostname, only IP can be supported
      ip: xx.xx.xx.25
    - name: server2
      ip: xx.xx.xx.26
    - name: server3
      ip: xx.xx.xx.27
  global:
    # The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
    home_path: /home/admin/observer
    # The directory for data storage. The default value is $home_path/store.
    data_dir: /data
    # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
    redo_dir: /redo
    # Please set devname as the network adaptor's name whose ip is  in the setting of severs.
    # if set severs as "127.0.0.1", please set devname as "lo"
    # if current ip is 192.168.1.10, and the ip's network adaptor's name is "eth0", please use "eth0"
    devname: eth0
    # External port for OceanBase Database. The default value is 2881.DO NOT change this value after the cluster is started.
    # mysql_port: 2881
    # Internal port for OceanBase Database. The default value is 2882. DO NOT change this value after the cluster is started.
    # rpc_port: 2882
    # Defines the zone for an observer. The default value is zone1.
    # zone: 
    # The maximum running memory for an observer. When ignored, autodeploy calculates this value based on the current server available resource.
    # memory_limit: 58G
    # The percentage of the maximum available memory to the total memory. This value takes effect only when memory_limit is 0. The default value is 80.
    # memory_limit_percentage: 80 
    # The reserved system memory. system_memory is reserved for general tenants. The default value is 30G. Autodeploy calculates this value based on the current server available resource.
    # system_memory: 22G
    # The size of a data file. When ignored, autodeploy calculates this value based on the current server available resource.
    # datafile_size: 200G
    # The percentage of the data_dir space to the total disk space. This value takes effect only when datafile_size is 0. The default value is 90.
    # datafile_disk_percentage: 90
    # System log level. The default value is INFO.
    # syslog_level: INFO
    # Print system logs whose levels are higher than WARNING to a separate log file. The default value is true. The default value for autodeploy mode is false.
    # enable_syslog_wf: false
    # Enable auto system log recycling or not. The default value is false. The default value for autodeploy mode is on.
    # enable_syslog_recycle: true
    # The maximum number of reserved log files before enabling auto recycling. When set to 0, no logs are deleted. The default value for autodeploy mode is 4.
    # max_syslog_file_count: 4
    # Cluster name for OceanBase Database. The default value is obcluster. When you deploy OceanBase Database and obproxy, this value must be the same as the cluster_name for obproxy.
    # appname: obcluster
    # Password for root. The default value is empty.
    root_password: 'xxxxx'
    # Password for proxyro. proxyro_password must be the same as observer_sys_password. The default value is empty.
    # proxyro_password:
  server1:
    zone: zone1
  server2:
    zone: zone1
  server3:
    zone: zone1
obproxy-ce:
  depends:
    - oceanbase-ce
  servers:
    - xx.xx.xx.24
  global:
    # The working directory for obproxy. Obproxy is started under this directory. This is a required field.
    home_path: /home/admin/obproxy
    skip_proxy_sys_private_check: true
    enable_strict_kernel_release: false
    # External port. The default value is 2883.
    # listen_port: 2883
    # The Prometheus port. The default value is 2884.
    # prometheus_listen_port: 2884
    # rs_list is the root server list for observers. The default root server is the first server in the zone.
    # The format for rs_list is observer_ip:observer_mysql_port;observer_ip:observer_mysql_port.
    # Ignore this value in autodeploy mode.
    # rs_list: 127.0.0.1:2881
    # Cluster name for the proxy OceanBase Database. The default value is obcluster. This value must be set to the same with the appname for OceanBase Database.
    # cluster_name: obcluster
    # Password for obproxy system tenant. The default value is empty.
    # obproxy_sys_password:
    # Password for proxyro. proxyro_password must be the same with proxyro_password. The default value is empty.
    # observer_sys_password:

“ifconfig”命令
看看网卡名称是不是eth0。

如果不是就把yml中devname: eth0修改成实际的名称。

有可能是bound0

是eth0,我发现在admin用下,指定eth0必须加sudo

[admin@oceanbase3 root]$ ping xx.xx.xx.25 -I eth0
ping: SO_BINDTODEVICE: Operation not permitted
[admin@oceanbase3 root]$ sudo ping xx.xx.xx.25 -I eth0
PING xx.xx.xx.25 (xx.xx.xx.25) from xx.xx.xx.27 eth0: 56(84) bytes of data.
64 bytes from xx.xx.xx.25: icmp_seq=1 ttl=64 time=0.828 ms
64 bytes from xx.xx.xx.25: icmp_seq=2 ttl=64 time=0.503 ms
^C
--- xx.xx.xx.25 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1041ms
rtt min/avg/max/mdev = 0.503/0.665/0.828/0.164 ms

OBD部署前就要给admin授权sudo的啊。

授权了,sudo是免密的,有办法免sudo执行root权限吗

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL
admin       ALL=(ALL)       NOPASSWD: ALL

实战教程第二章2.4:如何初始化服务器环境

https://open.oceanbase.com/blog/8600144

实战教程第二章2.7:如何使用 OBD 自动化部署多节点集群

https://open.oceanbase.com/blog/8600147

我看了,我就是按照这上面说的做的,我用的是阿里的Anolis8.6系统,好像是系统差异造成的 :smiling_face_with_tear:

centos下admin用户可以直接ping通:

[admin@testcentos root]$ ping xx.xx.xx.25 -I eth0
PING xx.xx.xx.25 (xx.xx.xx.25) from xx.xx.xx.144 eth0: 56(84) bytes of data.
64 bytes from xx.xx.xx.25: icmp_seq=1 ttl=64 time=1.35 ms
64 bytes from xx.xx.xx.25: icmp_seq=2 ttl=64 time=0.784 ms
^C
--- xx.xx.xx.25 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.784/1.067/1.350/0.283 ms

Anolis8.6下必须使用sudo(免密的)才能ping通:

[admin@oceanbase3 root]$ ping xx.xx.xx.25 -I eth0
ping: SO_BINDTODEVICE: Operation not permitted
[admin@oceanbase3 root]$ sudo ping xx.xx.xx.25 -I eth0
PING xx.xx.xx.25 (xx.xx.xx.25) from xx.xx.xx.27 eth0: 56(84) bytes of data.
64 bytes from xx.xx.xx.25: icmp_seq=1 ttl=64 time=0.708 ms
64 bytes from xx.xx.xx.25: icmp_seq=2 ttl=64 time=0.567 ms
^C
--- xx.xx.xx.25 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1026ms
rtt min/avg/max/mdev = 0.567/0.637/0.708/0.074 ms

问题解决了,执行chmod u+s /usr/sbin/ping让admin用户不使用sudo也能运行带-I参数的ping命令就好了,centos系统下没有这个问题,目前发现Anolis8.6会出现这个问题