当前位置: 首页 > news >正文

linux网络服务+linux数据库6

1.rsync

1.1 原理和基础实验

概述:

特性:

工作原理:

实验

步骤 1:准备目录与用户
操作(所有服务器)
  1. 创建同步目录
    mkdir -p /filesrc  # 源目录(NFS 共享数据存放处)
    mkdir -p /filedst  # 目标目录(客户端同步后存放处)
    
  2. 创建 rsync 认证用户(服务端)
    # 创建虚拟用户 user1(非系统用户,仅用于 rsync 认证)
    echo "user1:123456" > /etc/rsyncd_users.db
    # 修改密码文件权限(必须为 600,否则认证失败)
    chmod 600 /etc/rsyncd_users.db
    
原理
  • /filesrc 模拟 NFS 共享的数据目录;
  • rsyncd_users.db 存储 rsync 客户端认证的 “用户名:密码”,权限 600 保证安全。
步骤 2:配置 rsync 服务端(NFS 服务器)
操作
  1. 创建 rsyncd.conf 配置文件

    vim /etc/rsyncd.conf
    

    添加内容:

    uid = nobody
    gid = nobody
    port = 873
    log file = /var/log/rsyncd.log
    pid file = /var/run/rsyncd.pid
    [web]
    comment = web directory backup
    path = /filesrc
    read only = no
    dont compress = *.gz *.bz2
    auth users = user1
    secrets file = /etc/rsyncd_users.db
    
    • uid/gid = nobodyrsync 进程以 nobody 用户 / 组运行;
    • port = 873rsync 守护进程默认端口;
    • [web]:共享模块名,客户端通过 rsync://服务器IP/web 访问;
    • path = /filesrc:共享的实际目录;
    • read only = no:允许客户端上传(若为 yes 则只读);
    • auth users = user1:允许认证的用户名;
    • secrets file:指定认证密码文件。
  2. 启动 rsync 守护进程

    rsync --daemon
    
  3. 验证 rsync 服务启动

    netstat -antp | grep 873
    

    输出应包含 tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN <rsync进程号>

原理

rsync --daemon 以守护进程方式启动 rsync 服务,根据 rsyncd.conf 配置监听 873 端口,提供共享目录和认证功能。

步骤 3:下行同步(客户端从服务端下载)
操作(客户端)
  1. 执行同步命令

    rsync -avz rsync://user1@192.168.88.10/web /filedst
    
    • rsync://user1@服务器IP/模块名rsync 协议的访问地址;
    • /filedst:客户端本地目标目录。
  2. 输入密码:执行命令后,提示输入密码 123456(与 rsyncd_users.db 中一致)。

原理

客户端通过 rsync 协议连接服务端,用 user1 认证后,将服务端 /filesrcweb 模块对应的目录)同步到本地 /filedst

验证
  • 客户端执行 ls /filedst,应看到服务端 /filesrc 中的文件;
  • 增量验证:在服务端 /filesrc 新增文件 echo "new file" > /filesrc/test.txt,再次执行同步命令,输出应显示 “仅传输新增的 test.txt”。
步骤 4:上行同步(客户端向服务端上传)
操作(客户端)
  1. 在客户端创建测试文件

    echo "upload test" > /filedst/upload.txt
    
  2. 执行上传命令

    rsync -avz /filedst/upload.txt rsync://user1@192.168.88.10/web
    
  3. 输入密码:输入 123456

原理

客户端将本地文件 upload.txt 通过 rsync 协议上传到服务端的 web 模块(对应 /filesrc 目录)。

验证
  • 服务端执行 ls /filesrc,应看到 upload.txt
  • 执行 cat /filesrc/upload.txt,输出 upload test,与客户端文件一致。
