0

これは奇妙な質問かもしれませんが、私は小さなEC2インスタンスを持っており、毎月かなりの金額がかかります。ただし、1時間ごとに課金されるため、この特定のインスタンスは必要なときにのみオンにし、終了したら電源をオフにします。

このインスタンスの目的は、Counter-Strike:Global Offensive専用サーバーをホストすることです。このサーバーは、プレイするスクリムがある場合にのみ電源を入れます。

オフにするのを忘れて大量に課金されたり、3時間後にインスタンスの電源をオフにするように要求するインテリジェントでない起動スクリプトを使用したりする代わりに、よりインテリジェントな設計を考えていました。

これが私の考えです。インスタンスは、UDP 27015で一定量のネットワークアクティビティが過去10分間に記録されていないかどうかを判断し、電源を切る前に3回試行することで、使用されなくなったことを検知するとインテリジェントに電源を切ります。

そうすれば、電源を入れて試合をプレイでき、サーバーの電源を切る心配はありません:-)

頭の中でかっこいいですね。問題は、私がどのように課題を解決するかです。cronの助けを借りて10分ごとに実行されるbashスクリプトを想像します。

私がここで完全に夢中になっていない場合、bashスクリプトの提案が提供される可能性がありますか?または、私が取り組んでいるこのクエストをどのように解決するかというより良い解決策は、サーバーが使用されなくなったことを検知したときにサーバー自体の電源をオフにすることで$$を節約することです!

4

1 に答える 1

1

私は EC2 インスタンスにあまり詳しくありませんが、何らかの形式の Linux を実行している場合は... Fedora では、ifconfigを使用して、ネットワーク インターフェイスで送受信されたデータの量を確認できます。単一のポートだけでなく、そのインターフェイスのすべてのポートです...その数で十分でしょうか? 数分ごとに監視し、負荷がいつ低下するかを確認するのは非常に簡単なはずです...

おそらく、EC2 インスタンスが起動され、データをログに記録するときに開始される単純なスクリプトです。ゲームの 1 時間後にログを取得し、手動でシャットダウンし、暇なときにログを確認して、これが機能するかどうかを確認できます。(時々ネットワークを使用するものがどれほど多いかは驚くべきことです...)

後付け: おそらくtcpdumpの方が良いでしょうか? UDP ポート 27015 で動作しますか? おそらく -c オプションを使用してバックグラウンド プロセスとして実行し、しばらくスリープ状態にしてから、まだ実行中の場合は tcpdump プロセスを強制終了するなど、タイムアウトする方法が必要になる場合があります。wc -lを介してパイプするか、最後のパケットを取得した行をgrepする必要がある場合があります。警告: tcpdumpは root として実行する必要がある場合があります。

E.g. /usr/sbin/tcpdump -n -nn -q -c 100 -i eth0 port 27015

さらに追記:

#!/bin/bash --norc                             

/usr/sbin/tcpdump -n -nn -q -i eth0 port 27015 2>./logfile 1>/dev/null &
TCPDUMP_PID=$!

echo "sleeping...  pid=$TCPDUMP_PID"
sleep 30
echo "wake up"
kill $TCPDUMP_PID
sleep 2
cat ./logfile
于 2012-11-10T00:00:20.437 に答える