一.通过rsync搭建备份服务器

这三个目录我们需要做实时热备,他们分别是  系统的脚本目录  系统的配置文件目录  系统的定时任务目录

[root@mage-monitor- ~]# cat /server/scripts/backuplist
/server/scripts
/etc
/var/spool/cron

1.使用ansible 的 file模块 在所有主机上模拟创建 一个写脚本的 目录

[root@mage-monitor- scripts]# for i in `cat backuplist`;do ansible all -m file -a "path=/server/scripts state=directory"; done;

2.服务端安装部署rsync

[root@store-rsync-01 ~]# yum install -y rsync

设置rsync的开机自启动

[root@store-rsync- ~]# chmod +x /etc/rc.d/rc.local 
[root@store-rsync-01 ~]# echo  "rsync --daemon" >>/etc/rc.d/rc.local

配置

uid = root
gid = root
use chroot = no
max connections =
timeout =
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 192.168.5.0/
auth users = benjamin
secrets file = /etc/rsync.password
[backup]
comment = "backup dir "
path = /backup
[nfsbackup]
comment = "nfsbackup dir"
path = /nfsbackup
[scripts]
comment = "scripts dir"
path = /server/scripts
[etc]
comment = "etc dir"
path = /etc
[crontab]
comment = "crontab dir"
path = /var/spool/cron

创建 rsync用户

[root@store-rsync- ~]# useradd -s /sbin/nologin -M rsync

创建数据备份储存目录,目录修改属主

[root@backup ~]# mkdir /nfsbackup/
[root@backup ~]# chown -R rsync.rsync /nfsbackup/

创建认证用户密码文件并进行授权600

[root@store-rsync- ~]# echo "benjamin:123" >>/etc/rsync.password
[root@store-rsync- ~]# chmod /etc/rsync.password

启动rsync服务

rsync --daemon
[root@store-rsync- ~]# ps -ef |grep rsync
root : ? :: rsync --daemon
root : pts/ :: grep --color=auto rsync

3.客户端测试

创建安全认证文件,并进行修改权限600

echo "123" >>/etc/rsync.password
chmod 600 /etc/rsync.password
[root@mage-monitor-01 scripts]# rsync -avz `pwd`  benjamin@192.168.5.131::nfsbackup  --password-file=/etc/rsync.password
sending incremental file list
rsync: chgrp "scripts" (in nfsbackup) failed: Operation not permitted ()
scripts/
scripts/a.sh
rsync: chgrp "scripts/.a.sh.SdKZyg" (in nfsbackup) failed: Operation not permitted () sent bytes received bytes 676.00 bytes/sec
total size is speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code ) at main.c() [sender=3.1.]

4.使用ansible  copy模块 将/etc/rsync.password   和  同步脚本发送到所有主机

备份脚本

[root@mage-monitor- scripts]# cat backup_to_rsync.sh
#!/bin/bash #source function lib
. /etc/init.d/functions rsync_host=rsync.woniu.com #Defined varibles
IP=$(ifconfig eth1|awk -F '[ :]+' 'NR==2 {print $3}')
Path="/backup/$IP"
TIME=`/bin/date +%F`
BackupFile=/server/scripts/backuplist # Judge the existence of varibles
[ ! -d $Path ] && mkdir -p $Path [ ! -f $BackupFile ] && {
echo "Please give me $BackupFile"
exit
} # Defined result function
function Msg(){
if [ $? -eq ];then
action "$*" /bin/true
else
action "$*" /bin/false
fi
} # Backup config files
tar zcfh $Path/conf_${TIME}.tar.gz `cat $BackupFile` &>/dev/null
Msg 'Backup config files' # Make a flag for backup
find $Path -type f -name "${TIME}.tar.gz"|xargs md5sum >$Path/flag_$TIME >/dev/null
Msg 'Make a flag for backup' # Send backup to backup server
rsync -avz $Path benjamin@${rsync_host}::backup --password-file=/etc/rsync.password
Msg 'Send backup to backup server' # Delete backup a week ago
find ${Path-/tmp} -type f -name "*.tar.gz" -mtime +|xargs rm -f &>/dev/null
Msg 'Delete backup a week ago'
[root@mage-monitor- ~]# ansible all -m copy -a "src=/server/scripts/backuplist  dest=/server/scripts/"                             
[root@mage-monitor- scripts]# ansible all -m copy -a "src=/etc/rsync.password dest=/etc"
[root@mage-monitor- scripts]# ansible all -m copy -a "src=/server/scripts/backup_to_rsync.sh  dest=/server/scripts/" 

5.将脚本加入定时任务使用每天凌晨推送 ansible的 shell 模块

centos7默认 的定时任务文件没有执行权限需要添加一下

[root@mage-monitor- scripts]# ansible all -m shell -a "chmod +x /etc/rc.d/rc.local"  

定时脚本

[root@mage-monitor- scripts]# cat set_backup_script.sh
#!/bin/bash
function crond_backup(){
[ `crontab -l|grep "backup data"|wc -l` -eq ]&&{ echo -e "#backup data\n 00 00 * * * /bin/sh /server/scripts/backup_to_rsync.sh >/dev/null 2>&1" >> \
/var/spool/cron/root
crontab -l
sleep
}||{
echo "backup cron is exist,no config."
} }
crond_backup

将脚本 发送到所有主机 已存在的不做覆盖

