タグ: サーバー生活 を抽出しています。
Total: 10

ようやく、

ブログ | 2011/1/13 01:11
外にバックアップサーバーを置けた。
coreserverであれこれ工夫してやってきたのだけれど、容量もギリになってきたので、誰か自宅サーバーを持ちたそうな気のいい仲間を捜していたのです。

いろいろ仕込んだフルスペックmacminiを渡して、ルーターを設定してもらって完了。

都内なので、東京が壊滅したときは、復旧できないと思います。きっと、僕も生きてないし。

・・・
一段落したので、明日からサイトの方を触り始めよう。

apacheを監視して、落ちてたら起動のsh

ブログ | 2010/5/6 22:40
昨夜、予期せずapacheが落ちるという事態があったので、そんなのを仕込んどいてみる。

apacheCheck.sh
#!/bin/sh

pids=`ps ax | grep apacheCheck.sh | grep -v grep | awk '{print $1}'`
#echo $pids

i=0
for pid in ${pids[*]}
do
 i=`expr $i + 1`
done

if [ $i -le 2 ]; then
 while true
 do
   isAlive=`ps -ef | grep httpd | grep -v grep | wc -l`
   #echo $isAlive
   if [ $isAlive -eq 0 ]; then
     echo `date "+%Y/%m/%d-%H:%M:%S"` apache is down!!!!!
     /opt/local/apache2/bin/apachectl graceful
     
     ADDRESS="メール@アドレスだよ"
     SUBJECT="Apache is down!!"
     MESSAGE=`hostname`
     mail -s "$SUBJECT" $ADDRESS <<EOF
$MESSAGE
EOF
   fi
   sleep 60
 done
else
 echo `date "+%Y/%m/%d-%H:%M:%S"` apacheCheck.sh is already active.
fi
  • 60秒毎にhttpdのプロセスがあるかチェックして、落ちてたら、gracefulで起動する。
  • このshが既に動いているならスルー。
  • このshが落ちてたら嫌なので、一応crontabで毎時で実行。
  • 落ちてたら、メールもしてみる。
  • マシンそのものが落ちたら諦めよう。
  • MySQLが落ちても諦めよう。
▼追記 2010/5/6 23:26
失敗。crontabだとジョブが終了する。

こいつを毎分で動かせばいいんじゃ!
#!/bin/sh

isAlive=`ps -ef | grep httpd | grep -v grep | wc -l`
#    echo $isAlive
if [ $isAlive -eq 0 ]; then
 echo `date "+%Y/%m/%d-%H:%M:%S"` apache is down!!!!!
 /opt/local/apache2/bin/apachectl graceful
 
 ADDRESS="メール@アドレスだよ"
 SUBJECT="Apache is down!!"
 MESSAGE=`hostname`
 mail -s "$SUBJECT" $ADDRESS <<EOF
$MESSAGE
EOF
fi
▼追記 2010/11/29 23:34
どうもapacheが変な落ち方をすると、httpdが残るようだ。で、リスタートもできなかったりする。判別をcurlにする。あと、gracefulだとmod_proxy_balancerがだめだからrestartに。あと、リスタート前に残っている「httpd」をkill。

#!/bin/sh

isAlive=`curl -s --head http://localhost | head -n 1 | grep "^HTTP/" | wc -l`
#echo $isAlive
if [ $isAlive -eq 0 ]; then
 echo `date "+%Y/%m/%d-%H:%M:%S"` apache is down!!!!!
 pid=`ps -axw | grep "httpd" | awk '{print $1}'`
 kill $pid
 /opt/local/apache2/bin/apachectl restart
 
 ADDRESS="メール@アドレスだよ"
 SUBJECT="Apache is down!!"
 MESSAGE=`hostname`
 mail -s "$SUBJECT" $ADDRESS <<EOF
$MESSAGE
EOF
fi

curlはここを参考
http://ja.efreedom.com/Question/1-2924422/シェル-スク...

snowlepardのserverが落ちるのか

