1 nfs02 下载软件,nfs-utils rpcbind
yum install -y nfs-utils rpcbind
官方源安装 nginx
2 修改配置文件
#注意:我这地方的uid和gid是nginx 客户端和服务端要对应才可以存图片,因为web服务器php是nginx管理,所以这里我也是用nginx管理
vim /etc/exports
/data/blog/ 172.16.1.0/24(rw,sync,no_all_squash,root_squash,anonuid=998,anongid=996)
/data/www/ 172.16.1.0/24(rw,sync,no_all_squash,root_squash,anonuid=998,anongid=996)
/data/wecenter/ 172.16.1.0/24(rw,sync,no_all_squash,root_squash,anonuid=998,anongid=996)
3.修改目录权限
chown -R nginx. data/
4.启动nfs功能
systemctl start rpcbind
systemctl enable rpcbind
systemctl start nfs
systemctl enable nfs
5.实现实时同步
开启实时同步服务
yum install -y lsyncd
systemctl start lsyncd.service
systemctl enable lsyncd.service
编写配置文件 让nfs02和backup实现实时同步
cat /etc/lsyncd.conf
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
inotifyMode = "CloseWrite",
maxProcesses = 8,
}
sync {
default.rsync,
source = "/data",
target = "rsync_backup@172.16.1.41::ss",
delete= true,
exclude = { ".*" },
delay = 1,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true,
password_file = "/etc/rsync.password",
_extra = {"--bwlimit=200"}
}
}
重启实时同步服务
systemctl restart lsyncd.service
创建密码文件
cat /etc/rsync.password
123456
chmod 600 /etc/rsync.password
测试是否能与backup实时同步
6.安装keepalived 测试ip地址能否在nfs01与nfs02来回漂移
yum install -y keepalived
6.1.编写脚本并赋予权限
cat /service/scripts/check_status.sh
#!/bin/bash
NfsStatus=$(systemctl status nfs|awk 'NR==5{print $2}')
RpcStatus=$(systemctl status rpcbind.socket |awk 'NR==3{print $2}')
if [ $NfsStatus != 'active' ]|| [ $RpcStatus != 'active' ]
then
exit 1
else
exit 0
fi
必须要给执行权限,否则keepalived运行不了脚本
chmod +x /service/scripts/check_status.sh
6.2.编写配置文件
#我使用的是keepalived的权重来实现ip地址漂移的
nfs01配置文件
cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id nfs01
}
vrrp_script check_nfs {
script "/service/scripts/check_status.sh"
interval 2
weight - 2
}
vrrp_instance test{
state MASTER
interface eth0
virtual_router_id 111
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
172.16.1.30
}
track_script {
check_nfs
}
}
nfs02
cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id nfs02
}
vrrp_instance test{
state BACKUP
interface eth0
virtual_router_id 111
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
172.16.1.30
}
}
7 部署 nfs01和nfs02 实现实时同步
密码文件
cat /etc/rsync.pwd
123456
身份认证文件
cat /etc/rsync.password
rsync_backup:123456
nfs01客户端 lsync配置文件
cat /etc/lsyncd.conf
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
inotifyMode = "CloseWrite",
maxProcesses = 8,
}
sync {
default.rsync,
source = "/data",
target = "rsync_backup@172.16.1.41::ss",
delete= true,
exclude = { ".*" },
delay = 1,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true,
password_file = "/etc/rsync.pwd",
_extra = {"--bwlimit=200"}
}
}
sync {
default.rsync,
source = "/data",
target = "rsync_backup@172.16.1.32::data",
delete= true,
exclude = { ".*" },
delay = 1,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true,
password_file = "/etc/rsync.pwd",
_extra = {"--bwlimit=200"}
}
}
nfs02 服务端 rsync.conf配置文件
cat /etc/rsyncd.conf
#rsync_config
#created by HQ at 2017
##rsyncd.conf start##
uid = nginx
gid = nginx
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[data]
comment = "data "
path = /data
nfs02 客户端 lsync配置文件
cat /etc/lsyncd.conf
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
inotifyMode = "CloseWrite",
maxProcesses = 8,
}
sync {
default.rsync,
source = "/data",
target = "rsync_backup@172.16.1.41::ss",
delete= true,
exclude = { ".*" },
delay = 1,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true,
password_file = "/etc/rsync.pwd",
_extra = {"--bwlimit=200"}
}
}
sync {
default.rsync,
source = "/data",
target = "rsync_backup@172.16.1.31::data",
delete= true,
exclude = { ".*" },
delay = 1,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true,
password_file = "/etc/rsync.pwd",
_extra = {"--bwlimit=200"}
}
}
nfs01服务端 rsync.conf配置文件
cat /etc/rsyncd.conf
#rsync_config
#created by HQ at 2017
##rsyncd.conf start##
uid = nginx
gid = nginx
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[data]
comment = "data "
path = /data
8.重新挂载web端节点
把之前的卸载掉
umount -lf /html/blog/wp-content/uploads/
umount -lf /html/wecenter/uploads/article
umount -lf /html/www/uploadfile/
重新挂载
mount -t nfs 172.16.1.30:/data/blog /html/blog/wp-content/uploads/
mount -t nfs 172.16.1.30:/data/wecenter /html/wecenter/uploads/article
mount -t nfs 172.16.1.30:/data/www /html/www/uploadfile/
放到 /etc/rc.local 开机自启
mount -t nfs 172.16.1.30:/data/blog /html/blog/wp-content/uploads/
mount -t nfs 172.16.1.30:/data/wecenter /html/wecenter/uploads/article
mount -t nfs 172.16.1.30:/data/www /html/www/uploadfile/
未经博主允许,不得转载