步骤 5:扩展验证(删除冗余文件 + 免密同步)
1. 删除服务端不存在的文件(--delete
  • 客户端执行:
    rsync -avz --delete rsync://user1@192.168.88.10/web /filedst
    
  • 原理:--delete 会删除客户端 /filedst 中服务端 /filesrc 不存在的文件,保持完全一致。
  • 验证:在客户端 /filedst 手动创建 temp.txt,执行上述命令后,temp.txt 应被删除。
2. 免密同步(环境变量)
  • 客户端设置环境变量:
    export RSYNC_PASSWORD=123456
    
  • 执行同步命令(无需输入密码):
    rsync -avz rsync://user1@192.168.88.10/web /filedst
    
  • 原理:RSYNC_PASSWORD 环境变量会被 rsync 读取,自动填充认证密码。
  • 验证:命令执行后直接开始同步,无密码输入提示。

1.2 单向实时同步(配置rsync+inotify)

  • inotify:Linux 内核的 “文件系统事件监控机制”,可实时监控目录的 “创建、删除、修改” 等事件。
  • rsync:高效的文件同步工具,支持增量传输。
  • 结合逻辑:inotifywait 监控目录事件,触发 rsync 同步,实现 “目录变化 → 立即同步” 的实时效果。
步骤 1:部署 inotify-tools(源服务器)
操作
  1. 安装依赖
    yum -y install gcc
    
  2. 下载并编译 inotify-tools
    # 假设压缩包为 inotify-tools-3.14.tar.gz
    tar -xf inotify-tools-3.14.tar.gz
    cd inotify-tools-3.14
    ./configure && make && make install
    
原理

   inotify-tools 提供 inotifywait 命令,用于监控文件系统事件,需编译安装(依赖 gcc)。

验证

        执行 inotifywait --help,输出命令帮助信息,说明安装成功。

步骤 2:配置免密 rsync(源 → 目标服务器)
操作(源服务器)
  1. 生成 SSH 密钥对
    ssh-keygen -t rsa
    
    一路回车,生成默认密钥(~/.ssh/id_rsa 和 ~/.ssh/id_rsa.pub)。
  2. 上传公钥到目标服务器

    bash

    ssh-copy-id root@目标服务器IP
    
    输入目标服务器 root 密码,完成公钥上传。
原理

        ssh-copy-id 将源服务器的公钥添加到目标服务器的 ~/.ssh/authorized_keys,实现免密 SSH 登录,从而让 rsync 免密同步。

验证

        执行 ssh root@目标服务器IP,无需输入密码即可登录,说明免密生效。

步骤 3:编写实时同步脚本(源服务器)
操作
  1. 创建脚本 sync.sh

    vim /root/sync.sh
    

    添加内容:

    #!/bin/bash
    # 监控 /filesrc 目录的创建、删除事件
    inotifywait -mrq -e create,delete /filesrc | while read directory event file
    do# 触发 rsync 同步(将 /filesrc 同步到目标服务器的 /filedst)rsync -avz /filesrc/ root@目标服务器IP:/filedst/
    done
    
    • inotifywait -mrq -e create,delete /filesrc-m 持续监控,-r 递归,-q 静默,监控 “创建、删除” 事件;
    • while read:循环读取监控到的事件,触发 rsync
  2. 添加执行权限

    chmod +x /root/sync.sh
    
原理

        脚本通过 inotifywait 实时捕获 /filesrc 的变化,一旦有 “创建 / 删除” 事件,立即执行 rsync 同步到目标服务器。

步骤 4:启动实时同步(源服务器)
操作
  1. 后台运行脚本

    nohup /root/sync.sh &
    
    • nohup:忽略挂断信号,确保脚本后台持续运行;
    • &:将进程放入后台。
  2. 验证脚本运行

    ps -ef | grep sync.sh
    

    输出应包含 /root/sync.sh 的进程信息。

原理

        nohup 和后台运行让脚本脱离终端,持续监控目录事件。

步骤 5:验证实时同步效果
操作(源服务器)
  1. 创建测试文件
    echo "test create" > /filesrc/test.txt
    
  2. 删除测试文件
    rm /filesrc/test.txt
    
原理

        inotifywait 监控到 “创建 / 删除” 事件,触发 rsync 同步到目标服务器。

验证(目标服务器)
  • 创建验证:执行 ls /filedst,应看到 test.txt;执行 cat /filedst/test.txt,输出 test create...

1.3 unison 双向实时同步

  • inotify:监控文件系统事件(创建、删除等),实时感知目录变化。
  • unison:双向文件同步工具,可保持两个目录内容一致(支持跨服务器,依赖 OCaml)。
  • 结合逻辑:inotifywait 监控目录事件,触发 unison 执行双向同步,实现 “一端变化 → 双向自动同步”。
步骤 1:环境准备
操作(两台服务器)
  1. 创建同步目录
    • filesrc 端:mkdir -p /filesrc
    • filedst 端:mkdir -p /filedst
  2. root 免密验证(可选,简化操作)
    • 生成密钥对(filesrc 端):ssh-keygen -t rsa(一路回车)
    • 上传公钥到 filedst 端:ssh-copy-id root@filedst服务器IP
    • 验证:ssh root@filedst服务器IP 无需密码即可登录。
步骤 2:安装依赖软件
1. 安装 inotify-tools(两台服务器)
# 安装编译依赖
yum -y install gcc# 假设压缩包为 inotify-tools-3.14.tar.gz
tar -xf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure && make && make install

验证inotifywait --help 输出帮助信息,说明安装成功。

2. 安装 OCaml(两台服务器)
# 假设压缩包为 ocaml-3.10.1.tar.gz
tar -xf ocaml-3.10.1.tar.gz
cd ocaml-3.10.1
./configure  # 忽略所有报错(实验环境简化)
make world opt
make install

验证ocaml -version 输出版本信息,说明安装成功。

3. 安装 unison(两台服务器)
# 假设压缩包为 unison-2.13.16.tar.gz
tar -xf unison-2.13.16.tar.gz
cd unison-2.13.16
# 已有 Makefile,直接编译(需 OCaml 环境)
make UISTYLE=text THREADS=true STATIC=true
make install

验证unison -version 输出版本信息,说明安装成功。

步骤 3:编写双向同步脚本
1. filesrc 端脚本(/root/sync_filesrc.sh
#!/bin/bash
# 监控 /filesrc 目录的创建、删除事件
inotifywait -mrq -e create,delete /filesrc | while read directory event file
do# 触发 unison 双向同步/usr/local/bin/unison -batch /filesrc/ ssh://root@filedst服务器IP//filedst/
done
  • inotifywait -mrq -e create,delete /filesrc:持续监控 /filesrc 的 “创建、删除” 事件;
  • unison -batch:非交互模式,自动确认同步。

添加执行权限chmod +x /root/sync_filesrc.sh

2. filedst 端脚本(/root/sync_filedst.sh
#!/bin/bash
# 监控 /filedst 目录的创建、删除事件
inotifywait -mrq -e create,delete /filedst | while read directory event file
do# 触发 unison 双向同步/usr/local/bin/unison -batch /filedst/ ssh://root@filesrc服务器IP//filesrc/
done

添加执行权限chmod +x /root/sync_filedst.sh

步骤 4:启动双向同步脚本
1. filesrc 端启动
nohup /root/sync_filesrc.sh &

验证ps -ef | grep sync_filesrc.sh 显示脚本进程在运行。

2. filedst 端启动
nohup /root/sync_filedst.sh &

验证ps -ef | grep sync_filedst.sh 显示脚本进程在运行。

步骤 5:验证双向实时同步
1. filesrc 端创建文件,验证 filedst 端同步
  • filesrc 端操作:echo "test from filesrc" > /filesrc/test.txt
  • filedst 端验证:cat /filedst/test.txt 输出 test from filesrc
2. filedst 端修改文件,验证 filesrc 端同步
  • filedst 端操作:echo "modify from filedst" >> /filedst/test.txt
  • filesrc 端验证:cat /filesrc/test.txt 输出:
    test from filesrc
    modify from filedst
    
3. filesrc 端删除文件,验证 filedst 端同步
  • filesrc 端操作:rm /filesrc/test.txt
  • filedst 端验证:ls /filedst 无 test.txt
4. filedst 端新建文件,验证 filesrc 端同步
  • filedst 端操作:echo "new from filedst" > /filedst/new.txt
  • filesrc 端验证:cat /filesrc/new.txt 输出 new from filedst
步骤 6:测试脚本后台运行与延迟(可选)
操作
  • 后台启动脚本(以 filesrc 端为例):bash /root/sync_filesrc.sh &
  • 在两台服务器频繁创建 / 修改文件,观察同步延迟(实验环境延迟通常在秒级内)

2.elk

2.1 概述

2.2 监控服务器端搭建

2.3 被监控Ngix端搭建

  • Nginx:Web 服务器,生成访问日志。
  • Filebeat:轻量级日志采集器,监控 Nginx 日志文件,将日志发送到 ELK(Elasticsearch + Logstash + Kibana)。
  • ELK
    • Elasticsearch:存储和检索日志数据;
    • Logstash:(可选)过滤、转换日志(本实验 Filebeat 直连 Elasticsearch,简化流程);
    • Kibana:可视化展示 Elasticsearch 中的日志。
步骤 1:安装 Nginx(日志生成端)
操作
yum -y install nginx
验证
  • 启动 Nginx:systemctl start nginx
  • 浏览器访问 Nginx 服务器 IP(如 http://192.168.137.13),显示 Nginx 欢迎页,说明 Nginx 正常运行。
步骤 2:下载并解压 Filebeat
操作
# 下载 Filebeat
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.3-linux-x86_64.tar.gz# 解压到 /usr/local/
tar -xf filebeat-6.2.3-linux-x86_64.tar.gz -C /usr/local/
验证
  • 执行 ls /usr/local/filebeat-6.2.3-linux-x86_64/,应看到 filebeat 可执行文件和 filebeat.yml 配置文件。
步骤 3:修改 Filebeat 配置(filebeat.yml
操作
  1. 进入 Filebeat 目录:
    cd /usr/local/filebeat-6.2.3-linux-x86_64/
    
  2. 编辑 filebeat.yml
    vim filebeat.yml
    
  3. 修改以下关键配置:
    • 启用日志监控
      filebeat.inputs:
      - type: logenabled: true  # 将 false 改为 truepaths:- /var/log/nginx/*.log  # 监控 Nginx 日志目录
      
    • 注释 Elasticsearch 输出(本实验直连 Logstash,若 ELK 无 Logstash 则需配置 Elasticsearch 输出,此处按步骤调整)
      #output.elasticsearch:#hosts: ["localhost:9200"]
      
    • 取消 Logstash 输出注释并修改 ELK 服务器 IP

      yaml

      output.logstash:hosts: ["192.168.137.138:5044"]  # ELK 服务器的 Logstash 端口(需确保 Logstash 已配置 5044 端口接收 Filebeat 数据)
      
原理
  • enabled: true 开启 Filebeat 的日志采集;
  • paths 指定要监控的 Nginx 日志路径;
  • output.logstash 配置将日志发送到 ELK 的 Logstash 进行处理。
步骤 4:启动 Filebeat 并验证日志
操作
  1. 后台启动 Filebeat:
    nohup ./filebeat -e -c filebeat.yml &
    
    • -e:输出到标准错误(便于调试);
    • -c:指定配置文件。
  2. 查看日志:
    tail -f nohup.out
    
验证
  • 日志中无明显错误(如 “connection failed”),且显示 “Harvester started” 等信息,说明 Filebeat 已开始监控日志。
步骤 5:生成 Nginx 访问日志
操作
  • 浏览器多次访问 Nginx 服务器(如 http://192.168.137.13),生成多条访问日志。
原理

        每次访问 Nginx 都会在 /var/log/nginx/access.log 中生成一条日志,Filebeat 会捕获这些新日志。

步骤 6:验证 ELK 中日志收集
操作(访问 Kibana)
  1. 浏览器访问 Kibana(如 https://192.168.137.138:5601)。
  2. 点击左侧 “Discover”。
  3. 配置索引模式:
    • 输入 logstash-*(若 Filebeat 直连 Elasticsearch,索引名可能为 filebeat-*,需根据实际情况调整),点击 “Next step”。
    • 选择时间过滤字段(如 @timestamp),点击 “Create index pattern”。
验证
  • Kibana “Discover” 页面应显示 Nginx 访问日志的条目,包含请求 IP、时间、URL 等信息。
http://www.dtcms.com/a/462165.html

相关文章:

  • wordpress 数据站wordpress 会员投搞
  • 滨州淄博网站建设展示型网站建设流程方案
  • 基于springboot的学科竞赛管理系统开发与设计
  • ros2 服务创建与调用范例 python
  • MySQL InnoDB存储引擎缓存刷盘CheckPoint技术底层实现原理详细介绍
  • nginx rewrite if 浏览器分离 防盗链
  • 网站规划文档知乎关键词搜索排名
  • 订餐网站模板下载三亚市住房和城乡建设局网站
  • IT 服务自动化的时代:让效率与体验共进
  • 【学习篇】什么是分布式系统
  • paper.js 实现图片简单框选标注功能
  • 磁悬浮轴承的非线性特性深度解析:从理论到实践的挑战与突破
  • 怎样设计网站静态页面我要发布招聘信息
  • Shape-Guided Diffusion with Inside-Outside Attention
  • MySQL实战篇1:慢查询优化实战-4道题的真实优化记录
  • 怎样建立自己的网站卖东西个人网站备案填写要求
  • term.everything‌ 通过终端运行任意GUI应用程序
  • 去噪自编码器(DAE)
  • 形象设计公司网站建设方案书营销公司的营业范围
  • 关于网站备案的44个问题wordpress 发表文章
  • 做网站定金是多少网站开发项目外包
  • 中国制造网官方网站入口网址秦皇岛黄页大全秦皇岛本地信息网
  • Linux 文件打开函数 `open()` 深入解析
  • ESP8266实现mqtt
  • 初识MYSQL —— 表的约束
  • mysql存储微信Emoji表情问题
  • DzzOffice 通知功能(notification_add)调用
  • 西安手机网站建设公司排名安徽房产网站建设
  • 杭州强龙网站建设电话广西桂林天气预报7天
  • autosar