ブログ | 2009/12/26 18:16
6番サーバーが1週間おきくらいで落ちる。
apacheのクラスター、mysqlのスレーブだから、落ちてもそんなに酷いことにはならないのだけれど、あまり良くない。

で、他との違いを考えると、6番だけsnowleopardだ。他はleopard。
で、snowleopardのせいにしようかとも思っているのだけれど、できれば全部snowleopardにしたいと思っているので、その結論へは急がないことにする。

とりあえず、my.cnfを見直してみたら他より設定値を大きくしてあったのでそのあたりを変更して様子見。
mysql絡みで言えば、6番だけ5.1系かもしれない。

落ち方としてはosxそのものがフリーズしているから、やっぱりosかなあ。
▼追記 2010/1/14 23:14
これが原因の気がする。止めてから落ちてない。
http://cutedgesystems.com/software/MailServeSnow...
▼追記 2010/1/21 20:27
やっぱり固まったので、週末スノレパを入れ直した。
今度落ちたら、レパにする。
▼追記 2010/3/17 02:00
週末から続けて落ちたので、昨夜レパにした。

ライブドアプロバイダ

ブログ | 2009/10/28 03:21
固定IPを安価に提供してもらえるプロバイダはそれほど選択肢がないのだけれど、ライブドアが速いらしいというのを誰かのブログで目にして、試してみました。申し込むとすぐ使えるのもいいです。

比較したプロバイダは3つ
・dix  (さくらインターネットから最近移行されたプロバイダ)
・ライブドアプロバイダ (今年始めくらいに開始)
・ASAHIネット (固定IPの老舗)

dixが1000円/月くらいで、他がたしか1500円くらい。

MacbookのPPPoE接続で10回計測して、最大と最小を省いた8回の平均
(bフレッツのマンションVDSLタイプ)

[dix]
下り: 38.36
上り: 23.76

[livedoor]
下り: 38.39
上り: 49.12

[asahi-net]
下り: 51.45
上り: 28.92

asahi-netの計測日・時間帯が違うので、比較としていまいちなのですが、傾向は見えたような気がしました。

livedoorは上りが強い。(ちょっと驚きました)
asahi-netは下りが滅法強い。(へー)
dixでも十分だとは思うけれど。

ただ、上りはルーターをかますと、どうも損失が大きい。livedoorで30Mbps、asahi-netで20Mbpsくらいになってします。

ルーターも思い切ってNetgenesisにしてみたのだけれど、速度低下が大きくて少し釈然としていないのが正直なところ。一度サポートに電話して最適化テクでも聞いてみようと思う。
2つのプロバイダに接続して、送信元(LANマシンのIP)でルーティングできるのは、とてもいい。(普通のルーターは、1つのセッションの想定はfletsスクエアなので、送信先の設定しかない)

VDSLだと最大30Mbpsくらいなんじゃないのと思っていたのですが、asahi-netの下り60Mbpsオーバーとか、livedoorの上り50Mbpsオーバーとか、ちょっと驚きでした。

月1万くらいのレンタル専用サーバーだと、10Mbps共有という世界だから、回線的なパフォーマンスは、自宅に立てる方が圧倒的に良さそうです。

ということで、ライブドアを当面使ってみることにしました。(さっき移行済)

mod_proxy_balancerメモ

ブログ | 2009/8/26 01:16
まず知っておきたいことはコレ。
「mod_proxy_balancerの設定反映はrestartで」
http://syo.cocolog-nifty.com/freely/2008/10/mod_...

graceful, graceful, graceful, graceful, gracefulしても、stickysessionが反映されず、昨晩は挫折した。

Apache モジュール mod_proxy
http://httpd.apache.org/docs/2.2/ja/mod/mod_prox...
Apache モジュール mod_proxy_balancer
http://httpd.apache.org/docs/2.2/ja/mod/mod_prox...