[root@mage-monitor- ~]# ansible all -m copy -a "src=/server/scripts/set_backup_script.sh  dest=/server/scripts/"

使用ansible的 script模块 执行脚本 removes参数判断脚本不存在就不执行,反之就执行

[root@mage-monitor- ~]# ansible all -m script -a "removes=/server/scripts/set_backup_script.sh /server/scripts/set_backup_script.sh "

将备份结果发邮件提醒就不弄了,比较简单。

下一节搞小米监控

使用windos模拟搭建web集群(二)的更多相关文章

  1. 使用windos电脑模拟搭建web集群(一)

    资源规划 1.环境准备 centos7.2 虚拟机 13个 可以先配置一台,做好基础优化,然后克隆13台分布在 windos宿主机上 两台windos笔记  都是8g的内存 一台有点内存吃紧. 没有物 ...

  2. Haproxy配合Nginx搭建Web集群部署

    Haproxy配合Nginx搭建Web集群部署实验 1.Haproxy介绍 2.Haproxy搭建 Web 群集 1.Haproxy介绍: a)常见的Web集群调度器: 目前常见的Web集群调度器分为 ...

  3. Haproxy搭建web集群

    目录: 一.常见的web集群调度器 二.Haproxy应用分析 三.Haproxy调度算法原理 四.Haproxy特性 五.Haproxy搭建 Web 群集 一.常见的web集群调度器 目前常见的we ...

  4. 搭建Hadoop集群 (二)

    前面的步骤请看  搭建Hadoop集群 (一) 安装Hadoop 解压安装 登录master, 下载解压hadoop 2.6.2压缩包到/home/hm/文件夹. (也可以从主机拖拽或者psftp压缩 ...

  5. 在本地模拟搭建zookeeper集群环境实例

    先给一堆学习文档,方便以后查看 官网文档地址大全: OverView(概述) http://zookeeper.apache.org/doc/r3.4.6/zookeeperOver.html Get ...

  6. Web集群调度器-Haproxy

    Web集群调度器-Haproxy 目录 Web集群调度器-Haproxy 一.Web集群调度器 1.常用的Web集群调度器 2. Haproxy应用分析 3. Haproxy的主要特性 4. 常用集群 ...

  7. 搭建Hadoop集群 (三)

    通过 搭建Hadoop集群 (二), 我们已经可以顺利运行自带的wordcount程序. 下面学习如何创建自己的Java应用, 放到Hadoop集群上运行, 并且可以通过debug来调试. 有多少种D ...

  8. 搭建Hadoop集群 (一)

    上面讲了如何搭建Hadoop的Standalone和Pseudo-Distributed Mode(搭建单节点Hadoop应用环境), 现在我们来搭建一个Fully-Distributed Mode的 ...

  9. Windows及Linux环境搭建Redis集群

    一.Windows环境搭建Redis集群 参考资料:Windows 环境搭建Redis集群 二.Linux环境搭建Redis集群 参考资料:Redis Cluster的搭建与部署,实现redis的分布 ...

随机推荐

  1. c语言printf()输出格式大全(转载)

    1.转换说明符      %a(%A)     浮点数.十六进制数字和p-(P-)记数法(C99)      %c             字符      %d             有符号十进制整 ...

  2. hive原理

    什么是Hive Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. Hive架构图 Jobtracker是hadoop1.x中的组件,它的 ...

  3. ios交叉编译dylib

    ios交叉编译dylib 因多个静态库,libes,libffmpeg,libmt. libpcap 使用不方便 在封装一层接口,生成动态库(c代码),由IOS app上层调用. IOS_BASE_S ...

  4. 《Cracking the Coding Interview》——第18章:难题——题目7

    2014-04-29 03:05 题目:给定一个词典,其中某些词可能能够通过词典里其他的词拼接而成.找出这样的组合词里最长的一个. 解法:Leetcode上有Word Break这道题,和这题基本思路 ...

  5. 《Cracking the Coding Interview》——第10章:可扩展性和存储空间限制——题目7

    2014-04-24 22:06 题目:搜索引擎问题,如果有一列100台服务器的集群,用来响应查询请求,你要如何设计query分发和cache策略? 解法:query分发可以用计算数字签名并对机器数取 ...

  6. DOS程序员手册(二)

    2.6存储设备     随着DOS的升级,磁盘存储容量也有了很大扩充.表2.4介绍了软盘容量的增加以     及所支持驱动器型号的数量.                                 ...

  7. 【UVA10655】 Contemplation! Algebra

    题目 给定 \(p = a + b\) 和 \(q = ab\) 和 \(n\),求 \(a ^ n + b ^ n\). $0\le n\lt 2^{63} $ 分析 大水题. 先考虑 \(n\) ...

  8. HTML5新增属性学习笔记

    1.form属性 表单内的从属元素,可以写在表单外部.可以通过指定元素的form属性来声明元素所属表单.form的属性值为表单的id. <form id="testForm" ...

  9. 【志银】NYOJ《题目524》A-B Problem

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=860 My思路: 先用两个字符串储存这两个实数,然后再用另外两个字符串储存去掉符号和前后多 ...

  10. 用Python实现基于Hadoop Stream的mapreduce任务

    用Python实现基于Hadoop Stream的mapreduce任务 因为Hadoop Stream的存在,使得任何支持读写标准数据流的编程语言实现map和reduce操作成为了可能. 为了方便测 ...