- 使用EBS存储日志文件
创建volume,然后attach到ec2 instance上sudo mkfs.ext3 /dev/sdf
sudo mkdir /mnt/log_1sudo mount -t ext3 /dev/sdf /mnt/log_1
sudo vim /etc/fstab
配置自动挂载 /dev/sdh /mnt/data ext3 defaults 0 0创建每天移动日志脚本(nginx,program,mysqlslow),其中program日志按月分文件夹nginx_log_cut.sh---------nginx日志切分
#!/bin/bash
#execute at 00:00 everyday by root user
#/www/script/project/zoo/web_log_backup.pl mysqlslow /www/logs/mysqlslow/zoo /www/logs/backup
#log dir
log_nginx_path="$1"
log_backup_dir="$2"
log_archieve_dir="$3"
if [ -n $log_nginx_path -a -n $log_backup_dir -a -n $log_archieve_dir ];then
mon_log_dir="${log_backup_dir}/`date -d 'yesterday' +%Y`-`date -d 'yesterday' +%m`/"
#create log dir if not exist
if [ ! -d $mon_log_dir ];then
mkdir -p $mon_log_dir
fi
day_log_path="${mon_log_dir}`date -d 'yesterday' +%Y-%m-%d`.log";
if [ ! -r $day_log_path ];then
mv $log_nginx_path $day_log_path
kill -USR1 `cat /usr/local/webserver/nginx/logs/nginx.pid`
#将日志移到EBS或S3
else
echo "backup file : ${day_log_path} already exist"
fi
else
echo "params error---log_nginx_path:${log_nginx_path}, log_backup_dir:${log_backup_dir}, log_archieve_dir:${log_archieve_dir}\n"
fi
mysql_slowlog_cut.sh--------mysql slow 日志切分
#!/bin/bash
#execute at 00:00 everyday by root user
#/www/script/project/zoo/web_log_backup.pl mysqlslow /www/logs/mysqlslow/zoo /www/logs/backup
#log dir
log_nginx_path="$1"
log_backup_dir="$2"
log_archieve_dir="$3"
if [ -n $log_nginx_path -a -n $log_backup_dir -a -n $log_archieve_dir ];then
mon_log_dir="${log_backup_dir}/`date -d 'yesterday' +%Y`-`date -d 'yesterday' +%m`/"
#create log dir if not exist
if [ ! -d $mon_log_dir ];then
mkdir -p $mon_log_dir
fi
day_log_path="${mon_log_dir}`date -d 'yesterday' +%Y-%m-%d`.log";
if [ ! -r $day_log_path ];then
mv $log_nginx_path $day_log_path
kill -USR1 `cat /usr/local/webserver/nginx/logs/nginx.pid`
#将日志移到EBS或S3
else
echo "backup file : ${day_log_path} already exist"
fi
else
echo "params error---log_nginx_path:${log_nginx_path}, log_backup_dir:${log_backup_dir}, log_archieve_dir:${log_archieve_dir}\n"
fi加入crontab列表
- 使用s3备份日志
创建一个bucket
登陆http://aws.amazon.com/,在左菜单Account下点击Security Credentials,找到Access Key ID和Secret Access Key
perl访问s3方法: http://os.chinaunix.net/a2010/0210/1061/000001061540.shtml
cd ~/tmp
wget http://search.cpan.org/CPAN/authors/id/J/JE/JESSE/LWP-UserAgent-Determined-1.05.tar.gz #LWP::UserAgent::Determined模块检测不能通过,所以直接安装
cd LWP-UserAgent-Determined-1.05/
perl Makefile.PL
make
sudo make installsudo cpaninstall Net::Amazon::S3install Net::Amazon::S3::Tools
- 启用ephemeral(临时)存储空间(注意只能在没有开启一台虚拟机之前启动,正在运行的虚拟机无法启用)
1.准备工作官方参考资料:http://aws.amazon.com/documentation/ec2/下载ec2 api tools:http://aws.amazon.com/developertools/351?_encoding=UTF8&jiveRedirect=1
下载后解压tools,注意必须提前安装好jdk进入myaccout菜单下的 Security Credentials,生成并下载X.509 certificates配置环境变量如下:export EC2_HOME=/usr/local/webserver/ec2tools/ec2-api-tools-1.5.2.4
export PATH=$PATH:$EC2_HOME/bin
export EC2_PRIVATE_KEY=$EC2_HOME/pk-T5BYN3P7XOX3EEQURBGPJNG7IB6M6NPX.pem
export EC2_CERT=$EC2_HOME/cert-T5BYN3P7XOX3EEQURBGPJNG7IB6M6NPX.pem
2.通过修改instance map列表,启用ephemeral空间ec2-run-instances ami-8c1fece5 -b /dev/sdb=ephemeral0 -b /dev/sdc=ephemeral1 -b /dev/sdd=ephemeral2 -b /dev/sde=ephemeral3 -k ry -z us-east-1d -t m1.small3.通过创建新的AMI时更改instance map列表,启用ephemeral空间(此方法未成功,通过自定义snapshot创建的ami启动的instance,网络有问题)在instances里选定一个AMI模板,找到其对应的EBS,创建一个此EBS的snapshotec2-register -n ry-use-ephemeral -d 'use ephemeral storage as default' --root-device-name /dev/sda1 -b /dev/sda1=snap-befb83d9:20:false -b /dev/sdc=ephemeral0 #注册一个新的AMI
#此命令会返回AMI ID: IMAGE ami-36e5365f在Mangement Console里可以找到新创建的AMI,直接创建instance即可4.注意事项ephemeral空间和ip地址一样,只能reboot instance,如果stop or teminate instance,则清空并重新分配经测试,ami必须为amazon系统定义的,不能修改自己创建的ami的device mapping列表,因为ami对应一个snapshot,而snapshot会记录device mapping,不能被重写5.创建一个linux模板ami找到一个适合自己项目的系统ami启动一个instance,并更改device mapping,包含一个默认的root,一个ebs磁盘,挂载所有的ehpemeral存储: ec2-run-instances ami-8c1fece5 -b /dev/sda2=:80:true -b /dev/sdb=ephemeral0 -b /dev/sdc=ephemeral1 -b /dev/sdd=ephemeral2 -b /dev/sde=ephemeral3 -k ry -z us-east-1d -t m1.small配置好ebs,并安装好应用软件选中instance,创建一个image通过些ami,可以创建任意多个相同功能的instances