さて、実践メモ。
VirtualHost単位で、ロードバランスする。
<VirtualHost *:80>
 DocumentRoot "/Users/****/****/public_html"
 ServerName www.*****.com
 ServerAlias *****.com
 ScriptAlias /cgi-bin/ "/Users/****/***/cgi-bin"
 ErrorLog "/var/log/apache2/****_error_log"
 LogLevel emerg
 CustomLog "/var/log/apache2/****_access_log" combined
 
 ProxyPass /balancer-manager !
 <Location /balancer-manager>
   SetHandler balancer-manager
   order deny,allow
   deny from all
   allow from ***.***.*
 </Location>
 
 ProxyRequests Off
 ProxyPreserveHost On
 
 ProxyPass /files !
 ProxyPass /uploader.php !
 ProxyPass /img.php !
 ProxyPass / balancer://cluster/ lbmethod=byrequests stickysession=BALSESSID nofailover=On timeout=1 maxattempts=1
 ProxyPassReverse / balancer://cluster/
 <Proxy balancer://cluster/>
   BalancerMember http://127.0.0.1:8001 loadfactor=10 route=1
   BalancerMember http://192.168.1.2 loadfactor=10 route=2 redirect=1
   BalancerMember http://192.168.1.3 loadfactor=10 route=3 redirect=1
 </Proxy>
</VirtualHost>
こんな感じか。ルートじゃない場合は、
 ProxyPass /test/ balancer://cluster/test/ lbmethod=byrequests stickysession=BALSESSID nofailover=On timeout=1 maxattempts=1
 ProxyPassReverse /test/ balancer://cluster/test/
 <Proxy balancer://cluster/>
   BalancerMember http://127.0.0.1:8001 loadfactor=10 route=1
   BalancerMember http://192.168.1.2 loadfactor=10 route=2 redirect=1
   BalancerMember http://192.168.1.3 loadfactor=10 route=3 redirect=1
 </Proxy>
こんな感じとか。

同一サーバーにも、ポート8001で飛ばしてるので、
Listen 8001
NameVirtualHost *:8001
<VirtualHost *:8001>
 DocumentRoot "/Users/****/****/public_html"
 ServerName *********.com
 ServerAlias www.*********.com
</VirtualHost>
こんなのを書いたり。

ワーカー側(MySQLで言うところのマスターとスレーブは、バランサーとワーカーという呼び方でいいのかしら?)では、普通にVirtualHostを設定する。

ProxyPass /files !
この辺りの書き方は、files以下はスルーするよ(ワーカーに飛ばさないよ)という意味。

で、同じユーザーをあちこちのサーバーに飛ばすと、セッションが維持されなくて、いろいろ不都合が生じる。その設定が「stickysession=BALSESSID」。PHPが勝手につくるPHPSESSIDは、文字列に「.」を持てないからNG。適当な名前のcookieをsetcookie()なんかでつくる。
if(empty($_COOKIE['BALSESSID'])){
 setcookie('BALSESSID','balancer.2',0);
}
とか。「xxxxxxxx.2」のような値にするのが肝。この数字が「route=2」に対応する。

普通のサイトなら、これでrestartすれば動くんじゃないかと思う。

僕の場合、drupal式(今のは知らない)に.htaccessで
<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP_HOST} ^xxxxxx.com$ [NC]
 RewriteRule ^(.*) http://www.xxxxxx.com/$1 [L,R=301]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ /30maps/public_html/index.php?q=$1 [L,QSA]
</IfModule>
こんなのを書いてるから、balancer-managerの記述を追加。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/balancer-manager
RewriteRule ^(.*)$ /30maps/public_html/index.php?q=$1 [L,QSA]
balancer-managerは、一時的に分散させる比率を変えられたりするので、あった方が面白い。

分散を考慮して、サイトのプログラムもやや修正。画像の表示やファイルのアップロード関係は、どこかのサーバーにまとめる必要がある
 ProxyPass /uploader.php !
 ProxyPass /img.php !
これがそのあたり。これらのURLはマスターへの意。uploaderなんかは、ログインしてるかどうかの判別が必要だから、DBを叩く。


不具合も出そうだけれども、次のステップに入ったということでしばらく様子見。
▼追記 2009/8/27 01:59
IPの取得に使っている
$_SERVER['REMOTE_ADDR']
が、バランサーのIPになってしまう。

