首页 > 其他分享 >wordpress多节点部署+rsync备份图片

wordpress多节点部署+rsync备份图片

时间:2022-10-04 12:56:42浏览次数:56  
标签:10.0 rsync -- 备份 apps wordpress docker

基于LAMP架构搭建LB+web+mysql+nas架构,实现从web站点上传的图片自动同步(wordpress)

环境:

10.0.0.128 apache+wordpress服务,数据库主库指向10.0.0.132,基于docker来安装,映射出来,docker安装wordpress

10.0.0.132 MySQL(主),备份服务器

10.0.0.129 MySQL(从),NAS服务器,NAS服务器指向

1.docker搭建wordpress+MySQL

docker run的时候,需要-v映射到nfs的共享目录,单个docker的映射目录()

还是直接docker run得了

docker pull wordpress
docker run --name wordpress -p 8002:80 -v /apps/wordpress:/var/www/html/  -d wordpress

#docker run --name wordpress -p 8002:80 -v /apps/uploads:/var/www/html/wp-content/uploads  -d wordpress

docker stop `docker ps  | grep wordpress | awk '{print $1}'`
docker rm -f `docker ps -a | grep wordpress | awk '{print $1}'`

##查看工作目录,查看从docker仓库下载下来的docker image镜像
##docker inspect imageID/image name,就是查看dockerfile
[root@master ~]#docker inspect wordpress | grep -i working
"WorkingDir": "/var/www/html",

[root@master ~]#docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                                   NAMES
974257bc8c36   wordpress   "docker-entrypoint.s…"   4 seconds ago   Up 3 seconds   0.0.0.0:8002->80/tcp, :::8002->80/tcp   wordpress

ss -ntl | grep 8002
LISTEN     0      128          *:8002                     *:*                  
LISTEN     0      128       [::]:8002                  [::]:*      

10.0.0.128:8002

##MySQL操作,需要提前建库和用户
##所有的建站信息全部存放在表里

[(none)]>create database wordpress;
Query OK, 1 row affected (0.01 sec)

[(none)]>grant all on wordpress.* to wp@'%';
Query OK, 0 rows affected (0.01 sec)

[(none)]>flush privileges;
Query OK, 0 rows affected (0.00 sec)


image-20221003210709016

新建一篇文章发布

image-20221003211323517

2.rsync直接同步uploads目录到备份机[wp]

docker搭建映射出来的路径,不能再进行一次挂载,所以说API服务器有两个,IP+相同的端口号,uploads的rsync直接指向到10.0.0.132的复制目录,/data/bak

[root@master uploads]#exportfs -r
exportfs: /apps/wordpress/wp-content/uploads does not support NFS export

如果是多个web前端的话,程序可以控制写到LB的IP,负载均衡两个WEB,两个WEB的图片备份都指向备份机器,且两台WEB之间同步图片

##安装rsync工具和inotify-tools工具
rpm -q rsync &> /dev/null  || yum -y install rsync
rpm -q inotify-tools &> /dev/null  || yum -y install inotify-tools

#1.站点图片目录,有记录日期,直接同步这个文件夹,发布新文章,新图片上面都有
/apps/wordpress/wp-content/uploads

[root@master 10]#ls
0923test-01-1024x640.jpg  0923test-01-300x188.jpg  0923test-01.jpg     image-150x150.png   image-1568x842.png  image-768x412.png
0923test-01-150x150.jpg   0923test-01-768x480.jpg  image-1024x550.png  image-1536x825.png  image-300x161.png   image.png

#2.直接使用sersync或者是脚本同步uploads到备份服务器10.0.0.132
scp sersync2.5.4_64bit_binary_stable_final.tar.gz 10.0.0.128:/root
tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz /apps/sersync

#3.编辑xml文件
vim confxml.xml
<sersync>
        <localpath watch="/apps/wordpress/wp-content/uploads"> <!--/apps/wordpress/wp-content/uploads -->
            <remote ip="10.0.0.132" name="wp"/> <!--修改远端rsync备份服务器和备份目录 -->
        </localpath>
        <rsync>
            <commonParams params="-artuz"/>
            <auth start="true" users="rsyncuser" passwordfile="/etc/rsync.pas"/> <!--鉴权用户名,调用本地的password文件 -->

#4.编辑备份端
rpm -q rsync &> /dev/null  || yum -y install rsync

vim /etc/rsyncd.conf
[wp]
path = /data/wordpress/
##记得要写path/
read only = no
##不只读,可写
auth users = rsyncuser
##默认用户
secrets file = /etc/rsync.pas
##默认密码

