一、sersync实时同步
读弃用:-提高网站并发访问量高的方法
介绍
1.Sersync 项目利用 Inotify 和 Rsync 技术实现对服务器数据实时同步的解决方案,其中 Inotify 用于监控 Sersync 所在服务器上文件系统的事件变化,而 Rsync 是目前广泛使用的本地以及异地数据同步工具,其优点是只对变化的目录数据操作,甚至是一个文件不同的部分进行同步,所以其优势大大超过使用挂接文件系统或 scp 等方式进行镜像同步。(国人周洋)
2.同步工具目前使用比较多的同步工具为 Inotify-tools 和 Openduckbill,sersync。Sersync 优于 Inotify-tools 和 Openduckbill
sersync服务要放到nfs的服务器上
实时同步实践
1.创建俩个目录用来存放软件
mkdir -p /server/{scripts,tools}
下载安装此压缩包并解压
sersync_installdir_64bit.zip
#####压缩包链接: 提取码: 7kur
[15:21 root@nfs01 /server/tools]# unzip sersync_installdir_64bit.zip
Archive: sersync_installdir_64bit.zipcreating: sersync_installdir_64bit/creating: sersync_installdir_64bit/sersync/creating: sersync_installdir_64bit/sersync/bin/inflating: sersync_installdir_64bit/sersync/bin/sersync creating: sersync_installdir_64bit/sersync/conf/inflating: sersync_installdir_64bit/sersync/conf/confxml.xml creating: sersync_installdir_64bit/sersync/logs/
查看一下
[15:21 root@nfs01 /server/tools]# tree
.
├── sersync_installdir_64bit
│ └── sersync
│ ├── bin
│ │ └── sersync
│ ├── conf
│ │ └── confxml.xml
│ └── logs
└── sersync_installdir_64bit.zip \\此文件
2.创建目录,把文件移动到/app下
mkdir -p /app
mv /server/tools/sersync_installdir_64bit/sersync /app/
查看一下
[15:27 root@nfs01 ~]# tree /app/
/app/
├── logs
└── sersync├── bin│ └── sersync├── conf│ └── confxml.xml└── logs
3.添加执行权限,给此文件创建一个软链接
执行完成后试着敲一下sersync的命令
指定软连接使他变为命令(用全路径可以执行,为让他变的方便。)使他变为命令
[15:27 root@nfs01 ~]#chmod +x /app/sersync/bin/sersync
[15:27 root@nfs01 ~]#
[15:27 root@nfs01 ~]# ln -s /app/sersync/bin/sersync /sbin/
[15:29 root@nfs01 ~]# sersync
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
daemon thread num: 10
parse xml config file
XML Parsing error inside file 'confxml.xml'.
Error: File not found
At line 0, column 0.
4.去rsync的配置文件添加nfsbackup模块
[15:29 root@nfs01 ~]#vim /etc/rsyncd.conf
....
#####################################
[nfsbackup]
comment = www by old0boy 13:14 2019-5-20
path = /nfsbackup
"/etc/rsyncd.conf" 31L, 732C written
5.服务端创建目录并修改权限
[15:39 root@backup ~]# mkdir -p /nfsbackup
[15:40 root@backup ~]# chown rsync.rsync /nfsbackup/
[15:41 root@backup ~]# ll -d /nfsbackup/
drwxr-xr-x 2 rsync rsync 6 May 24 15:40 /nfsbackup/
6.在服务端本地测试推送一下
[15:41 root@backup ~]# rsync -avz /etc/hostname rsync_backup@172.16.1.41::nfsbackup
Password:
sending incremental file list
hostnamesent 101 bytes received 43 bytes 32.00 bytes/sec
total size is 7 speedup is 0.05
7.再去客户端推送一下
[15:41 root@nfs01 ~]# rsync -avz /etc/hostname rsync_backup@172.16.1.41::nfsbackup
Password:
sending incremental file listsent 50 bytes received 20 bytes 20.00 bytes/sec
total size is 7 speedup is 0.10
※8.查看文件下的xml文件
/app/sersync/conf/confxml.xml
https://www.processon.com/view/link/5bf911c0e4b006dc83a24929
[15:53 root@nfs01 ~]#vim /app/sersync/conf/confxml.xml 1 <?xml version="1.0" encoding="ISO-8859-1"?>2 <head version="2.5">3 <host hostip="localhost" port="8008"></host>4 <debug start="false"/> 5 <fileSystem xfs="false"/> 文件系统\\修改为true6 <filter start="false"> \\过滤7 <exclude expression="(.*)\.svn"></exclude> \\排除--exclude8 <exclude expression="(.*)\.gz"></exclude> \\排除--exclude9 <exclude expression="^info/*"></exclude> \\排除--exclude10 <exclude expression="^static/*"></exclude> \\排除--exclude11 <delete start="true"/>12 </filter>13 </inotify> \\配置inotify的监控事件,实时监控目录变量14 <createFolder start="true"/>15 <createFile start="false"/>16 <closeWrite start="true"/>17 <moveFrom start="true"/>18 <moveTo start="true"/>19 <attrib start="false"/> \\文件属性20 <modify start="false"/> \\mtime修改时间21 </inotify> \\sersync什么时候用rsync推送22 23 <sersync>24 <localpath watch="/opt/tongbu"> \\要监控哪个目录 发生变量25 <remote ip="127.0.0.1" name="tongbu1"/> \\rsync服务端ip name=模块名26 <!--<remote ip="192.168.8.39" name="tongbu"/>-->27 <!--<remote ip="192.168.8.40" name="tongbu"/>-->28 </localpath>29 <rsync> \\rsync命令配置30 <commonParams params="-artuz"/> \\rsync的参数31 <auth start="false" users="root" passwordfile="/etc/rsync.pas"/> \\认证哪个用户和密码文件32 <userDefinedPort start="false" port="874"/><!-- port=874 -->33 <timeout start="false" time="100"/><!-- timeout=100 -->34 <ssh start="false"/>35 </rsync>36 <failLog path="/var/log/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->\\rsync错误日志指定的路径37 <crontab start="false" schedule="600"><!--600mins--> \\定时任务38 <crontabfilter start="false">39 <exclude expression="*.php"></exclude>40 <exclude expression="info/*"></exclude>41 </crontabfilter>42 </crontab>43 <plugin start="false" name="command"/>44 </sersync>45 46 <plugin name="command">47 <param prefix="/bin/sh" suffix="" ignoreError="true"/> <!--prefix /opt/tongbu/mmm.sh suffix-->48 <filter start="false">49 <include expression="(.*)\.php"/>50 <include expression="(.*)\.sh"/>51 </filter>52 </plugin>53 54 <plugin name="socket">55 <localpath watch="/opt/tongbu">56 <deshost ip="192.168.138.20" port="8009"/>57 </localpath>58 </plugin>59 <plugin name="refreshCDN">60 <localpath watch="/data0/htdocs/cms.xoyo.com/site/">61 <cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>62 <sendurl base="http://pic.xoyo.com/cms"/>63 <regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>64 </localpath>65 </plugin>66 </head>
记得先复制一份备份
[16:17 root@nfs01 ~]# cp /app/sersync/conf/confxml.xml /app/sersync/conf/confxml.xml.bak
9.然后修改此配置文件,如下内容即可
[16:17 root@nfs01 ~]# vim /app/sersync/conf/confxml.xml 23 <sersync>24 <localpath watch="/upload"> \\25 <remote ip="172.16.1.41" name="nfsbackup"/>26 <!--<remote ip="192.168.8.39" name="tongbu"/>-->27 <!--<remote ip="192.168.8.40" name="tongbu"/>-->28 </localpath>29 <rsync>30 <commonParams params="-az"/>31 <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>32 <userDefinedPort start="false" port="874"/><!-- port=874 -->33 <timeout start="false" time="100"/><!-- timeout=100 -->34 <ssh start="false"/>35 </rsync>36 <failLog path="/var/log/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
10.然后用diff对比一下修改的内容
diff /app/sersync/conf/confxml.xml /app/sersync/conf/confxml.xml.bak
11.接着在客户端配置如下的环境
[16:24 root@nfs01 ~]# echo '123456' >/etc/rsync.password
[16:24 root@nfs01 ~]# chmod 600 /etc/rsync.password
[16:24 root@nfs01 ~]# mkdir -p /upload
[16:25 root@nfs01 ~]# chown nfsnobody.nfsnobody /upload/
[16:25 root@nfs01 ~]# ll -d /upload/
drwxr-xr-x 2 nfsnobody nfsnobody 21 May 23 08:42 /upload/
※12.然后查看sersync配置参数
[16:25 root@nfs01 ~]# sersync -h
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
_______________________________________________________
参数-d:启用守护进程模式
参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
c参数-n: 指定开启守护线程的数量,默认为10个
参数-o:指定配置文件,默认使用confxml.xml文件
参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
参数-m:单独启用其他模块,使用 -m socket 开启socket模块
参数-m:单独启用其他模块,使用 -m http 开启http模块
不加-m参数,则默认执行同步程序
________________________________________________________________
13.然后测试一下
/nfs端
[16:50 root@nfs01 ~]# touch /upload/oldboy{
01..10}.txt
14.接着推送一下:
sersync -rd -o /app/sersync/conf/confxml.xml
-
我们要把这条命令放到 /etc/rc.d/rc.local 开机自启动里,不然重启后就失效了。
[16:52 root@nfs01 ~]# tail -1 /etc/rc.d/rc.local
sersync -rd -o /app/sersync/conf/confxml.xml
[16:52 root@nfs01 ~]# sersync -rd -o /app/sersync/conf/confxml.xml
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
option: -r rsync all the local files to the remote servers before the sersync work
option: -d run as a daemon
option: -o config xml name: /app/sersync/conf/confxml.xml
daemon thread num: 10
parse xml config file
host ip : localhost host port: 8008
WARNING XFS FILE SYSTEM WORK
daemon start,sersync run behind the console
use rsync password-file :
user is rsync_backup
passwordfile is /etc/rsync.password
config xml parse success
please set /etc/rsyncd.conf max connections=0 Manually
sersync working thread 12 = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads)
Max threads numbers is: 22 = 12(Thread pool nums) + 10(Sub threads)
please according your cpu ,use -n param to adjust the cpu rate
------------------------------------------
rsync the directory recursivly to the remote servers once
working please wait...
execute command: cd /upload && rsync -az -R --delete ./ rsync_backup@172.16.1.41::nfsbackup --password-file=/etc/rsync.password >/dev/null 2>&1
run the sersync:
watch path is: /upload
15.在backup服务端查看:实时同步了
[16:51 root@backup ~]# ll /nfsbackup/
total 0
-rw-r--r-- 1 rsync rsync 0 May 24 16:52 oldboy01.txt
-rw-r--r-- 1 rsync rsync 0 May 24 16:52 oldboy02.txt
-rw-r--r-- 1 rsync rsync 0 May 24 16:52 oldboy03.txt
-rw-r--r-- 1 rsync rsync 0 May 24 16:52 oldboy04.txt
-rw-r--r-- 1 rsync rsync 0 May 24 16:52 oldboy05.txt
-rw-r--r-- 1 rsync rsync 0 May 24 16:52 oldboy06.txt
-rw-r--r-- 1 rsync rsync 0 May 24 16:52 oldboy07.txt
-rw-r--r-- 1 rsync rsync 0 May 24 16:52 oldboy08.txt
-rw-r--r-- 1 rsync rsync 0 May 24 16:52 oldboy09.txt
-rw-r--r-- 1 rsync rsync 0 May 24 16:52 oldboy10.txt
二、接下来讲云服务器
以阿里云为例https://www.aliyun.com/
1.云服务器不能用25端口号的SMTP发送邮件
可以使用465端口,465端口只支持加密传输
STARTLS标准出炉,规定用587端口以STARTTLS方式提交邮件
587端口专门被设计用来提交邮件,传输可以加密也可以不加密。
查找端口号的命令
grep smtp /etc/services
2.云服务器的名称
负载均衡是SLB内外网交换机都是VPC(虚拟局域网)云web服务器是ECS云数据库是RDS云存储是NAS(类似nfs)云同步服务器是ECS云公网ip(弹性公网ip)
3.选择购买时要注意的名词含义:
地域 region :地区 北京 上海 杭州 不同地区的服务器内网不通
可用区 zone :同一个地区的 不同机房 同1个地区的不同可用区 内网相通
4.在购买阿里云服务器比较坑的步骤
对外的端口一定要开放 安全组
873/873
安全组,顾名思义“安全”“组”,是阿里云为了提高服务器安全,从软件角度开发的一套效果与防火墙很相似的一套安全体系。另外,安全组还有个组的概念,一个安全组可以配置给多台服务器,这对以后服务器的增量管理是个非常占优势的地方。安全组的使用,首先需要理解的是公网,私网。购买云服务器时候,阿里云已经为我们选择了默认安全组,目前默认规则是:对公网开启22,3389,80端口,其他端口默认关闭。
周末作业:
通过阿里云 实现 nfs backup web01
实时同步