PHP5.3の省略三項演算子で、
$host = @$_SERVER['HTTP_X_FORWARDED_FOR'] ?: $_SERVER['REMOTE_ADDR'];
こうすることにした。

携帯adsenseを見たら、アクセスがゼロになっていて、タイミング的にこれだろうということで検索をしたら、
「モバイル向けAdsenseが、表示回数やクリック数がカウントされない件。」
http://blog.mynet.co.jp/hirashima/2008/11/adsens...
で、スバリヒット。

上記サイトを参照に下記のようにして、カウントが再開された。
//$GLOBALS['google']['host']=$_SERVER['HTTP_HOST'];
//$GLOBALS['google']['ip']=$_SERVER['REMOTE_ADDR'];
$GLOBALS['google']['host']= @$_SERVER['HTTP_X_FORWARDED_HOST'] ?:$_SERVER['HTTP_HOST'];
$GLOBALS['google']['ip']= @$_SERVER['HTTP_X_FORWARDED_FOR'] ?: $_SERVER['REMOTE_ADDR'];

//$GLOBALS['google']['url']=$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$GLOBALS['google']['url']=$GLOBALS['google']['host'] . @$_SERVER['REQUEST_URI'];

ところで、
モバイルサイト用のGoogle analyticsは、出ないのだろうか。

サーバーが落ちた時の心境を擬音で表現してみる

落ちる〜〜〜
落ちる〜〜〜 (by detsugu)
ブログ | 2009/8/20 00:09
うぅっ
ぬぅうぅ
(オレだけ繋がらないだけだろぉ)
ぎょぇっ
らぁぁぁ
こらしょっと
むぅぅぅ
(とりあえずスレーブ止めて再起動すっか)
ひゅるぅぅぅ
ぽぁーん
どぉーよ
ほっほほほぉ
(原因探るか)
むぅーん
むぉーん
(まあいいや、なかったことにしよう)
やぁれやぁれ
(なんとなくひと仕事した気分)
ぷはぁー

11:30頃落ちました。すみません。
▼追記 2009/8/23 05:22
今思えば、前日のこれは予兆だったんだな。

パワボ

ブログ | 2009/4/20 02:30
きっと、あれやこれややっていたからなのだろうけれど、サーバーが重くなってプロセスが溜まってニッチもサッチもいかなくなったので、パワーボタンで再起動したのです。SSDだから再起動は速い。

で、何事もなくなったと高を括っていたのだけれど、DBが壊れていたようだ。おそらく再起動のタイミングでアクセスされていたテーブルだったのだと思う。スレーブも全部止まってしまった。

で、repair tablesをして、バックアップして、スレーブを作り直して復旧。

アクセスしてたみなさん、ゴメンナサイ。

強制再起動後は気をつけよう。

重いのは、

ブログ | 2009/4/18 02:42
どうやら、スレーブの一台が足を引っ張っている。
rsyncとTimeMachineを頻繁に動かし過ぎだ。それらが走ると、MySQLが遅延し始める。見直そう。

http://labs.cybozu.co.jp/blog/kazuho/archives/20...

やっぱり、スレーブもSSD化しよう。
32GBで十分だ。

で、1台は切り離してバックアップとかiTunesとかに使うというのがいい気がしてきた。
▼追記 2009/4/18 14:21
さっそくやってみようと、午前中に起きて秋葉原に行くも狙ってたSSDが売り切れ。結局ネットで注文。あー、疲れた。
▼追記 2009/4/18 18:02
32GBは7000円くらいのようだ。
read 170
write 100
のPhotoFastにしてみた。

2.5inchストレージの個数がとても多くなってきた。
HDが12のSSDが4つになる。ほとんど活用されてないから、何か考えよう。
▼追記 2009/4/21 15:47
来ないなあとメールを見たら、在庫切れメールが入ってた。
32はぎりぎりな気がしてきたので、64GB探そう。
前 | 1 | 2 |

Rottel内コンテンツ

ユーザー一覧

Rottelとは?
利用規約
開発飲料
利用者の声
ヘルプ
close