##重启服务
systemctl restart rsyncd

#5.运行脚本,监控/data/wordpress/2022/10/的变化
#同步前先进行scp同步一遍先
scp /apps/wordpress/wp-content/uploads/* 10.0.0.132:/data/wordpress/

#执行脚本
master:[root@master GNU-Linux-x86]#./sersync2 -dro confxml.xml
nohup ./sersync2 -dro confxml.xml

ps aux | grep ser
root      13227  0.0  0.0 125108   712 ?        Ssl  23:02   0:00 ./sersync2 -dro confxml.xml

##监控变化
backup:watch -n0.5 ll /data/wordpress/2022/10/

在wordpress站点发布图片,图片名字为10044444test.jpg
image-20221003233819624

3.rsync使用脚本(在没有包的情况下,常用)

顺便安装了rsync和inotify,可以作为定时任务,或者nohup也行

缺点:调用多次rsync,有点小毛病,调用多次create,attribu等指令

vim inotify_rsync.sh
nohup ./inotify_rsync.sh

##监控NAS目录的变化
SRC='/apps/wordpress/wp-content/uploads/'
##备份服务器为132的bak,调用rsync的协议
DEST='[email protected]::wp'

rpm -q rsync &> /dev/null  || yum -y install rsync
rpm -q inotify-tools &> /dev/null  || yum -y install inotify-tools

#修改参数,监控文件数量
echo 50000000 > /proc/sys/fs/inotify/max_user_watches
echo 327679 > /proc/sys/fs/inotify/max_queued_events

echo "starting monitor file change..."
sleep 2
#持续前台监控特定事件,定义时间格式、日期格式、动作(新建、删除、移动---重命名、写入、权限变化) + nas目录,输入到while内
inotifywait  -mrq  --exclude=".*\.swp" --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR FILE;do
        FILEPATH=${DIR}${FILE}
        ##表示新建=新建,删除=删除
        rsync -az --delete  --password-file=/etc/rsync.pas $SRC $DEST 
        echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log
        #日志在129上面,在129上执行的脚本
done

Every 0.5s: tree /data/wordpress/2022/10/  
├── test11-1024x640.jpg
├── test11-150x150.jpg
├── test11-300x188.jpg
├── test11-768x480.jpg


nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

4.负载均衡架构

nginx:前端负载均衡

web01,web02:docker部署

备份服务器:web01和web02互相使用rsync脚本同步,同步前先完成一遍复制确保一致

web01和web02再备份一次到备份服务器

3方---4方---多方同步解决

目前只能实现docker单节点部署wordpress,通过脚本自动备份到远端132的机器

1.环境:可以在slave1上面搭建web02站点

搭建docker环境,搭建私有仓库
1.关闭防火墙,SELINUX
sed 's/enable/disabled/g' /etc/config/selinux

2.卸载旧版本的docker包
rpm -qa | grep docker
yum -y remove docker*,删除掉所有的依赖

3.docker安装存储库
yum install -y yum-utils device-mapper-persistent-data lvm2

4.添加阿里云的yum源
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
修改内部的gpgcheck
:%s/gpgcheck=1/gpgcheck=0/g
sed -i 's/gpgcheck=1/gpgcheck=0/g' /etc/yum.repos.d/docker-ce.repo

5.安装docker-ce
yum install docker-ce docker-ce-cli containerd.io -y

scp -r /etc/docker/* 10.0.0.129:/etc/docker/

6.修改docker的源daemon.json

systemctl daemon-reload;systemctl restart docker

7.测试安装服务
docker images
docker ps -a


yum -y install httpd php php-mysqlnd php-json
chown apache.apache /var/www/html/*
ll /var/www/html/*

2.拷贝所有web01站点的信息过去,docker需要映射出来

1.配置docker基础环境

--拉取最新镜像
docker pull wordpress

--拉取仓库镜像,运行
docker pull registry
docker run -d -p 5000:5000 --restart=always --name registry -v /apps/myregistry:/var/lib/registry registry

--打标签
docker image tag wordpress 10.0.0.128:5000/wordpress:v1.0
[root@master registry]#docker images
REPOSITORY                  TAG       IMAGE ID       CREATED         SIZE
10.0.0.128:5000/wordpress   v1.0      c3c92cc3dcb1   9 months ago    616MB

--配置insucure的镜像仓库地址
vim /etc/docker/daemon.json
{
    "registry-mirrors": [
        "https://plqjafsr.mirror.aliyuncs.com"
    ],
    "exec-opts": [
        "native.cgroupdriver=systemd"
    ],
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "100m"
    },
    "storage-driver": "overlay2",
    "insecure-registries": ["10.0.0.128:5000"] ---配置本地仓库
}

--重新加载
systemctl daemon-reload
systemctl restart docker

--推送,查看
docker push 10.0.0.128:5000/wordpress:v1.0
curl http://10.0.0.128:5000/v2/_catalog
{"repositories":["wordpress"]}

--slave1尝试
[root@slave1 ~]#curl http://10.0.0.128:5000/v2/_catalog
{"repositories":["wordpress"]}


2.slave1拉取镜像,运行

--slave1
docker pull 10.0.0.128:5000/wordpress:v1.0

docker run --name wordpress -p 8002:80 --restart=always -v /apps/wordpress:/var/www/html/  -d 10.0.0.128:5000/wordpress:v1.0
docker run --name wordpress -p 8002:80 --restart=always -v /apps/wordpress:/var/www/html/  -d wordpress
docker start `docker ps -a | grep wordpress | awk '{print $1}'`

--拷贝web01的文件到/apps/wordpress
scp -r -p /apps/wordpress/* 10.0.0.129:/apps/wordpress/

rsync -a /apps/wordpress/* 10.0.0.129:/apps/wordpress/

3.试运行
docker stop `docker ps -a | grep wordpress | awk '{print $1}'`
docker start `docker ps -a | grep wordpress | awk '{print $1}'`
docker rm -f `docker ps -a | grep wordpress | awk '{print $1}'`

3.配置WEB01的DNS解析,添加A记录

4.前端添加一个nginx或者是LVS,实现前端负载均衡

标签:10.0,rsync,--,备份,apps,wordpress,docker
From: https://www.cnblogs.com/catyer/p/16753593.html

相关文章

  • nas+inotify+rsync+shell实现实时同步文件
    nas+inotify+rsync+shell实现实时同步文件环境:10.0.0.132备份服务器:搭建rsync同步服务端10.0.0.129数据服务器:inotify实现监控挂载到本地的NAS目录文件变化,通过rsync......
  • Rsync的简单使用
    Rsync的简单使用需求一个运行很久的系统里面可能包含了非常多的垃圾文件.但是又不可能随便删除,很多垃圾可能有某些奇葩的用法.有时候新建一个应用复制文件的话比较浪费......
  • 网络中冗余备份
    冗余备份的重要性如今社会,网络是各个产业的新的血脉,网络的稳定性至关重要,一旦网络出现故障,导致断网、延迟丢包等很可能会导致生产作业停滞,造成较经济损失,为此冗余备份至......
  • 使用 WordPress 本地搭建支持匿名评论的网站
    XAMPP下载这里部署在ContOS上,直接去SourceForge网站下载安装通过MobaXterm/Xshell等终端自带的FTP将下载的xampp-linux-*-installer.run文件发送到ContOS......
  • 增量备份的保留策略
    机构通常会定义用于保留备份信息的策略,以帮助机构在发生站点范围的数据丢失时恢复关键业务数据。但是,这些策略通常需要处置不再需要的备份信息。手动跟踪和删除超出备份保留......
  • Linux /Centos 7 服务器定时将备份信息、日志发送到邮箱
    公司业务需要将数据库每日备份,然后在保存到本地硬盘,且未搭建文件服务器。于是换一种思路解决,利用Linux发送邮件并添加备份文件作为附件信息,发送到指定的邮箱,然后定时执行脚......
  • gitlab备份迁移
    1.备份#/bin/bash#用途:备份gitlabDAY=`date+%Y-%m-%d`BAK_DIR=/data/backup/chown-Rgit.git$BAK_DIRmkdir-p$BAK_DIR/logs/gitlab-rakegitlab:backup:cr......
  • Rsync的简单使用
    Rsync的简单使用需求一个运行很久的系统里面可能包含了非常多的垃圾文件.但是又不可能随便删除,很多垃圾可能有某些奇葩的用法.有时候新建一个应用复制文件的话比......
  • mongo备份/恢复工具mongodump和mongorestore
    mongodump备份oplog https://www.cnblogs.com/easydb/p/14286810.htmlhttps://www.modb.pro/db/152396https://cloud.tencent.com/developer/article/1429385https://b......
  • Borg 增量备份方案
    一、为什么选择BorgBackupBorgBackup是目前最受欢迎,用户量最大的一个备份支持程序,支持去重和压缩,同时也支持认证加密。其主要目的是提供一个高效而且安全的方法用于数......