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服务的更多相关文章

  1. 搭建WEB、NFS共享、sersync实时同步以及全网定时备份服务流程

    本次实验的主要目的: 1.搭建web服务,使用nfs服务共享的/data目录挂载到web站点目录上. 2.nfs服务器与backup服务器使用sersync实时同步/data目录中的文件. 3.bac ...

  2. Sersync实时同步企业应用配置实战

    一.实验环境 CentOS版本: 6.6(2.6.32.-504.el6.x86_64) Rsync版本:  Rsync-3.0.6(系统自带) Sersync版本:sersync2.5.4_64bi ...

  3. Rsync + sersync 实时同步备份

    一      Rsync + Sersync  实时同步介绍 1.Rsync 服务搭建介绍 云机上搭建Rsync server,在本地搭建Rsync Clinet. 2. Sersync 服务搭建介绍 ...

  4. sersync 实时同步

    1.什么是实时同步 ​ 监控一个目录的变化, 当该目录触发事件(创建\删除\修改) 就执行动作, 这个动作可以是 rsync同步 ,也可以是其他. 2.为什么要实时同步 1.能解决nfs单点故障问题. ...

  5. 5. Sersync实时同步

    rsync+Sersync数据的实时同步 sersync介绍 1.什么是实时同步 监控一个目录的变化, 当该目录触发事件(创建\删除\修改) 就执行动作, 这个动作可以是 rsync同步 ,也可以是其 ...

  6. sersync 实时同步工具

    出处:http://code.google.com/p/sersync/ 当前版本的sersync依赖于rsync进行同步.如下图所示,在同步主服务器上开启sersync,将监控路径中的文件同步到目标 ...

  7. sersync实时同步实战

    第1章 实时同步 1.1 什么是实时同步 实时同步是一种只要当前目录触发事件,就马上同步到远程的目录.rsync 1.2 为什么要实时同步web->nfs->backup 保证数据的连续性 ...

  8. 5、Sersync实时同步实战

    1.实时同步概述 1.什么是实时同步, 只要当前目录发生变化则会触发一个事件,事件触发后将变化的目录同步至远程服务器. 2.为什么要实时同步, 保证数据的连续性, 减少人力维护成本, 解决nfs单点故 ...

  9. sersync 实时同步网站数据

    sersync同步实战 sersync是基于inotify和srync的二次开发,代码托管在github上面在rsync的客户端上安装,下载地址: https://raw.githubusercont ...

随机推荐

  1. 基于live555开发嵌入式linux系统的rtsp直播服务

    最近要搞一个直播服务,车机本身是个前后双路的Dvr,前路1080P 25fps,后路720P 50fps,现在要连接手机app预览实时画面,且支持前后摄像头画面切换. 如果要做直播,这个分辨率和帧率是 ...

  2. python3.5 安装mysqlclient

    python 3.5 安装 mysqlclient 会失败 pip install mysqlclient 注意这里环境中只有python3.5 会出现一大堆红字 编译终止, error: comma ...

  3. MarkDown学习随笔

    MarkDown语法的学习 标题 ​ 设置标题方法是在前面加#号,一级标题(最大)是加#+空格 ,二级标题是加##+空格,之后的以此类推. 字体 在文本的前后分别加上一个星号表示斜体字 在文本的前后分 ...

  4. 开发笔记-----Ajax 基础使用

    一.GET 方式的用法: 1 <!--html --> 2 <div class="layui-form"> 3 <div class="l ...

  5. 【mysql1】如何删除MySQL内存|不再跟新系列

    完全卸载mysql的具体步骤: 包括停止服务  +  卸载相关程序  +  删除注册表等等 步骤一:  windows键+R-->Control-->程序和功能:所有MySQL程序点击右键 ...

  6. Redis 客户端重试指南

    本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可. 在互联网服务中,特别是在云环境下,网络及硬件环境复杂,所有应用程序都可能遇到暂时性故障.暂时性故障包括瞬时的网络抖动,服务暂时不可 ...

  7. 腾讯发布 K8s 多集群管理开源项目 Clusternet

    11月4日,在腾讯数字生态大会上,腾讯宣布了云原生领域一项重磅开源进展-- K8s 多集群管理项目 Clusternet 正式开源. Clusternet 由腾讯联合多点生活.QQ音乐.富途证券.微众 ...

  8. Mysql—— 内连接、左连接、右连接以及全连接查询

    CREATE TABLE `a_table` ( `a_id` int(11) DEFAULT NULL, `a_name` varchar(10) DEFAULT NULL, `a_part` va ...

  9. [linux]centos7.4上安装MySQL-8.0.11【完美安装】

    版本声明 centos7.4 MySQL-8.0.11 1.我用的阿里云的虚拟主机,刚从windows换到linux,需要装下常用工具 #安装下sz rz常用到上传下载的命令 yum install ...

  10. USB3.0 转USB3.0

    前段时间因为项目需求需要将相机的USB3.0口转接出来,心想那还不想简单,结果第一次就碰壁了:先说一下usb3.0的引脚定义如图: 九个脚,2个地:注意USB3.0转3.0时数据线全交叉,DM-和DP ...