(原创)LDM--数据传输软件

作用:

    实现文件的传输,内置了md5验证,可以保证文件的正确发送以及接收;已经发送成功的文件会被记录起来,可以在参数配置时选择不再进行发送。还有好多功能,自己去探索把。

和ftp的简单对比:

    1、不要配置n多个shell脚本;
    2、不需要担心上游文件未完全生成就被传输到下游时,产生的文件发送错误的情况
    3、一次配置,终身适用。(还有好多,但ldm也有他不足的地方)

ldm 软件的简单说明:

    ldm是一个国外的ucar的公司做的一个传输软件,搞气象的人基本都知道这个公司,这个是 ldm的官方界面https://www.unidata.ucar.edu/software/ldm/

(原创)LDM--数据传输软件_第1张图片

做演示的两台服务器信息:
    系统:centos7.5
    上游ldm服务器:10.20.22.200
    下游ldm服务器:10.20.22.201

上面这张图说明了ldm的运行过程,简单说说我自己的理解
    (1) 上游ldm:给提供数据的人,就是发送数据的人
    (2) 下游ldm:接收数据的人,就是需要使用数据的人
    (3) pqact:将接收到的数据文件进行写入你的本地磁盘空间

    我自己理解的ldm的运行过程:(备注:以下所说的运行过程只是我自己理解的,没办法,官方文档看了个半懂,写出来大家交流一下,有不对的地方还请不吝赐教)
    (1) 上游ldm和下游ldm初始化出来一个队列文件。如这样:/home/ldm/var/queues/ldm.pq
    (2) 修改ldmd.conf(哪些机器可以访问)、pqact.conf(下游ldm接收到数据之后写入到本地磁盘中)和scour.conf(规定以什么规则删除接收到的数据)
    (3) 上游ldm和下游ldm开启ldm服务
    (4) 上游ldm通过ldmsend发送你所需要发送的数据。eg:/home/ldm/bin/ldmsend -vl- -h 10.20.22.201 /opt/ldm-6.13.4.tar.gz

可以采用两种安装方式,这里主要是展示通过源码编译安装的方式

1、通过编译源码的方式(上下游服务器都要安装)

[root@tag ~]# yum install -y wget pax gcc libxml2-devel make libpng-devel rsyslog perl zlib-devel bzip2 git curl sudo cronie bc net-tools man gnuplot tcl libstdc++-static
[root@tag ~]# hostnamectl set-hostname tag.com --static    # 主机名要设置为完全域名的形式,就是中间要包含一个点
[root@tag ~]# hostnamectl set-hostname tag.com --transient
[root@tag ~]# hostnamectl set-hostname tag.com --pretty
[root@tag ~]# groupadd ldm
[root@tag ~]# useradd -g ldm ldm
[root@tag ~]# passwd ldm
[root@tag ~]# su - ldm
[ldm@tag ~]$ cd /home/ldm
[ldm@tag ~]$ wget ftp://ftp.unidata.ucar.edu/pub/ldm/ldm-6.13.11.tar.gz
[ldm@tag ~]$ gunzip -c ldm-6.13.11.tar.gz | pax -r '-s:/:/src/:'
[ldm@tag ~]$ rm -rf ldm-6.13.11.tar.gz
[ldm@tag ~]$ cd ldm-6.13.11/src
[ldm@tag src]$ ./configure --disable-root-actions >configure.log 2>&1
[ldm@tag src]$ make install > install.log 2>&1
[ldm@tag src]$ make clean

2、通过rpm进行安装(官方貌似不建议通过这种方式进行安装,相关的包的更新也很慢)
去 ftp://ftp.unidata.ucar.edu/pub/ldm/ 上下载rpm的包
安装

[root@tag ~]# rpm --install [--prefix=ldmhome] rpm-file

    配置ldm并启动ldm(我这里就是单纯为了记录一下,所以命令就都采用一台机器进行模拟演示了)

[ldm@tag ~]$ /home/ldm/bin/ldmadmin mkqueue                      #上下游ldm的服务器都创建队列
[ldm@tag ~]$ vim /home/ldm/etc/ldmd.conf             # 上游ldm服务器的配置,中间用tab键隔开
ALLOW   ANY     ^((localhost|loopback)|(127\.0\.0\.1\.?$))
ALLOW   ANY     ^10\.20\.22\.201\.?$
[ldm@tag ~]$ vim /home/ldm/etc/ldmd.conf             # 下游ldm服务器的配置,中间用tab键隔开
EXEC    "pqact"
ALLOW   ANY     ^((localhost|loopback)|(127\.0\.0\.1\.?$))
ACCEPT  ANY ".*" ^10\.20\.22\.200$
[ldm@tag ~]$ vim /home/ldm/etc/pqact.conf            # 下游ldm服务器上修改,中间用tab键隔开
ANY     ^(.*)   FILE    -log -overwrite -close  /home/ldm/var/data/\1
[ldm@tag ~]$ /usr/bin/sudo /usr/bin/perl /home/ldm/bin/ldmadmin start
[ldm@tag ~]$ tail -100f /home/ldm/var/logs/ldmd.log               # 上下游ldm的服务都开启后,观察日志
[ldm@tag ~]$ /home/ldm/bin/ldmsend -vl- -h 10.20.22.201 /opt/ldm-6.13.4.tar.gz        # 上游ldm服务器执行,稍微等1分钟左右后在执行此命令
20190712T085519.830101Z ldmsend[7017] INFO ldmsend.c:286:ldmsend() Sending /opt/ldm-6.13.4.tar.gz, 13131429 bytes
[ldm@tag ~]$ ls /home/ldm/var/data/
_BEGIN_  opt
[ldm@tag ~]$ ls /home/ldm/var/data/opt/
ldm-6.13.4.tar.gz
[ldm@tag ~]$ 

解释一下ldmd.conf配置文件:
    Exec Entries:在启动时将程序作为子进程执行
    Request Entries:连接到上游LDM服务器去请求数据产品
    Allow Entries:允许下游ldm服务器连接并且去接收数据产品
    Accept Entries:允许某些上游ldm服务器去发送未经验证的数据产品
    Receive Entries:待解释
    Multicast Entries:待解释

    通过上面简单的配置一下,ldm已经可以运行起来了,更多的配置以后有机会了再去研究。
    按我的设想,ldm应该有自己的实时采集程序,但是翻了n次官方文档,模模糊糊好像找见了,但是尝试了很多次,没有配置成功,所以还是有点遗憾把,先在计划任务中直接采用命令行发送的形式进行处理把,这里我打算配置的是每隔15s进行检测一次,以达到类实时发送的效果。

如有转载,请注明出处。转载自,NLBSN的文章:https://www.jianshu.com/p/30eb9f37c041

你可能感兴趣的:((原创)LDM--数据传输软件)