2012-02-22 5 views
2

ec2にアプリケーションをデプロイするためにゴム製の宝石を使用しました。 こちらの手順は、http://ramenlab.wordpress.com/2011/06/24/deploying-your-rails-app-to-aws-ec2-using-rubber/です。
プロセスは正常に終了したようですが、アプリケーションを使用しようとすると、504ゲートウェイのタイムアウトが発生し続けます。 どうしてこのようなことが起こり、どうすれば修正できますか?マシュー・コンウェイ(以下再掲)からラバーを使用してec2に展開した後で504ゲートウェイのタイムアウトを維持します

+0

どのようにアプリを使用しようとしていますか?正しいTCP/IPポートが開いていますか? AWSのWebコンソールまたはコマンドラインでチェックインしてください:) – Daan

+0

私はcap展開を実行しました:それは問題ありませんでした。 –

+0

正直言って私はRubyをレールに使用したことはありませんでしたが、AWS Webコンソールのセキュリティ設定を見て、正しいポートが開いていることを確認しましたか?ファイアウォールの問題のように聞こえる – Daan

答えて

1

回答:https://groups.google.com/forum/?fromgroups#!searchin/rubber-ec2/504/rubber-ec2/AtEoOf-T9M0/zgda0Fo1qeIJ

注:でもこのコードをあなたのような何かをする必要があります。

>キャップデプロイ:更新

> FILTER = app01 、app02 cap展開:再起動

> FILTER = app03、app04 cap展開:再起動


これはレールアプリケーションと思われますか?レールの積み重ねは非常に遅くなっているので、ロード時間のこの遅れはおそらくあなたが見ているものです。乗客はゼロダウンタイムフィーチャーv3でこれをより良くすることになっていましたが、それはそれを拒否したようで、未定義のポイントで未定義の有料バージョンの一部としてのみ提供する予定です。

私がやっていることは、複数のアプリケーションサーバーインスタンスを持っていてそれをシリアルに再起動して、他のサーバーが再起動している間にトラフィックを1つのサーバーで処理できるようにすることです。単一のインスタンスでは動作しませんが、大部分のプロダクションセットアップでは、冗長性/信頼性のために複数のインスタンスが必要です。これは現在ゴムの一部ではありませんが、私はそれが私のアプリのためのスクリプトの設定を展開して、ある時点でそれをマージします - 私の設定は以下のようになります。

マット

ゴムpassenger.yml:

roles: 
    passenger: 
    rolling_restart_port: "#{passenger_listen_port}" 

    web_tools: 
    rolling_restart_port: "#{web_tools_port}" 

展開-apache.rb:

on :load do 
    rubber.serial_task self, :serial_restart, :roles => [:app, :apache] do 
    rsudo "service apache2 restart" 
    end 
    rubber.serial_task self, :serial_reload, :roles => [:app, :apache] do 
    # remove file checked by haproxy to take server out of pool, wait some 
    # secs for haproxy to realize it 
    maybe_sleep = " && sleep 5" if RUBBER_ENV == 'production' 
    rsudo "rm -f #{previous_release}/public/httpchk.txt #{current_release}/public/httpchk.txt#{maybe_sleep}" 

    rsudo "if ! ps ax | grep -v grep | grep -c apache2 &> /dev/null; then service apache2 start; else service apache2 reload; fi" 

    # Wait for passenger to startup before adding host back into haproxy pool 
    logger.info "Waiting for passenger to startup" 

    opts = get_host_options('rolling_restart_port') {|port| port.to_s} 
    rsudo "while ! curl -s -f http://localhost:$CAPISTRANO:VAR$/ &> /dev/null; do echo .; done", opts 

    # Touch the file so that haproxy adds this server back into the pool. 
    rsudo "touch #{current_path}/public/httpchk.txt#{maybe_sleep}" 
    end 
end 

after "deploy:restart", "rubber:apache:reload" 


desc "Starts the apache web server" 
task :start, :roles => :apache do 
    rsudo "service apache2 start" 
    opts = get_host_options('rolling_restart_port') {|port| port.to_s} 
    rsudo "while ! curl -s -f http://localhost:$CAPISTRANO:VAR$/ &> /dev/null; do echo .; done", opts 
    rsudo "touch #{current_path}/public/httpchk.txt" 
end 
+0

興味深い!だから、「レールの積み重ねが悪くてロードが遅くなっている」と言うと、一般的に数分、数時間話していますか? –

1

私は同じエラーを持って、問題を解決しました。 "haproxy"タイムアウトでした。それはゴムによって設置されたロードバランサです。 30000msに設定されていますので、ラバーコンフィギュレーションファイルで変更する必要があります。

幸運を祈る!

関連する問題