环境信息,两台nginx主机:
192.168.108.142(备)
192.168.108.140(主)
inotify介绍:
1、安装inotify-tools,用于监控nginx配置文件变化(主机上安装):
上传inotify-tools-3.13.tar.gz软件包到主服务器root目录下,解压并安装:
tar xf inotify-tools-3.13.tar.gz
cd inotify-tools-3.13/
./configure --prefix=/usr/local/inotify
make && make install
设置环境变量并添加软连接
echo "PATH=/usr/local/inotify/bin:$PATH" >>/etc/profile.d/inotify.sh
source /etc/profile.d/inotify.sh
echo "/usr/local/inotify/lib" >/etc/ld.so.conf.d/inotify.conf
ln -s /usr/local/inotify/include /usr/include/inotify
2、安装rsync(主备两台机上都需要安装)
rpm -qa | grep rsync #检查rsync是否已安装,大部分系统都已安装
yum安装:yum -y install rsync
3、配置rsync服务(备机上需要起服务)
vim /etc/rsyncd.conf
uid = root
gid = root
use chroot = yes
address = 192.168.108.142
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.108.0/23
[www]
path = /usr/local/nginx/conf/conf.d
read only = no
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
auth users = root
secrets file = /etc/rsync.passwd
vim /etc/rsync.passwd
root:$PASSWORD #$PASSWORD填写备机root密码
chmod 600 /etc/rsync.passwd
systemctl start rsyncd.service
systemctl enable rsyncd.service
netstat -anptu | grep rsync
4、在主机上编写inotify脚本,监控/usr/local/nginx/conf/conf.d目录下文件的变化,实现主备实时同步
vim backup.sh
#!/bin/bash
echo $$ > /root/backup.pid
inotifywait -rmq --format "%w%f" -e create,delete,moved_to,close_write,modify /usr/local/nginx/conf/conf.d | while read line
do
rsync -az --delete /usr/local/nginx/conf/conf.d/ root@192.168.108.142::www --password-file=/etc/server.passwd
done
vim /etc/server.passwd
$PASSWORD #$PASSWORD填写备机root密码
chmod 600 /etc/server.passwd
chmod 755 /root/backup.sh
nohup ./backup.sh &
(扩展:在备机上安装inotify,通过监控/usr/local/nginx/conf/conf.d目录的变化,实现备机nginx自动reload)