小心 linode 的流量

Posted by wxianfeng Wed, 09 Mar 2011 00:07:00 GMT

linode 真是让人火大,没有任何通知的情况下,扣除了我信用卡 40 usd ,但是事出有因

因为我超过每个月200G流量了,前几天一直收到 linode 的报警邮件,说我的 VPS 流量比较大 超过了了 平均 5M/s, 但是没有提示超流量的后果. 看看我的 blog 能正常访问 ,也就没管它,后来被扣了 40 美元,真让人火大,FUCK LINODE!,越来越讨厌linode了,随便举几个例子:

1,时常会停电
2,ip偶尔被和谐
3,后台 经常session error 和 硬盘使用量 始终显示100%


4,,价格 偏贵
5,超流量 扣费非常严重
6,….

为什么流量这么大,这个可能是大家关心的

我用iftop实时监控流量,发现 下行流量最高达到 20M/s 确实吓人,下图:

linode 后台也可以看出:

由于个人运维经验有限,没发现什么,只发现了 连到我 80 端口nginx 上的ip数很多,下图:

我把nginx 重启了 ,重启后 还是很多 ,流量依然很大,后来我没办法就 关机了 ,隔了一天后 重启了 机器 ,系统正常了 。。。目前还是不知道 解决办法!

最后看下我这两天被扣的钱,你就知道 超过流量 有多么 惨了

让全球人 都来 fuck linode吧!摸下面网址:

fucklinode!!!


Linode Fremont 机房断电

Posted by wxianfeng Thu, 01 Jan 2009 13:10:00 GMT

昨晚 12:00,blog 不能访问,ping也不通,ssh也连不上,一直在找原因,害的我折腾了个把小时,原来 是linode的 Fremont(弗里蒙特)的机房断电了,今天早上上班,blog继续不能访问,但是ssh可以链接,进去后,发现我的所有开启的进程全部关闭了,果然断电了,我日,第一次 感觉到 linode的服务差,另外发现放在linode机房被GFW墙掉的可能性也极大,因为国内的屁民用的很多,所以大家小心为妙,不要一哄而上.

如果你的linode vps也不能访问了,建议查看 http://status.linode.com/ , linode有什么特殊情况会在这里说明 例如我的昨晚机房断电事故: http://status.linode.com/2010/11/fremont-connectivity.html


Linode mysql : Got error 28 from storage engine

Posted by wxianfeng Fri, 20 Aug 2010 15:40:00 GMT

环境:linode(16G磁盘) + centos 5.5

前些天一直收到 linode的 磁盘IO 警告的邮件,工作繁忙 , 也没有管它,殊不知 隔了一天 我的blog 不能访问了 , ssh进入linode跟踪log ,mysql报 Got error 28 from storage engine ,后来查出是磁盘已经用完的原因,解决过程如下:

1,查看磁盘占用情况

[root@li165-150 system]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda              16G   15G   0      100%   /

发现磁盘已经占满 , 接下来需要找出谁占用了这么大的空间

[root@li165-150 system]# cd /
[root@li165-150 /]# du -sh *
5.4M    bin
4.0K    boot
32K     dev
13M     etc
56M     home
21M     lib
16K     lost+found
4.0K    media
4.0K    mnt
4.0K    opt
15G    var

发现 var 目录占用最大 ,继续跟踪 cd /var , du -sh * 最后跟踪到是 /var/log/maillog 占用最大 ,足足有 14G,删除之

>rm /var/log/maillog

此时 使用 df -h 查看空间占用情况 还是 15G , 需要释放删除的空间

2,重启 centos ,释放空间
登入 linode.com reboot 你的centos , 就可以 释放删除文件的磁盘了 , 还有 就是发现 linode。com的显示的磁盘占用情况依然还是 100% ,实际我进入系统查看 , 空闲磁盘已经有 9G了

3,重启之前已经开启的服务

/etc/init.d/mysqld start  # 启动mysql
/usr/local/system/nginx/sbin/nginx # 启动nginx
thin start -C /etc/thin/thin.yml # 启动thin
/etc/init.d/httpd start # 启动 apache
/etc/init.d/postfix start # 启动邮件相关服务
/etc/init.d/dovecot start
/etc/init.d/saslauthd start
cd /usr/local/system/www/short_url/lib
nohup ruby mongoshort.rb -e production & # 启动sinatra
cd /usr/local/system
nohup mongodb/bin/mongod --dbpath=/usr/local/system/mongodb/data & # 启动mongodb
cd /usr/local/system
svnserve -d -r vcs # 启动svn server

