摘要:
总联;strace;nmap
1、原FDP2-DB主用,关闭FDP2-DB数据库后,自动切换为FDP1-DB主用,FDP2-DB状态从OK变为Error(CETC_ZLS负责发布数据库的状态:Error)。
2、FDP1和FDP2上CETC_ZLS进程均运行2个。别的主机只运行CETC_ZLD,不运行CETC_ZLS。(好多总联进程都是启动多个,功能有分工,比如那个NET也是多个,课题说一个收一个发,类似这样)
host4 <oracle>[/home/atc/log/zl_log]$ ps -aux |grep CETC_ZLS
atc 3720 1.0 0.0 37464 8476 ? S 6月26 138:40 /home/atc/bin/CETC_ZLS
atc 3901 0.0 0.0 37200 6904 ? S 6月26 9:14 /home/atc/bin/CETC_ZLS
3、总联
在故障节点,查看总联日志:
/home/atc/log/zl_log/zlsem_日期时间.log
/home/atc/log/zl_log/top_日期时间.log
$tailf zlsem_2023070504.log
2023年 07月 05日 星期三 04:07:30 GMT
getinfo = 1
pipe_num(pid)= 0 semid = 3 num_sem = 0 //CETC_IID
pipe_num(pid)= 3 semid = 29 num_sem = 0 //CETC_FDP
pipe_num(pid)= 4 semid = 26 num_sem = 0 //CETC_FDD
pipe_num(pid)= 7 semid = 30 num_sem = 0 //CETC_TRA
pipe_num(pid)= 9 semid = 2 num_sem = 0 //CETC_NET
pipe_num(pid)= 10 semid = 14 num_sem = 0 //CETC_IISC
pipe_num(pid)= 11 semid = 31 num_sem = 0 //CETC_SPS
pipe_num(pid)= 12 semid = 0 num_sem = 0 //CETC_CMD
pipe_num(pid)= 14 semid = 19 num_sem = 0 //CETC_RPS
pipe_num(pid)= 15 semid = 22 num_sem = 0 //CETC_WTH
pipe_num(pid)= 17 semid = 27 num_sem = 0 //CETC_FTK
pipe_num(pid)= 21 semid = 23 num_sem = 0 //CETC_FIN
pipe_num(pid)= 22 semid = 24 num_sem = 0 //CETC_AFDP
pipe_num(pid)= 27 semid = 5 num_sem = 0 //CETC_NETC
pipe_num(pid)= 50 semid = 15 num_sem = 0 //CETC_DBSQ
pipe_num(pid)= 51 semid = 17 num_sem = 0 //CETC_DBSY
pipe_num(pid)= 66 semid = 21 num_sem = 0 //CETC_GBIB
pipe_num(pid)= 76 semid = 20 num_sem = 0 //CETC_PFLT
pipe_num(pid)= 85 semid = 16 num_sem = 0 //CETC_ADSC
pipe_num(pid)= 106 semid = 25 num_sem = 0 //CETC_FDE
pipe_num(pid)= 108 semid = 18 num_sem = 0 //CETC_PFTK
pipe_num(pid)= 133 semid = 4 num_sem = 0 //CETC_DBAGN
pipe_num(pid)= 135 semid = 28 num_sem = 0 //CETC_CRDS-R
进程号(pipe_num(pid)= 0是CETC_IID)配置加参数启动DBMS可以看到: ./CETC_DBMS atc4(登录root/0000)“系统模块”窗口。(配置文件/home/version/current/atc_3.4/config/CETC/public_data/process.xml)
- 总联模块CETC_ZLS:对本席位上的应用软件状态进行监视、双机状态进行判断和维护、对本席位上的应用软件提供定时服务(双机服务器上运行:FDP1/2;SDP1/2;BSDP1/2等)。
- 总联模块CETC_ZLC:对本席位上的应用软件状态进行监视、对本席位上的应用软件提供定时服务(除了已有CETC_ZLS的节点外,每个节点都有)。
- 工作网信息分发模块CETC_ZLD:对A、B工作网上传输的数据在本席位上进行分发(内部消息分发,每个节点都有)。
测试:在BFDP上 killall CETC_ZLC,SMP监控从Work Normal变为Work Stop
4、查看进程打开、调用了哪些文件。(strace 跟踪进程中的系统调用-菜鸟笔记 (coonote.com))
strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。每一行都是一条系统调用,等号左边是系统调用的函数名及其参数,右边是该调用的返回值。 strace 显示这些调用的参数并返回符号形式的值。
BFDP <atc>[/home/atc/bin]$ strace ./CETC_ZLC
open("/home/atc/log/zl_log/record.reg", O_RDONLY) = 3
open("/home/atc/config/CETC/public_data/process.xml", O_RDONLY) = 3
open("/home/atc/config/CETC/zl_data/allDBStatusConfig.xml", O_RDONLY) = 3
open("/home/atc/config/CETC/public_data/global_system.xml", O_RDONLY) = 3
open("/home/atc/config/CETC/net_data/netConfig.xml", O_RDONLY) = 3
open("/home/atc/config/CETC/public_data/dualServConfig.xml", O_RDONLY) = 3
open("/home/atc/log/zl_log/20230705-ZLC_all.log", O_WRONLY|O_CREAT|O_APPEND, 0666) = 3
5、nmap扫描主机端口,嗅探所提供的网络服务。
- -sT TCP connect扫描
- -sU UDP 的数据包进行扫描
- -sO 表示使用IP协议扫描确定目标主机支持的协议类型
[root@host4 ~]# nmap -sO 192.28.4.4
PROTOCOL STATE SERVICE
1 open icmp
2 open|filtered igmp
6 open tcp
17 open udp
103 open|filtered pim
136 open|filtered udplite
255 open|filtered unknown
//open|filtered(开放或者被过滤的)当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成 这种状态
[root@host4 ~]# nmap -sTU 192.28.4.4
Starting Nmap 6.40 ( http://nmap.org ) at 2023-07-06 08:13 GMT
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
1521/tcp open oracle
111/udp open rpcbind
123/udp open ntp
161/udp open snmp
5353/udp open|filtered zeroconf
5.1、NFS利用RPC机制进行系统间数据共享和访问(Linux之间的远程挂载),而RPCbind则为NFS提供了端口映射服务。
[root@host4 ~]# lsof -i :111
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1436 rpc 6u IPv4 14977 0t0 UDP *:sunrpc
rpcbind 1436 rpc 8u IPv4 14979 0t0 TCP *:sunrpc (LISTEN)
# systemctl stop rpcbind
# ll /lib/systemd/system/rpcbind.service
-rw-r--r--. 1 root root 385 10月 22 2019 /lib/systemd/system/rpcbind.service
5.2、(莱斯ATC不使用zeroconf协议)zeroconf(全称为Zero configuration networking,中文名则为零配置网络服务规范,是一种用于自动生成可用IP地址的网络技术,不需要额外的手动配置和专属的配置服务器)协议,对应各种产品的实现,现在最主要的实现是apple的Bonjour和开源的Avahi。
[root@host4 sysconfig]# lsof -i :5353
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
avahi-dae 1443 avahi 12u IPv4 18582 0t0 UDP *:mdns
[root@host4 sysconfig]# ps -aux |grep 1443
avahi 1443 0.0 0.0 62296 2304 Ss 6月26 0:01 avahi-daemon: running [host4.local]
[root@host4 sysconfig]# systemctl status avahi-daemon
● avahi-daemon.service - Avahi mDNS/DNS-SD Stack
Loaded: loaded (/usr/lib/systemd/system/avahi-daemon.service; enabled; vendor preset: enabled)
Active: active (running) since 一 2023-06-26 04:23:39 GMT; 1 weeks 3 days ago
Main PID: 1443 (avahi-daemon)
Status: "avahi-daemon 0.6.31 starting up."
Tasks: 2
CGroup: /system.slice/avahi-daemon.service
├─1443 avahi-daemon: running [host4.local]
└─1455 avahi-daemon: chroot helper
[root@host4 sysconfig]# ll /lib/systemd/system/avahi-daemon.service
-rw-r--r--. 1 root root 1044 10月 24 2019 /lib/systemd/system/avahi-daemon.service
[root@host4 sysconfig]# more /lib/systemd/system/avahi-daemon.service
[Unit]
Description=Avahi mDNS/DNS-SD Stack
Requires=avahi-daemon.socket
[Service]
Type=dbus
BusName=org.freedesktop.Avahi
ExecStart=/usr/sbin/avahi-daemon -s
ExecReload=/usr/sbin/avahi-daemon -r
NotifyAccess=main
[Install]
WantedBy=multi-user.target
Also=avahi-daemon.socket
Alias=dbus-org.freedesktop.Avahi.service
# apt-get install avahi-daemon
*:在systemd的管理体系里面,以前的运行级别(runlevel)的概念被新的运行目标(target)所取代。tartget的命名类似于multi-user.target等这种形式,比如原来的运行级别3(runlevel3)就对应新的多用户目标(multi-user.target),run level 5就相当于graphical.target。而在systemd的管理体系里面,默认的target(相当于以前的默认运行级别)是通过软链来实现。如:ln -s /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target;在/lib/systemd/system/ 下面定义runlevelX.target文件目的主要是为了能够兼容以前的运行级别level的管理方法。(Linux 进程 服务 - 知乎 (zhihu.com))
[root@host4 system]# ll /lib/systemd/system/ |grep runlevel
lrwxrwxrwx. 1 root root 15 3月 22 07:11 runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 3月 22 07:11 runlevel1.target -> rescue.target
drwxr-xr-x. 2 root root 4096 3月 22 07:11 runlevel1.target.wants
lrwxrwxrwx. 1 root root 17 3月 22 07:11 runlevel2.target -> multi-user.target
drwxr-xr-x. 2 root root 4096 3月 22 07:11 runlevel2.target.wants
lrwxrwxrwx. 1 root root 17 3月 22 07:11 runlevel3.target -> multi-user.target
drwxr-xr-x. 2 root root 4096 3月 22 07:11 runlevel3.target.wants
lrwxrwxrwx. 1 root root 17 3月 22 07:11 runlevel4.target -> multi-user.target
drwxr-xr-x. 2 root root 4096 3月 22 07:11 runlevel4.target.wants
lrwxrwxrwx. 1 root root 16 3月 22 07:11 runlevel5.target -> graphical.target
drwxr-xr-x. 2 root root 4096 3月 22 07:11 runlevel5.target.wants
lrwxrwxrwx. 1 root root 13 3月 22 07:11 runlevel6.target -> reboot.target承担
- Avahi 是Zeroconf规范的开源实现,基本是使用在Linux和FreeBSD上。包含了一整套多播DNS(multicastDNS)/DNS-SD网络服务的实现,使用的发布授权是LGPL。mDNS中的" m"代表"多播", mDNS查询几乎是对本地子网的常规DNS查询多播(aka广播)。
- zerconf协议主要是定义了三个层次:不需利用dhcp server取得 设备地址如IP的相关资料、不需要通过DNS server就转换domain name和IP的关系(Multicast DNS)、利用 DNS-SD来取得设备服务,而不需通过directory server(Bonjour主要基于两个协议:mDns协议 和 DNS-SD协议(DNS based Service Discovery)。DNS是点播基于53端口,mDns是组播基于5353端口。)
5353/udp | mDNS、Avahi | 系统相互发现对方,并描述它们提供的服务,无需手动指定详情。 | 使用zeroconf来配置多机通信 |
6、CETC_NET调用了libCETC_zl_msg.so,netConfig.xml;多播地址multiaddr:234.1.1.2,234.1.2.2,235.1.1.1,235.1.2.1(224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;)
[root@host4 bin]# strace ./CETC_NET
open("/home/atc/lib/libCETC_zl_msg.so", O_RDONLY|O_CLOEXEC) = 3
open("/etc/hostname", O_RDONLY) = 3
open("/home/atc/config/CETC/public_data/sysposition.xml", O_RDONLY) = 3
open("/home/atc/config/CETC/net_data/netConfig.xml", O_RDONLY) = 3
setsockopt(4, SOL_IP, IP_ADD_MEMBERSHIP, {imr_multiaddr=inet_addr("234.1.1.2"), imr_interface=inet_addr("192.28.4.4")}, 8) = 0
setsockopt(6, SOL_IP, IP_ADD_MEMBERSHIP, {imr_multiaddr=inet_addr("235.1.1.1"), imr_interface=inet_addr("192.28.4.4")}, 8) = 0
setsockopt(8, SOL_IP, IP_ADD_MEMBERSHIP, {imr_multiaddr=inet_addr("234.1.2.2"), imr_interface=inet_addr("193.28.4.4")}, 8) = 0
setsockopt(10, SOL_IP, IP_ADD_MEMBERSHIP, {imr_multiaddr=inet_addr("235.1.2.1"), imr_interface=inet_addr("193.28.4.4")}, 8) = 0
[root@host4 bin]# netstat -gan
IPv6/IPv4 Group Memberships
Interface RefCnt Group
--------------- ------ ---------------------
lo 1 224.0.0.1
ens1f0 1 235.1.1.1
ens1f0 1 234.1.1.2
ens1f0 1 224.0.0.251
ens1f0 1 224.0.0.1
ens1f1 1 224.0.0.1
ens2f0 1 235.1.2.1
ens2f0 1 234.1.2.2
ens2f0 1 224.0.0.251
ens2f0 1 224.0.0.1
ens2f1 1 224.0.0.1
eno5 1 235.1.3.1
eno5 1 234.1.3.2
eno5 1 224.0.0.251
eno5 1 224.0.0.1
eno6 1 224.0.0.1
eno7 1 224.0.0.1
eno8 1 224.0.0.1
enp1s0f4u4 1 224.0.0.1
virbr0 1 224.0.0.251
virbr0 1 224.0.0.1
[root@host4 bin]# ip -h -o -4 maddr show
1: lo\ inet 224.0.0.1
2: ens1f0\ inet 235.1.1.1
2: ens1f0\ inet 234.1.1.2
2: ens1f0\ inet 224.0.0.251
2: ens1f0\ inet 224.0.0.1
3: ens1f1\ inet 224.0.0.1
4: ens2f0\ inet 235.1.2.1
4: ens2f0\ inet 234.1.2.2
4: ens2f0\ inet 224.0.0.251
4: ens2f0\ inet 224.0.0.1
5: ens2f1\ inet 224.0.0.1
6: eno5\ inet 235.1.3.1
6: eno5\ inet 234.1.3.2
6: eno5\ inet 224.0.0.251
6: eno5\ inet 224.0.0.1
7: eno6\ inet 224.0.0.1
8: eno7\ inet 224.0.0.1
9: eno8\ inet 224.0.0.1
10: enp1s0f4u4:\ inet 224.0.0.1
11: virbr0\ inet 224.0.0.251
11: virbr0\ inet 224.0.0.1
[root@host4 bin]# more /proc/sys/net/ipv4/ip_forward
1 ------>1 打开系统的ipv4转发开关
[root@host4 bin]# cat /proc/sys/net/ipv4/conf/ens1f0/forwarding
1