三个任务(blog)版
三个任务
第一个任务备份服务
- nfs和backup两台服务器
- nfs客户端 ——> backup服务端
服务端配置(backup服务器)
1)安装rsync服务
yum install -y rsync
2)修改配置文件
#修改配置文件/etc/rsyncd.conf
uper =yes
uid = rsync #rsync运行 用户 虚拟用户
gid = rsync
use chroot = no
max connections = 2000 #最大连接数
timeout = 600 #连接超时 超时时间
pid file = /var/run/rsyncd.pid #存放服务的pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log #rsync服务端日志
ignore errors
read only = false
list = false
auth users = rsync_backup #rsync服务端进行验证用户用户名
secrets file = /etc/rsync.password #rysnc服务端用于验证密码文件
[nfs_data] #模块对应的目录
path = /nfs_data
3)添加rsync用户
useradd -s /sbin/nologin -M rsync
4)创建密码文件,配置文件中认证用户密码更改密码文件权限
echo 'rsync_backup:123456' > /etc/rsync.password
chmod 600 /etc/rsync.password #不改权限的话会报错
5)创建模板中文件夹并修改属组改为rsync.rsync
mkdir -p /nfs_data
chown -R rsync.rsync /nfs_data
6)重启服务并设置自动启动
systemctl enable rsyncd
systemctl start rsyncd
客户端安装部署(nfs服务器)
1)安装rsync服务
yum install -y rsync
2)免密交互client文件
echo '123456' > /etc/rsync.client
第二个任务nfs存储服务
- nfs和web服务器部署
- web服务器上挂载到nfs上
服务端(nfs服务器)
1)部署 nfs-utils,rpcbind
yum install -y nfs-utils,rpcbind
2)修改配置文件 /etc/exports
/nfsdata/ 172.16.1.0/24(rw,allsquash)
3)创建共享目录并修改所有者
mkdir /nfsdata
chown -R nfsnobody.nfsnobody /nfsdata
4)启动服务 rpcbind 和 nfs(按照先rpc后nfs)
systemctl restart rpcbind
systemclt restart nfs
客户端(web服务器)
1)安装nfs-utils
yum install -y nfs-utils
2)创建挂在目录/ans-upload
mkdir /ans-upload
3)挂载和永久挂载
mount -t nfs 172.16.1.31:/nfsdata/ /ans-upload/
#查看挂载目录没
showmount -e 172.16.1.31
#查看现有挂载
df -h
第三个实时同步服务(Sersync)
- 在nfs端部署
nfs端
1)修改sersync的配置文件和运行文件
软件包下载个好多年不更新了,2.5.4版本
tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz
[root@nfs ~]# tree GNU-Linux-x86/
GNU-Linux-x86/
├── confxml.xml
└── sersync2
confxml.xml 配置文件
sersync2 命令
- sersync配置参数
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
<host hostip="localhost" port="8008"></host> #保留字段,默认即可
<debug start="false"/> #是否开启调试模式,默认false即可
<fileSystem xfs="true"/> #是否开启支持xfs文件系统,Centos7默认都是xfs的了,所以建议true开启
<filter start="false"> #是否开启过滤模式.根据需求开启,例:过滤以.php结尾的文件(.*)\.php
<exclude expression="(.*)\.svn"></exclude> #过滤以.svn结尾的文件
<exclude expression="(.*)\.gz"></exclude> #过滤以.gz结尾的文件
<exclude expression="^info/*"></exclude> #过滤监控目录下的info路径
<exclude expression="^static/*"></exclude> #过滤监控目录下的static路径
<exclude expression="wwwroot/blogwhsir/*"></exclude> #过滤wwwroot/blogwhsir/目录下所有文件
</filter>
<inotify> #inotify监控事件
<delete start="true"/> #如果不开启此项,在删除监控目录下的文件时,目标服务器的文件则不会同时删除,根据需求开启
<createFolder start="true"/> #不开启不能监控子目录,建议true
<createFile start="false"/> #关闭提高通讯性能,默认就好
<closeWrite start="true"/> #是否有closeWrite事件(修改后退出)
<moveFrom start="true"/> #移动/改名
<moveTo start="true"/> #移动/改名
<attrib start="false"/> #文件属性变化
<modify start="false"/> #文件内容修改
</inotify>
<sersync>
<localpath watch="/opt/tongbu"> #指定要监控的本地目录
<remote ip="127.0.0.1" name="tongbu1"/> #指定要同步的目标服务器的IP地址,及目标服务器rsync的[模块]
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>
<rsync> #配置rsync
<commonParams params="-artuz"/> #rsync的参数
<auth start="false" users="root" passwordfile="/etc/rsync.pas"/> #是否开启rsync的认证模式,需要配置users及passwordfile,根据情况开启(如果开启,注意密码文件权限一定要是600)
<userDefinedPort start="false" port="874"/><!-- port=874 --> #远程目标服务器的端口不是默认端口时使用
<timeout start="false" time="100"/><!-- timeout=100 --> #是否开启rsync的超时时间
<ssh start="false"/>
</rsync>
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once--> #目标服务器传输失败时会重新传输,再次失败会写入rsync_fail_log中,每隔一段时间timeToExecute)执行脚本再次传输
<crontab start="false" schedule="600"><!--600mins--> #对监控目录与目标服务器每隔一段时间进行一次整体同步,默认600分钟,根据个人情况是否开启
<crontabfilter start="false"> #如果之前开启了文件过滤,这里也要设置过滤
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
<plugin start="false" name="command"/>
</sersync>
<plugin name="command"> #下面就是插件的设置(不做过多说明)
<param prefix="/bin/sh" suffix="" ignoreError="true"/> <!--prefix /opt/tongbu/mmm.sh suffix-->
<filter start="false">
<include expression="(.*)\.php"/>
<include expression="(.*)\.sh"/>
</filter>
</plugin>
<plugin name="socket">
<localpath watch="/opt/tongbu">
<deshost ip="192.168.138.20" port="8009"/>
</localpath>
</plugin>
<plugin name="refreshCDN">
<localpath watch="/data0/htdocs/cms.xoyo.com/site/">
<cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
<sendurl base="https://blog.whsir.com"/>
<regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
</localpath>
</plugin>
</head>
- 需要修改的内容
<sersync>
<localpath watch="/ans-upload"> #指定要监控的本地目录
<remote ip="127.0.0.1" name="nfsdata"/> #指定要同步的目标服务器的IP地址,及目标服务器rsync的模块
</rsync>
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once--> #目标服务器传输失败时会重新传输,再次失败会写入rsync_fail_log中,每隔一段时间timeToExecute)执行脚本再次传输
<crontab start="false" schedule="600"><!--600mins--> #对监控目录与目标服务器每隔一段时间进行一次整体同步,默认600分钟,根据个人情况是否开启
</rsync>
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once--> #目标服务器传输失败时会重新传输,再次失败会写入rsync_fail_log中,每隔一段时间timeToExecute)执行脚本再次传输
2)启动sersync2服务
#创建软连接后,可以直接在命令行使用sersync2命令
ln -s /app/tools/sersync2 /bin/sersync2
#运行sersync2
sersync2 -rdo /app/tools/confxml.xml
最后结果
在web服务器的/ans-upload中创建文件时,会被同步到nfs的/nfsdata目录中,经过sersync实时同步后同步到backup服务器中的/nfs-data中
三个任务(blog)版的更多相关文章
- OOP第三次总结Blog
1. 前言 相比于前一次Blog题目集,此次七八九题目集偏重于类的继承.多态性使用方法以及接口的应用;在设计层面,强调模式复用,不断的迭代,若前期设计不合理,则后续的题目增加新的功能(即可扩展性)将会 ...
- Java 学习札记(三)免安装版TomCat中tomcat6w.exe的运行
1.使用环境 很多时候我们用的是官网的解压免安装版的Tomcat,相比安装Tomcat除了少了安装步骤以外还少了tomcat6w.exe运行所需要的环境变量,所以一般Java开发免安装版的已经足够使用 ...
- Spring 循环引用(三)源码深入分析版
@ 目录 前言 正文 分析 doGetBean 为什么Prototype不可以 createBean doCreateBean getEarlyBeanReference getSingleton b ...
- 《数据结构与算法Python语言描述》习题第二章第三题(python版)
ADT Rational: #定义有理数的抽象数据类型 Rational(self, int num, int den) #构造有理数num/den +(self, Rational r2) #求出本 ...
- win10教育版永久激活密钥 win10教育版激活码 win10教育版产品密钥2018(第三种方法亲测可用!)
有没有最新win10教育版激活密钥?win10教育版功能比较全面,增加了一些学术上需要的功能.有用户装了win10教育版,提示需要产品密钥,网上找到的win10教育版永久激活码大多失效,这边小编为大家 ...
- 【RAC】 RAC For W2K8R2 安装--共享磁盘的配置(三)
[RAC] RAC For W2K8R2 安装--共享磁盘的配置(三) 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学 ...
- 【OGG】OGG简单配置双向复制(三)
[OGG]OGG简单配置双向复制(三) 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O ...
- Django:快速搭建简单的Blog
一,创建项目 1, 为blog创建名为mysite的工程项目: django-admin.py startproject mysite 2, 项目结构如下: mysite ├── manage.py ...
- centos 7 部署 汉化版 gitlab
=============================================== 2017/11/12_第6次修改 ccb_warlock 更 ...
- Linux的发行版,不同发行版之间的联系和区别
Linux 主要作为Linux发行版(通常被称为"distro")的一部分而使用.这些发行版由个人,松散组织的团队,以及商业机构和志愿者组织编写.它们通常包括了其他的系统软件和应用 ...
随机推荐
- linux环境编程(1): 实现一个单元测试框架
写在前面 在开发的过程中,大多数人都需要对代码进行测试.目前对于c/c++项目,可以采用google的gtest框架,除此之外在github上搜索之后可以发现很多其他类似功能的项目.但把别人的轮子直接 ...
- DML_添加数据-DML_删除数据
DML_添加数据 添加数据 语法 : insert into 表名(列名1,列名2,...列名n) values (值1,值2,... 值n); 注意: 1.列名和值要一一对应. 2.如果表名后,不定 ...
- 定时调度插件------Longbow.Tasks
官网地址Longbow.Tasks 使用说明 dll引用 使用NuGet 搜索Longbow.Task可找到相关版本的dll 目前最新的为7.0.0版本,需net6.0+ 如果低版本用户可使用5.2. ...
- mysql 错误解决大法 Specified key was too long; max key length is 767 bytes
高版本mysql向低版本(5.7以下)导入sql时可能会发生此问题 开启索引最大长度 SET GLOBAL INNODB_LARGE_PREFIX = ON; 将表改为动态表SET GLOBAL in ...
- 数据库系列:MySQL慢查询分析和性能优化
1 背景 我们的业务服务随着功能规模扩大,用户量扩增,流量的不断的增长,经常会遇到一个问题,就是数据存储服务响应变慢. 导致数据库服务变慢的诱因很多,而RD最重要的工作之一就是找到问题并解决问题. 下 ...
- 1888: 生成括号(等级考试3级 2021-09 T5)
题目: 程序: #include<bits/stdc++.h> using namespace std; int n; string s1; void dfs(int l,int r) { ...
- Symbol.iterator 迷惑行为
- C-04\IDE基础知识和分支,循环语句
一.浮点数特性及比较方法 浮点数在多参数传参的时候默认是会进行精度转换,由float转换到double,浮点数是一个近视值,不能进行直接等于比较,一般可以用区间法比较但是会存在精度丢失的问题. 浮点数 ...
- Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to 解决办法
main.js 配置如下 import Router from 'vue-router'; //路由导航冗余报错(路由重复) const originalPush = Router.prototype ...
- UBUNTU18.04安装CUDA
1.官方教程https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#ubuntu-installation 2.在h ...