在启mongodb的时候 , 报文件锁定 , 无法启动 , 需要 repair 一下

mongodb/bin/mongod --repair

4,ok,大功告成

See:
http://www.mongodb.org/display/DOCS/Durability+and+Repair
http://www.fufuok.com/mysql-got-error-28.html


capistrano + nginx + thin + subversion 自动部署

Posted by wxianfeng Fri, 02 Jul 2010 19:45:00 GMT

以前部署app还是用很老套的ssh客户端,windows我使用 SSH Secure Shell Client , linux 上使用 Filezilla , 传代码非常之慢,今天体验下rails capistrano 自动部署 , 确实挺方便的 , 实现了ssh远程登录操作的一系列操作 , capistrano 的实现原理是 , 本地客户端 执行命令,实质进行了一系列远程操作,部署同步的根本是check 版本控制系统的最新版,版本控制系统可以是subversion,git等 , 我用的是 subversion,步骤:

我的环境;nginx + thin + capistrano 2.5.19 (客户端) + centos 5.5 + subversion

1,安装 capistrano

gem install capistrano

2,rails app加入 capistrano 配置文件

capify .

3,配置 config 下的deploy.rb ,最核心的东西都在这个文件里

set :application, "wxianfeng_com" #  工程名, 随便写了 

set :repository,  "svn://173.230.155.150/wxianfeng_com"   # svn 地址
set :scm, :subversion # 使用 suversion版本控制
# Or: `accurev`, `bzr`, `cvs`, `darcs`, `git`, `mercurial`, `perforce`, `subversion` or `none`
set :scm_username, 'wxianfeng'   # svn 用户名
set :scm_password, '123456'  #svn 密码
set :checkout, "export" # 使用export方式, svn版本信息不需要 track下来

role :web, "173.230.155.150"                          #  这三个填你服务器的ip地址
role :app, "173.230.155.150"                          # 
role :db,  "173.230.155.150", :primary => true # 
# role :db,  "your slave db-server here"

set :deploy_to, "/usr/local/system/www/wxianfeng_com"  # 部署到remote 服务器路径
set :deploy_via, :remote_cache # 通过 remote_cache 方式部署 ,还有一种本地copy的方式
set :user, "root"  # remote 服务器的用户名 
set :runner, "root" # 同上
set :password, "123456" # 服务器的 root 密码

set :rake, "/usr/bin/rake" # 服务器上rake 命令path
default_run_options[:shell] = false 
default_run_options[:pty] = true
set :use_sudo, true # 允许使用 sudo

namespace :deploy do
  
  task :start , :roles => :app do
    invoke_command "cd  .." # invoke_command 是连到 服务器上执行的命令
    invoke_command "thin start -C /etc/thin/thin.yml"
  end
  
  task :stop ,:roles => :app  do
    invoke_command "killall thin" # or "thin stop -C /etc/thin/thin.yml"
  end

  task :restart, :roles => :app, :except => { :no_release => true } do
    #run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
    invoke_command "cd .."
    invoke_command "thin restart -C /etc/thin/thin.yml -O" #  -O 是onebyone(关一个,启一个) 启动thin ,注意是 大写
  end

  desc "Symlink shared configs and folders on each release."
  task :symlink_shared do
    run "rm -rf #{release_path}/public/files" # 创建 软连接, 保证服务器上 图片的 同步
    run "ln -nfs #{shared_path}/public/files #{release_path}/public/files" # or  current_path    run 等同于 invoke_command
  end


end

after 'deploy:update_code', 'deploy:symlink_shared' # 在 deploy:update_code 执行后 callback deploy:symlink_shared

以上当你执行 cap deploy 后 大体执行过程是 先 update_code 然后 deploy:symlink_shared 最后 deploy:restart 服务器 , 上面有一个thin的配置 /etc/thin/thin.yml,如果没有的话, 可以到服务器上生成:

thin config -C /etc/thin/thin.yml -c /usr/local/system/www/wxianfeng_com/current  -s 3 -e production -p 3000

