私たちの会社にはDevOpsの人材がなく、私は開発者なので初心者なので、DevOpsのベストプラクティスをほとんど知らないので、間違いがあっても許してください。
2つのUbuntuマシンがあります。彼らはそれぞれ同じWebサーバーを持っているので、アクセスログを提供します。彼らはすべてRails WebサーバーでRubyを実行し、nginxを使用します。
質問: これで、アクセスログとWebアプリケーションログを表示するには共通の場所が必要です。もちろん、ファイルキャッシュは両方のWebサーバーに共通でなければなりません。
このために私はこの解決策を思い出すべきです:NFSを使用してキャッシュとログを格納する別々のサーバーを保持します。したがって、両方のWebサーバーはクライアントとして機能し、NFSサーバーにログとキャッシュを保存します。
GFSについても聞きました。
キャッシュは時間ごとに書き込まれることはほとんどありませんが、ログは毎秒書き込まれます。
もしそうなら、この問題を解決するために何を使うべきかを知りたいです。 NFS、GFS、またはその両方?どれが私に最高のパフォーマンスを与えるでしょうか?私はインターネットでたくさんの検索をしたので、誰がGFSを書くように頼みましたが、私の場合、なぜGFSがNFSよりも優れているのかを知りたいのです。
ベストアンサー1
両方のサーバーから3番目のサーバーにログを送信するには、syslogプロトコル(@satō-katsuraも提案)を使用し、Ubuntuのインストール時にrsyslogパッケージを使用することをお勧めします。 「apache syslog」を検索して情報を見つけることができます。
まず、Apache仮想ホスト構成でApacheログをsyslogにリダイレクトします。たとえば、次のようになります。
ErrorLog "|/usr/bin/tee -a /var/log/www/error.log | /usr/bin/logger -t apache -plocal6.err"
CustomLog "|/usr/bin/tee -a /var/log/www/access.log | /usr/bin/logger -t apache -plocal6.info"
</virtualhost>
ここで local6 は施設で、err と info はログレベルです。
次に、rsyslog 設定を介して 3 番目のエントリに送信します。
local6.* @<ip_dest>
ここで ip_dest は録音マシンの IP です。
これで、これらのログをファイルにリダイレクトするルールを作成できる3番目のログが表示されます。
# process remote messages
if $fromhost-ip == '<ip_host1>' or $fromhost-ip == '<ip_host2>' then {
action(type="omfile" file="/var/log/apachecluster.log")
stop
}
これにより、apachecluster.logという一元的なログが生成されますが、ロギングツールを使用してSplunkなどの複数のシステムのログを処理することもできます。
キャッシュに関しては、ネットワーク上の一部の共有キャッシュを必要とせず、一部のキャッシュおよびログアクセス権を持つプロキシを使用する必要があります。お客様のコメントで述べたように、一部のキャッシュ機能を提供する負荷分散に Google Cloud を使用します。それ以外の場合は、Apacheホストのローカルキャッシュを処理するだけです。キャッシュがリモートの3番目のシステムのハードドライブではなくRAMにあることを望みます。
楽しく過ごしてください