day04 sersync实时同步和ssh服务
day04 sersync实时同步和ssh服务
sersync实时同步
1、什么是实时同步
实时同步是一种只要当前目录发生变化则会触发一个事件,事件触发后会将变化的目录同步至远程服务器。
2、为什么使用
保证数据的连续性, 减少人力维护成本,解决nfs单点故障
3、实时同步原理
利用inotify通知接口,监控本地目录变化,只要监控目标发生变化,就触发事件,执行相应操作。
NFS的故障切换
三个需求
1、NFS实时同步到Rsync中
2、Rsync中也配置NFS服务端
3、自动故障切换
1、NFS实时同步到Rsync中
NFS实时同步到Rsync中
inotify + rsync 实现实时同步,但是无法使用守护进程方式运行
sersync = inotify + rsync + 守护进程 # 可以用守护进程方式运行
1、上传软件包
[root@rsync ~]# sz [文件路径]
2、解压
[root@rsync ~]# tar -xf sersync2.5.4_64bit_binary_stable_final.tar.gz
[root@rsync ~]# mv GNU-Linux-x86 /usr/local/
3、配置文件
[root@rsync ~]# cd /usr/local/GNU-Linux-x86/
[root@rsync GNU-Linux-x86]# vim confxml.xml
4、开始实时同步(监控那一台服务器上目录就部署到那一台服务器上):sersync2.5.4_64bi
1)、需要监控的目录/data
[root@rsync ~]# scp sersync2.5.4_64bit_binary_stable_final.tar.gz 172.16.1.31:/root/
[root@nfs ~]# tar -xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/
[root@nfs ~]# cd /usr/local//GNU-Linux-x86/
2)、开启监控
[root@rsync GNU-Linux-x86]# vim confxml.xml 修改sersync的配置
[root@rsync ~]# vim /etc/rsyncd.conf # 添加sersync的模块名
[sersync]
comment = welcome to sersync server!
path = /sersync
3)、创建目录,并修改权限
[root@rsync ~]# mkdir /sersync # 创建目录,和path = /sersync一致
[root@rsync ~]# chown rsync.rsync /sersync # 修改权限
[root@nfs GNU-Linux-x86]# /usr/local/GNU-Linux-x86/sersync2 -dro /usr/local/GNU-Linux-x86/confxml.xml
4)、设置密码权限
[root@nfs GNU-Linux-x86]# echo "123456" > /etc/rsync.passwd # 编写密码
[root@nfs GNU-Linux-x86]# chmod 600 /etc/rsync.passwd # 设置权限
5)、查看是否同步
[root@rsync sersync]# systemctl start rsyncd # 记得在rsync开启rsyncd服务
[root@nfs data]# touch 2.txt # 去rsync里/sersync看同步过来了吗
注:不知道什么问题同步不了,执行下面的命令
[root@nfs data]# cd /data && rsync -az -R --delete ./ rsync_backup@172.16.1.41::sersync --password-file=/etc/rsync.passwd
修改sersync配置文件详情
[root@rsync ~]# cd /usr/local/GNU-Linux-x86/
[root@rsync GNU-Linux-x86]# vim confxml.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
<host hostip="localhost" port="8008"></host> #本机ip地址和端口
<debug start="false"/> #是否打开调试模式
<fileSystem xfs="false"/> #是否支持xfs文件系统
<filter start="false"> #是否过滤,是否排除名称中含有制定字符串的文件的同步
<exclude expression="(.*)\.svn"></exclude>
<exclude expression="(.*)\.gz"></exclude>
<exclude expression="^info/*"></exclude>
<exclude expression="^static/*"></exclude>
</filter>
<inotify>
#inotify 监控的动作
<delete start="true"/> #删除动作
<createFolder start="true"/> #创建文件夹动作
<createFile start="true"/> #创建文件动作
<closeWrite start="true"/> #写入完成动作
<moveFrom start="true"/> #移动来自动作
<moveTo start="true"/> #移动到动作
<attrib start="true"/> #属性被更改
<modify start="true"/> #修改动作
</inotify>
<sersync>
<localpath watch="/data"> #监控的目录
<remote ip="172.16.1.41" name="web_data"/> #远端rsync服务器的地址和模块
</localpath>
<rsync>
<commonParams params="-az"/> #rsync的参数
<auth start="true" users="rsync_backup" passwordfile="/etc/rsync.passwd"/>
#开启认证 #虚拟用户 #指定虚拟用户的密码文件
#如果远端rsync服务不是873端口,则开启并修改
<userDefinedPort start="false" port="874"/><!-- port=874 #如果远端rsync服务不是873端口,则开启并修改
<timeout start="false" time="100"/><!-- timeout=100 --> #超时时间
<ssh start="false"/>
</rsync>
#错误日志存储路径
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once--> #定时任务,开启后,600分钟默认全备一次
#定时任务,开启后,600分钟默认全备一次
<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="http://pic.xoyo.com/cms"/>
<regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
</localpath>
</plugin>
</head>
2、Rsync中也配置NFS服务端
1、安装nfs软件
[root@rsync ~]# yum install nfs-utils rpcbind -y # 安装nfs软件
2、修改NFS的配置文件(作用:指定NFS的仓库及权限)
[root@rsync ~]# vim /etc/exports
[root@rsync ~]# cat /etc/exports
/sersync 172.16.1.0/20(rw,all_squash,sync,anonuid=996,anongid=996)
3、启动NFS服务
[root@rsync ~]# systemctl restart nfs-server rpcbind
4、查看挂载
[root@rsync ~]# showmount -e
Export list for rsync:
/sersync 172.16.1.0/20
3、故障切换
1、挂载
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /var/www/html/img # 一个创建都有了,因为都挂载到NFS
[root@web02 html]# mount -t nfs 172.16.1.31:/data /var/www/html/upload
2、判断是否故障,故障切换
[root@web02 html]# vim nfs.sh # 编写脚本来判断
#!/bin/bash
showmount -e 172.16.1.31
if [ $? -ne 0 ];then
mount -t nfs 172.16.1.41:/sersync /var/www/html/upload
fi
[root@web02 ~]# ./nfs.sh
[root@web02 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.5M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 98G 2.7G 96G 3% /
/dev/sda1 509M 162M 348M 32% /boot
tmpfs 98M 0 98M 0% /run/user/0
172.16.1.31:/data 98G 3.6G 95G 4% /var/www/html/upload
172.16.1.41:/sersync 98G 3.6G 95G 4% /var/www/html/upload
[root@nfs data]# systemctl stop nfs-server
[root@web02 ~]# ll /var/www/html/upload # 还能看就代表成功了
3、加入定时任务
[root@web02 ~]# crontab -e
[root@web02 ~]# crontab -l
* * * * * /root/nfs.sh &>/dev/null
ssh服务
SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输。确保了数据传输安全。那SSH服务主要功能有哪些呢?
1.提供远程连接服务器的服务
1)linux远程连接协议: ssh服务 端口22
2)windows远程连接: RDP协议 端口3389
2.对传输的数据进行加密
SSH是一个加密的网络传输协议。相同的有一个telnet协议(明文)。
1、telnet和ssh之间区别
telnet:
1.不支持root用户登录,只允许普通用户登录
2.数据传输过程中明文的
ssh:
1.支持root用户登录
2.数据传输过程中时加密码
各种服务对应的端口
#笔试题:请说明以下服务对应的端口号或者端口对应的服务
ssh 22
telnet 23
http 80
https 443
ftp 20 21
RDP 3389
mysql 3306
redis 6379
zabbix 10050 10051
elasticsearch 9200 9300
rsync 873
rpcbind 111
使用Telnet连接服务器
1、首先创建一个普通用户(因为不支持root用户登录)
[root@m01 ~]# useradd test
[root@m01 ~]# passwd test
2、安装Telnet服务
[root@m01 ~]# yum install telnet telnet-server -y
3、开启telnet服务
[root@m01 ~]# systemctl restart telnet.socket
[root@m01 ~]# yum install net-tools # 下载网络工具
[root@m01 ~]# netstat -nutlp # 查看网络端口
4、连接telnet服务
[c:\~]$ telnet test@192.168.15.71 # 打开一个新窗口,并连接。密码是明文
[c:\~]$ ssh root@192.168.15.71 # ssh是密文的
ssh服务相关命令
ssh命令:
1、ssh root@192.168.15.71 [command]
ssh 连接的命令
root 连接的用户
@ 分隔符,没有特殊意义
192.168.15.71 连接IP
command 需要执行的命令
2、ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.15.71
sh-copy-id 将公钥复制到指定服务器中命令(可以免密登录)
-i 指定公钥
root 用户
@ 分隔符,没事特殊意义
192.168.15.71 IP
结果:会在指定的服务器中创建~/.ssh/authorized_keys ,并且会将本服务器中的公钥复制到其中,以至于实现免密登录。
[root@m01 .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.15.7
[root@m01 .ssh]# ll
total 16
-rw------- 1 root root 390 Oct 21 19:10 authorized_keys
[root@web01 ~]# cat .ssh/authorized_keys 查看公钥
2)、用公钥免密登录
打开--->工具选项栏--->密码生成向导--->一路下一步复制公钥到
[root@m01 ~]# vim .ssh/authorized_keys # 把公钥复制到这里
用秘钥登录
3、ssh-keygen:生成密钥证书
[root@m01 ~]# ssh-keygen
[root@m01 ~]# ll -a
drwx------ 2 root root 38 Oct 21 19:04 .ssh
[root@m01 ~]# cd .ssh
[root@m01 .ssh]# ll
total 8
-rw------- 1 root root 1679 Oct 21 19:04 id_rsa
-rw-r--r-- 1 root root 390 Oct 21 19:04 id_rsa.pub
# 会在家目录中生成一个.ssh的目录,其中包含id_rsa,id_rsa.pub文件
id_rsa # 私钥(钥匙)
id_rsa.pub # 公钥(锁)
ssh验证方式
1、密码验证
直接输入密码即可。
2、秘钥验证
通过公钥和私钥验证的。
密钥的方式比较安全
免密登录
免密的前提,将公钥写入需要登录的服务器的~/.ssh/authorized_keys文件中
免密相关的命令:ssh-copy-id
[root@m01 ~]# for i in 5 6 7 8 9 31 41 51 61 71;do ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.$i; done
[root@m01 ~]# ssh 172.16.1.31 # 不用输入密码登录
SSH企业案例(跳板机)
1、将跳板机免密登录所有的机器
[root@m01 ~]# for i in 5 6 7 8 9 31 41 51 61 71;do ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.$i; done
2、登录脚本
1、一进来就立即让选择登录的服务器
[root@m01 ~]# vim login.sh
[root@m01 ~]# chmod +x login.sh
/etc/profile.d :放到这里开机自启动
[root@m01 ~]# mv login.sh /etc/profile.d # 把文件放到这个目录会开机自启动
2、可以多次选择需要登录的服务器
使用while循环
3、超管可以通过用户名密码的方式,重新进入跳板机系统
if [[ $IP = "m" ]];then
read -p "请输入用户名:" USER
read -p "请输入密码:" PASSWORD
if [[ $USER = "meng" && PASSWORD = "123456" ]]:then
break
fi
fi
4、解决登录不存在的IP
ping -c 1 -t 1 172.16.1.$IP &>/dev/null
if [ $? -ne 0 ];then # -ne:不等于0
echo "您输入的服务器编号:$IP 不存在。"
continue
fi
知识储备:
命令行交互输入内容的命令是read
#!/bin/bash
read -p "提示语:" STR
echo $STR
ping命令参数
-c : 指定ping的次数
-t : 指定每次ping的超时时间
编写的脚本
#!/bin/bash
while true
do
echo "5) lb01"
echo "6) lb02"
echo "7) web01"
echo "8) web02"
echo "9) web03"
echo "31) nfs"
echo "41) rsync"
echo "51) db01"
echo "61) prometheus01"
echo "71) m01"
read -p "请选择需要登录的服务器:" IP
if [[ $IP = "m" ]];then
read -p "请输入用户名:" USER
read -p "请输入密码:" PASSWORD
if [[ $USER = "meng" && $PASSWORD = "123456" ]];then
break
fi
fi
ping -c 1 -t 1 172.16.1.$IP &>/dev/null
if [ $? -ne 0 ];then
echo "您输入的服务器编号:$IP 不存在。"
continue
fi
ssh root@172.16.1.$IP
done
day04 sersync实时同步和ssh服务的更多相关文章
- 搭建WEB、NFS共享、sersync实时同步以及全网定时备份服务流程
本次实验的主要目的: 1.搭建web服务,使用nfs服务共享的/data目录挂载到web站点目录上. 2.nfs服务器与backup服务器使用sersync实时同步/data目录中的文件. 3.bac ...
- Sersync实时同步企业应用配置实战
一.实验环境 CentOS版本: 6.6(2.6.32.-504.el6.x86_64) Rsync版本: Rsync-3.0.6(系统自带) Sersync版本:sersync2.5.4_64bi ...
- Rsync + sersync 实时同步备份
一 Rsync + Sersync 实时同步介绍 1.Rsync 服务搭建介绍 云机上搭建Rsync server,在本地搭建Rsync Clinet. 2. Sersync 服务搭建介绍 ...
- sersync 实时同步
1.什么是实时同步 监控一个目录的变化, 当该目录触发事件(创建\删除\修改) 就执行动作, 这个动作可以是 rsync同步 ,也可以是其他. 2.为什么要实时同步 1.能解决nfs单点故障问题. ...
- 5. Sersync实时同步
rsync+Sersync数据的实时同步 sersync介绍 1.什么是实时同步 监控一个目录的变化, 当该目录触发事件(创建\删除\修改) 就执行动作, 这个动作可以是 rsync同步 ,也可以是其 ...
- sersync 实时同步工具
出处:http://code.google.com/p/sersync/ 当前版本的sersync依赖于rsync进行同步.如下图所示,在同步主服务器上开启sersync,将监控路径中的文件同步到目标 ...
- sersync实时同步实战
第1章 实时同步 1.1 什么是实时同步 实时同步是一种只要当前目录触发事件,就马上同步到远程的目录.rsync 1.2 为什么要实时同步web->nfs->backup 保证数据的连续性 ...
- 5、Sersync实时同步实战
1.实时同步概述 1.什么是实时同步, 只要当前目录发生变化则会触发一个事件,事件触发后将变化的目录同步至远程服务器. 2.为什么要实时同步, 保证数据的连续性, 减少人力维护成本, 解决nfs单点故 ...
- sersync 实时同步网站数据
sersync同步实战 sersync是基于inotify和srync的二次开发,代码托管在github上面在rsync的客户端上安装,下载地址: https://raw.githubusercont ...
随机推荐
- nodejs 连接 mysql 查询事务处理
自己用 mysql 很多次的,然后又是主玩nodejs的.专门写一篇文章来说说nodejs连接mysql数据库.在使用之前,请检查计算机是否具有一下环境! nodejs 执行环境. mysql数据库环 ...
- 小米多模网关接入Home Assistant ZNDMWG03LM
一.小米zigbee网关使用 先下载米家app,打开手机蓝牙,登陆点"我的"界面,将网关设备插上电源,橙灯闪烁,点击蓝牙网关等待弹窗提示连接,选择连接路由器(需2.4GHz),输入 ...
- 启用MFA的office 365 账号如何连接Exchange online
第一篇随手笔记,从简单开始... 如何使用Exchange Online PowerShell呢? 以Windows操作系统为例,如Windows10:首先需要安装Exchange Online Po ...
- Java的基本数据类型和数据类型转换
首先java属于强类型语言,要求变量的使用要严格遵守规范,所有变量都必须先定义后才能使用. Java的数据类型分为以下两种: 1 基础数据类型(primtive type) 和 2 引用数据类型(re ...
- 在线编辑Word——插入图表
在Word中可插入图表,配合使用表格能够更加全方位的展示数据的可信度并增加数据的可读性.本文将通过使用在线编辑器 Spire.Cloud Word 演示如何来插入图表,并设置相关格式化操作.具体步骤如 ...
- js添加事件监听的方式与this
js添加事件监听与this js添加事件监听的方式与this 在标签中调用自定义函数 DOM0级事件处理程序 DOM2级事件处理程序 this 代表谁? js添加事件监听的方式与this <di ...
- sqlalchemy create single table
User.__table__.drop(engine) User.__table__.create(engine) https://stackoverflow.com/a/45287771/80250 ...
- M1配置php环境完整版(用于M1芯片的Mac中,php开发环境,比如wordpress、"或wp"、emlog pro、typecho等本地开发环境的配置)
因为macbook发布的M1是基于arm架构的,导致很多软件在短时间没无法兼容,其中包括php的很多集成开发环境软件.于是需要手动配置.网上的信息也是零七八碎,故制作了这个完整的教程. 本教程基于的m ...
- GoLang设计模式15 - 策略模式
策略模式是一种行为型设计模式.通过策略模式,可以在运行时修改一个对象的行为. 接下来仍然是通过例子来了解策略模式.比如说内存缓存,这是我们在开发中经常使用的东西,大家应该都有一定的了解,接下来就用内存 ...
- Java学习(十六)
今天先学了文本标签 <p> <strong>永远不要相信诺克萨斯人的血条!</strong><!--表示一段内容的重要性--> <br /> ...