study-19: LAMP企业网站集群架构搭建(自己实战)
2016-12-30 18:37
676 查看
一,架构图
二,安装软件
1,WEB-A (192.168.1.241):
1)安装LAMP(MYSQL安装到make && make install即可)
2)安装rpcbind:yum install rpcbind -y,启动rpcind服务(/etc/init.d/rpcbind start),chkconfig rpcbind on
3)建立/var/html/www , bbs , blog目录
4)挂载:
mount -t nfs -o nosuid,noexec,noatime,nodiratime,rsize=131072,wsize=131072 192.168.1.243:/data0/www /var/html/www/uploads
mount -t nfs -o nosuid,noexec,noatime,nodiratime,rsize=131072,wsize=131072 192.168.1.243:/data0/bbs /var/html/bbs/data
mount -t nfs -o nosuid,noexec,noatime,nodiratime,rsize=131072,wsize=131072 192.168.1.243:/data0/blog /var/html/blog/uploads
5)rsync定时备份
编写推送脚本 rsync.sh (排除上传文件夹):
rsync -avz /var/html/www --exclude=uploads rsync_backup@192.168.1.244::lampa --password-file=/etc/rsync.password
rsync -avz /var/html/bbs --exclude=data rsync_backup@192.168.1.244::lampa --password-file=/etc/rsync.password
rsync -avz /var/html/blog --exclude=uploads rsync_backup@192.168.1.244::lampa --password-file=/etc/rsync.password
添加到定时计划任务,每天凌晨3点推送备份到 备份服务器中:
0 3 * * * /bin/sh /server/scripts/rsync.sh > /dev/null 2>&1
2,数据库-B(192.168.1.242):
1)编译安装mysql ,chkconfig mysqld on
2)删除system.user表中不安全的用户
3)建立三个数据库和对应用户及访问授权
mysql> create database www;
mysql> create database bbs;
mysql> create database blog;
mysql> grant all on bbs.* to bbs@192.168.1.241 identified by '123456';(授权给来自192.168.1.241的bbs用户(密码:123456)所有权限给bbs.*中的数据表)
mysql> grant all on blog.* to blog@192.168.1.241 identified by '123456';
mysql> grant all on www.* to www@192.168.1.241 identified by '123456';
4)定期备份数据库,自动删除7天以前的备份,
建立备份文件夹 /data/mysqlbBAK
编写备份脚本:backup.sh
#!/bin/bash
databases=(www bbs blog)
# 备份文件要保存的目录
basepath='/data/mysqlbBAK/'
DBUSER='root'
DBPASSWORD='123456'
if [ ! -d "$basepath" ]; then
mkdir -p "$basepath"
fi
# 循环databases数组
for db in ${databases[*]}
do
# 备份数据库生成SQL文件
/bin/nice -n 19 /application/mysql/bin/mysqldump -u$DBUSER -p$DBPASSWORD --database $db > $basepath$db-$(date +%Y%m%d).sql
# 将生成的SQL文件压缩
/bin/nice -n 19 tar zPcf $basepath$db-$(date +%Y%m%d).sql.tar.gz $basepath$db-$(date +%Y%m%d).sql
# 删除7天之前的备份数据
find $basepath -mtime +7 -name "*.sql.tar.gz" -exec rm -rf {} \;
done
# 删除生成的SQL文件
rm -rf $basepath/*.sql
添加到定时计划任务,每天零点执行备份:
0 0 * * * /bin/sh /server/scripts/backup.sh > /dev/null 2>&1
编写推送脚本 rsync.sh :
rsync -avz /data/mysqlbBAK/bbs-$(date +%Y%m%d --date="-1 day").sql.tar.gz rsync_backup@192.168.1.244::mysqlb --password-file=/etc/rsync.password
rsync -avz /data/mysqlbBAK/blog-$(date +%Y%m%d --date="-1 day").sql.tar.gz rsync_backup@192.168.1.244::mysqlb --password-file=/etc/rsync.password
rsync -avz /data/mysqlbBAK/www-$(date +%Y%m%d --date="-1 day").sql.tar.gz rsync_backup@192.168.1.244::mysqlb --password-file=/etc/rsync.password
添加到定时计划任务,每天凌晨3点推送备份到 备份服务器中:
0 3 * * * /bin/sh /server/scripts/rsync.sh > /dev/null 2>&1
3,存储-C(192.168.1.243):
1)建立共享目录data0/www , bbs , blog
2)安装rpcbind,nfs-utils软件:yum install rpcbind nfs-utils -y
3)启动rpcbind 和 nfs服务:/etc/init.d/rpcbind start , /etc/init.d/nfs start (chkconfig rpcbind on , chkconfig nfs on)
4)编辑nfs 的export文件(建立www用户和用户组,保持gid,uid与WEB-A中的www用户、用户组一致)
/data0/www 192.168.1.0/24(rw,sync,all_squash,anonuid=503,anongid=503)
/data0/blog 192.168.1.0/24(rw,sync,all_squash,anonuid=503,anongid=503)
/data0/bbs 192.168.1.0/24(rw,sync,all_squash,anonuid=503,anongid=503)
5)兼职分发到服务器A / B / D(需要被分发的客户机A / B / D 都建立相同用户名名、密码的帐号,例如oldboy):
a)以oldboy登录,并在oldboy家目录执行:ssh-keygen -t dsa
b)公钥分发到客户端(需要输入密码,免密码分发需要配合
expect ):
ssh-copy-id -i id_dsa.pub "-p52113 oldboy@192.168.1.241"
ssh-copy-id -i id_dsa.pub "-p52113 oldboy@192.168.1.242"
ssh-copy-id -i id_dsa.pub "-p52113 oldboy@192.168.1.244"
c)验证拷贝(无密码提示输入):scp -P52113 a.txt oldboy@192.168.1.241
d)分发hosts文件:
另外三台机,允许oldboy sudo提权cp命令:
scp -P52113 hosts oldboy@192.168.1.241:~ && ssh -p52113 -t oldboy@192.168.1.241 sudo /bin/cp ~/hosts /etc/
scp -P52113 hosts oldboy@192.168.1.242:~ && ssh -p52113 -t oldboy@192.168.1.242 sudo /bin/cp ~/hosts /etc/
scp -P52113 hosts oldboy@192.168.1.244:~ && ssh -p52113 -t oldboy@192.168.1.244 sudo /bin/cp ~/hosts /etc/
6)inotify+ rsync实时备份
编写脚本inotify.sh:
#!/bin/sh
host01=192.168.1.244
src=/data0/
dst=nfsc
user=rsync_backup
rsync_passfile=/etc/rsync.password
inotify_home=/usr/local/inotify-tools-3.14/
#rsync -aruz $src $user@$host01::$dst --password-file=${rsync_passfile}
${inotify_home}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib $src \
| while read file
do
cd $src && rsync -aruz -R --delete ./ --timeout=100 $user@$host01::$dst --password-file=${rsync_passfile} > /dev/null 2>&1
done
exit 0
7)写入到开机启动项:/etc/rc.local
/bin/sh /server/scripts/inotify.sh > /dev/null 2>&1 &
4,备份-D(192.168.1.244 )linux内核自带rsync软件,/etc/rsyncd.conf(该文件可能不存在,可以自己新建一个:
1) 服务器端配置:
新建同步用户:
useradd rsync -s /sbin/nologin
新建配置文件 /etc/rsyncd.conf :
uid = rsync
gid = rsync
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 = 192.168.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[lampa]
path = /data/lampaBAK
[mysqlb]
path = /data/mysqlbBAK
[nfsc]
path = /data/nfscBAK
启动rsync服务:
rsync --daemon
写入密码文件:
echo "rsync_backup:oldboy" > /etc/rsync.password
chmod -R 600 /etc/rsync.password
2)客户端192.168.1.241 , 192.168.1.242 ,192.168.1.243 配置:
echo "oldboy" > /etc/rsync.password (只有密码,权限设为600)
chmod -R 600 /etc/rsync.password
3)存储-C 是实时备份,用inotify + rsync
建立备份文件夹 /data/nfscBAK,且所有者为oldboy
4)WEB-A,数据库-B,用rsync 做定时备份
建立备份文件夹 /data/lampaBAK , mysqlbBAK,且所有者为oldboy
二,安装软件
1,WEB-A (192.168.1.241):
1)安装LAMP(MYSQL安装到make && make install即可)
2)安装rpcbind:yum install rpcbind -y,启动rpcind服务(/etc/init.d/rpcbind start),chkconfig rpcbind on
3)建立/var/html/www , bbs , blog目录
4)挂载:
mount -t nfs -o nosuid,noexec,noatime,nodiratime,rsize=131072,wsize=131072 192.168.1.243:/data0/www /var/html/www/uploads
mount -t nfs -o nosuid,noexec,noatime,nodiratime,rsize=131072,wsize=131072 192.168.1.243:/data0/bbs /var/html/bbs/data
mount -t nfs -o nosuid,noexec,noatime,nodiratime,rsize=131072,wsize=131072 192.168.1.243:/data0/blog /var/html/blog/uploads
5)rsync定时备份
编写推送脚本 rsync.sh (排除上传文件夹):
rsync -avz /var/html/www --exclude=uploads rsync_backup@192.168.1.244::lampa --password-file=/etc/rsync.password
rsync -avz /var/html/bbs --exclude=data rsync_backup@192.168.1.244::lampa --password-file=/etc/rsync.password
rsync -avz /var/html/blog --exclude=uploads rsync_backup@192.168.1.244::lampa --password-file=/etc/rsync.password
添加到定时计划任务,每天凌晨3点推送备份到 备份服务器中:
0 3 * * * /bin/sh /server/scripts/rsync.sh > /dev/null 2>&1
2,数据库-B(192.168.1.242):
1)编译安装mysql ,chkconfig mysqld on
2)删除system.user表中不安全的用户
3)建立三个数据库和对应用户及访问授权
mysql> create database www;
mysql> create database bbs;
mysql> create database blog;
mysql> grant all on bbs.* to bbs@192.168.1.241 identified by '123456';(授权给来自192.168.1.241的bbs用户(密码:123456)所有权限给bbs.*中的数据表)
mysql> grant all on blog.* to blog@192.168.1.241 identified by '123456';
mysql> grant all on www.* to www@192.168.1.241 identified by '123456';
4)定期备份数据库,自动删除7天以前的备份,
建立备份文件夹 /data/mysqlbBAK
编写备份脚本:backup.sh
#!/bin/bash
databases=(www bbs blog)
# 备份文件要保存的目录
basepath='/data/mysqlbBAK/'
DBUSER='root'
DBPASSWORD='123456'
if [ ! -d "$basepath" ]; then
mkdir -p "$basepath"
fi
# 循环databases数组
for db in ${databases[*]}
do
# 备份数据库生成SQL文件
/bin/nice -n 19 /application/mysql/bin/mysqldump -u$DBUSER -p$DBPASSWORD --database $db > $basepath$db-$(date +%Y%m%d).sql
# 将生成的SQL文件压缩
/bin/nice -n 19 tar zPcf $basepath$db-$(date +%Y%m%d).sql.tar.gz $basepath$db-$(date +%Y%m%d).sql
# 删除7天之前的备份数据
find $basepath -mtime +7 -name "*.sql.tar.gz" -exec rm -rf {} \;
done
# 删除生成的SQL文件
rm -rf $basepath/*.sql
添加到定时计划任务,每天零点执行备份:
0 0 * * * /bin/sh /server/scripts/backup.sh > /dev/null 2>&1
编写推送脚本 rsync.sh :
rsync -avz /data/mysqlbBAK/bbs-$(date +%Y%m%d --date="-1 day").sql.tar.gz rsync_backup@192.168.1.244::mysqlb --password-file=/etc/rsync.password
rsync -avz /data/mysqlbBAK/blog-$(date +%Y%m%d --date="-1 day").sql.tar.gz rsync_backup@192.168.1.244::mysqlb --password-file=/etc/rsync.password
rsync -avz /data/mysqlbBAK/www-$(date +%Y%m%d --date="-1 day").sql.tar.gz rsync_backup@192.168.1.244::mysqlb --password-file=/etc/rsync.password
添加到定时计划任务,每天凌晨3点推送备份到 备份服务器中:
0 3 * * * /bin/sh /server/scripts/rsync.sh > /dev/null 2>&1
3,存储-C(192.168.1.243):
1)建立共享目录data0/www , bbs , blog
2)安装rpcbind,nfs-utils软件:yum install rpcbind nfs-utils -y
3)启动rpcbind 和 nfs服务:/etc/init.d/rpcbind start , /etc/init.d/nfs start (chkconfig rpcbind on , chkconfig nfs on)
4)编辑nfs 的export文件(建立www用户和用户组,保持gid,uid与WEB-A中的www用户、用户组一致)
/data0/www 192.168.1.0/24(rw,sync,all_squash,anonuid=503,anongid=503)
/data0/blog 192.168.1.0/24(rw,sync,all_squash,anonuid=503,anongid=503)
/data0/bbs 192.168.1.0/24(rw,sync,all_squash,anonuid=503,anongid=503)
5)兼职分发到服务器A / B / D(需要被分发的客户机A / B / D 都建立相同用户名名、密码的帐号,例如oldboy):
a)以oldboy登录,并在oldboy家目录执行:ssh-keygen -t dsa
b)公钥分发到客户端(需要输入密码,免密码分发需要配合
expect ):
ssh-copy-id -i id_dsa.pub "-p52113 oldboy@192.168.1.241"
ssh-copy-id -i id_dsa.pub "-p52113 oldboy@192.168.1.242"
ssh-copy-id -i id_dsa.pub "-p52113 oldboy@192.168.1.244"
c)验证拷贝(无密码提示输入):scp -P52113 a.txt oldboy@192.168.1.241
d)分发hosts文件:
另外三台机,允许oldboy sudo提权cp命令:
oldboy ALL=(ALL) NOPASSWD:
/bin/cp
scp -P52113 hosts oldboy@192.168.1.241:~ && ssh -p52113 -t oldboy@192.168.1.241 sudo /bin/cp ~/hosts /etc/
scp -P52113 hosts oldboy@192.168.1.242:~ && ssh -p52113 -t oldboy@192.168.1.242 sudo /bin/cp ~/hosts /etc/
scp -P52113 hosts oldboy@192.168.1.244:~ && ssh -p52113 -t oldboy@192.168.1.244 sudo /bin/cp ~/hosts /etc/
6)inotify+ rsync实时备份
编写脚本inotify.sh:
#!/bin/sh
host01=192.168.1.244
src=/data0/
dst=nfsc
user=rsync_backup
rsync_passfile=/etc/rsync.password
inotify_home=/usr/local/inotify-tools-3.14/
#rsync -aruz $src $user@$host01::$dst --password-file=${rsync_passfile}
${inotify_home}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib $src \
| while read file
do
cd $src && rsync -aruz -R --delete ./ --timeout=100 $user@$host01::$dst --password-file=${rsync_passfile} > /dev/null 2>&1
done
exit 0
7)写入到开机启动项:/etc/rc.local
/bin/sh /server/scripts/inotify.sh > /dev/null 2>&1 &
4,备份-D(192.168.1.244 )linux内核自带rsync软件,/etc/rsyncd.conf(该文件可能不存在,可以自己新建一个:
1) 服务器端配置:
新建同步用户:
useradd rsync -s /sbin/nologin
新建配置文件 /etc/rsyncd.conf :
uid = rsync
gid = rsync
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 = 192.168.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[lampa]
path = /data/lampaBAK
[mysqlb]
path = /data/mysqlbBAK
[nfsc]
path = /data/nfscBAK
启动rsync服务:
rsync --daemon
写入密码文件:
echo "rsync_backup:oldboy" > /etc/rsync.password
chmod -R 600 /etc/rsync.password
2)客户端192.168.1.241 , 192.168.1.242 ,192.168.1.243 配置:
echo "oldboy" > /etc/rsync.password (只有密码,权限设为600)
chmod -R 600 /etc/rsync.password
3)存储-C 是实时备份,用inotify + rsync
建立备份文件夹 /data/nfscBAK,且所有者为oldboy
4)WEB-A,数据库-B,用rsync 做定时备份
建立备份文件夹 /data/lampaBAK , mysqlbBAK,且所有者为oldboy
相关文章推荐
- 企业实战(2)-实现基于LVS负载均衡集群的电商网站架构
- 企业实战(4)-实现基于Haproxy负载均衡集群的电子商务网站架构
- 高性能网站架构之缓存篇—Redis集群搭建
- 大数据Spark “蘑菇云”行动Hadoop实战速成之路第29课:Hadoop架构详解及Hadoop集群搭建、配置和测试实战
- linux下Yum搭建lamp网站架构
- LAMP网站架构的基础构思及搭建解析——CentOS7.0
- 项目实战2—实现基于LVS负载均衡集群的电商网站架构
- java高并发分布式集群高可用网站系统架构实战
- 企业集群平台架构实现与应用实战(HAproxy+keepalived篇) 推荐
- LAMP网站架构搭建及应用案例-亨利工作室
- Linux 企业网站集群架构
- 企业实战(3)-主从实现基于Keepalived高可用集群网站架构 推荐
- 企业网站架构之Nginx+tomcat+memcached集群
- 企业集群平台架构实现与应用实战
- 实战从源码编译LAMP架构+Discuz搭建bbs论坛
- (转)高性能网站架构之缓存篇—Redis集群搭建
- Linux运维学习笔记之十五:搭建LNMP潮流组合和企业集群架构
- 网站集群架构搭建
- 企业Web常用架构LAMP-LNMP实战
- 用LAMP架构搭建自己的博客