2016年5月

两则 Centos 7 自动备份脚本

WEB 目录备份脚本:

#!/usr/bin/bash
# auth: delovt
# site: http://sys7em.info/

webDir=/var/www/html/www
backDir=/var/bak/www
now=`date +"%F"`
oneMontAgo=`date -d "1 month ago" +"%F"`
newPath="${backDir}/${now}"
oldPath="${backDir}/${oneMontAgo}"

#创建新备份
echo "[+] Create New Backup" >> "${backDir}/log/log.log"
cp -R "${webDir}" "${newPath}"
echo "[+] Copy ${webDir} to ${newPath}" >> "${backDir}/log/log.log"

# 清理旧备份
if [ -e "${oldPath}" ]
then
	echo "[+] Check Folder" >> "${backDir}/log/log.log"
	echo "[+] Folder is exists.." >> "${backDir}/log/log.log"
	rm -rf "${oldPath}"
	echo "[+] Folder remove done.." >> "${backDir}/log/log.log"
fi

MySQL 数据库备份脚本:

#!/usr/bin/bash
# auth: delovt
# site: http://sys7em.info

logPaht=/var/delovt-bak/log/HYxyStudy.log
now=`date +"%F"`
path=/var/delovt-bak/${now}-HYxyStudy

#创建新备份
echo "[+] ====== ${now} ======" >> "${logPath}"
echo "[+] Create New Backup File to ${path}" >> "${logPath}"
/usr/bin/mysqldump -uroot -p123456 test > "${path}"
echo "[+] Create Done..." >> "${logPath}"
echo "[+] ====== End ======" >> "${logPath}"

#删除旧备份
old=`date -d "1 month ago" +"%F"`
oldPath=/var/delovt-bak/${old}-HYxyStudy

if [ -e "${oldPath}" ]
then
	echo "[+] ====== ${now} ======" >> "${logPath}"
	echo "[+] Check File" >> "${logPath}"
	rm -rf ${oldPath}
	echo "[+] Remove File Success ${oldPath}" >> "${logPath}"
	echo "[+] ====== End ======" >> "${logPath}"
fi

vim /etc/crontab 添加定时任务:

# 每天的 23:30 分别执行两个 sh 备份脚本
30 23 * * * /var/autoScript/webBackScript.sh
30 23 * * * /var/autoScript/dbBackScript.sh

记一则 Centos 安全配置

vim /etc/hosts.deny

sshd:all:deny

vim /etc/hosts.allow

sshd:管理IP段:allow

关闭 selinux 关闭 firewalld 配置 iptables

iptables -F
iptables -X

iptables -A INPUT -s 管理IP段 -p TCP --dport 22 -j ACCEPT
iptables -A INPUT -s 来源地址 -p 协议 --dport 端口 -j ACCEPT
iptables -P INPUT DROP

iptables -A OUTPUT -d 管理IP段 -j ACCEPT
iptables -A OUTPUT -d 目的地址 -p 协议 --dport 端口 -j ACCEPT
iptables -P OUTPUT DROP

记一次压测

要求: 能够负载 1000 左右的正常流量并发 

环境: Nginx+Apache+Mysql 负载均衡加站库分离 

配置: Nginx -- 2核 4芯 2G内存
Apache -- 1核 2芯 2G内存
MySQL -- 1核 2芯 2G内存 

基础配置: 

Nginx 虚拟主机

{
    worker_processes 4,
    worker_rlimit_nofile  51200, 
    events { worker_connect  512000},
    keepalive_timeout  65,
    virhost { expires 3d }
}

Apache 虚拟主机

{
    connt_timeout none
}
MySQL
{
   conntect-timeout  30
   max_connections   512
}

测试过程记录: 晚 20:10 开始压测 3 个 Python 脚本, 3*500 共计 1500/s 线程 进行 30 分钟的测试
同时有 10 人左右对系统功能进行正常访问
在 bash 下用以下命令进行访问统计
Nginx:

for((i=1;i<1000;i++));do netstat -anpo | grep ip:80 -c;done 

Apache:

for((i=1;i<1000;i++));do netstat -anpo | grep ip:80 -c;done 

MySQL:

for((i=1;i<1000;i++));do netstat -anpo | grep ip:3306 -c;done 

压测开始后

  Nginx 迅速上升到 2000上下访问

    0.3-3% Cpu 波动,

    内存稳定在 30%

    5 左右子进程

  Apache 保持在 5000 上下的访问

    50%-60% CPU 波动,

    内存稳定在 30%

    10 以上子进程

  Mysql 活动连接保持在 1500 上下

    45% CPU 波动,

    内存稳定在 30%

测试过程总体稳定, 无较大波动

测试完毕后

  Nginx 连接保持 850 上下,

  Apache 依旧为 5000 上下,

  mysql 回落到 650 上下

结果分析: 符合设计要求, 程序正常工作

Apache 优化有待提高 设置最大连接数, 设置超时连接, 提升服务器物理资源 (CPU)