摘要:

总联;strace;nmap

莱斯ATC笔记3_oracle

1、原FDP2-DB主用,关闭FDP2-DB数据库后,自动切换为FDP1-DB主用,FDP2-DB状态从OK变为Error(CETC_ZLS负责发布数据库的状态:Error)

莱斯ATC笔记3_日期时间_02莱斯ATC笔记3_日期时间_03

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

莱斯ATC笔记3_日期时间_04

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