4,部署
第一次部署需要运行下面的命令:

cap deploy:setup

报错:

sh: sudo: command not found 

解决:

>vi  /etc/sudoers
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
#         You have to run "ssh -t hostname sudo <cmd>".
#
#Defaults    requiretty #将这行注释掉

这个命令会在服务器上配置好相关的目录结构.然后再运行:


cap deploy:check



检查通过

第一次部署用的命令是:


cap deploy:cold

以后部署都可以直接用:

cap deploy

修改 nginx 配置:

 root   /usr/local/system/www/wxianfeng_com/current/public/;



修改 root 根目录为 cpistrano 的 current_path 的 public 目录
ok , 你以后更新代码 只需要 cap deploy 就ok了 , 前提是你先 commit 代码到 svn 服务器上 , 用capistrano好处还有一个可以 备份代码 , 因为每一次部署 其实就是相当于 track了svn版本里的最新代码

See:
http://gautamrege.wordpress.com/2009/11/10/capistrano-nginx-thin-deployment-on-linode/
http://weekface.info/2010/03/15/rails-git-capistrano
http://rustammamedov.wordpress.com/2009/12/27/capistrano-nginx-mongrel-deployment/


我的 Linode VPS购买全过程

Posted by wxianfeng Fri, 04 Jun 2010 06:42:00 GMT


一直想拥有自己的VPS , 等待 信用卡 的时间 也够漫长的 , 信用卡 到手 后立即去linode 购买了最便宜的 vps , 19.95 美元 一个月 , 还算可以接受 , 这两天忙于 搭建这个 blog , 也没有 把 购买过程记录下来 , 帮助同样需求的人 , 两天 后 , 回想下之前的 购买 过程 , 在此总结下 :


前提 :
标有master card 或者 VISA 的信用卡即可 , 我用的是招商银行的 , 直接美元支付,估计 还有其他途径 , paypal 等 ,


购买过程:
1,进入 linode.com 首页 直接选择 你要的 套餐 sign up now 进入


2,填写详细信息



这里需要说明的是 CVV码 , CVV码是信用卡防诈骗的一种手段 , 一般在你的信用卡背面 , 最后三位数字 , 不知道的 , 可以打信用卡客服中心 询问


3,选择套餐 + 支付类型



这里 选择你购买的种类套餐 , 还有 是 月付 , 年付 , 2年一付 ,付的越多 有 优惠
下面是填写推荐人的 code , 可以不写 , 如果你觉得这篇文章有帮助的话, 你可以 把我的 refer code 写上
a2b6287f03eeeb19e2d3e72b001834a5fdb5f1ef
或者直接 点击下面网址 进入 购买 :
http://www.linode.com/?r=a2b6287f03eeeb19e2d3e72b001834a5fdb5f1ef


4,下面 一路向下 , 你自然就会 购买成功了


5,购买成功后 , 用你刚刚注册的id 和 password登陆进去 ,选择数据中心
http://www.linode.com/speedtest/index.cfm 会提示你有测试 数据中心 网速的地址 , 上面的 地址进入 , 点击下载 , 测试下载的速度 , 选择你下载 最快的 地址


6 再往下走, 会让你选择OS , 我选择的是centos 5.5 , 可以选择你熟悉的linux版本


7,一路向下 , 我想你已经 成功 2/3 了


8,进入后台后console 设置 Lish password 留ssh 登陆 之用

9,点击 Network 可以看到你的 ip地址 , 我想 你已经 可以 ping 你的ip , 看能不能 ping的通了

10,远程 ssh 连接你的VPS
linux
> ssh root@ip
windows :
借助 putty 等工具

这样 linode 购买 算是大功告成了, 下一步 你就可以 部署 网站了 , 不错吧 。。。。。 我是 第一次 用信用卡 , 发现 信用卡 是一个 极其不安全的 东西 , 购买时 只需要 信用卡 的卡号 , 失效期 , CVV码 三项 即可完成交易 , 不需要输入 交易密码 什么的 , 也就是 说 我的卡丢的 , 没挂失前 , 任何人 都可以 用我的信用卡了 。。。。不过 幸好 有个 额度的 限制。。。。
下一步 准备介绍 godaddy 域名购买 , 还有 ror 部署网站 , 域名指向到空间地址。。。。。。