2017-10-13 9 views
0

Lsyncdで同期された2つの同一のサーバー(AとB)があります。メインサーバーAは、Apache、Redis、RDSで構成されたMagento 1.9.1 CEを使用し、FPCを使用します。私はadminのためのAと前のBを作るカスタムadmin URLでそれを設定しました。私は、Bがredis設定を若干修正しているので、varとapp/etc/local.xml以外のすべてのディレクトリを同期しています。Magento Admin/Front SplitサーバーRedisエラー

BはAのredisインスタンスに接続します。 Redisはバックエンドキャッシュとセッションストレージ用に構成されています。 キャッシュ管理ですべてのキャッシュタイプを無効にしてテストしましたが、うまくいきましたが、有効にしたときにBで赤字エラーが発生しました。 '設定'キャッシュタイプが無効になり、エラーはなくなりました。

謎のものは、私が 'Configuration'キャッシュタイプを有効にしてからredisで 'flushall'を実行すると、サーバAまたはBが最初に読み込まれ、バックエンドキャッシュキーが作成され、他のものはこのエラーを伴います。 Aが最初にロードされ、次にBがレディス・エラーを持つとします。そしてredisでflushallが完了し、Bが最初にロードされた場合、Aはredisエラーを返します。

何が間違っているかわからないようです。 はここに私のRedisの構成です:

 <session_save>db</session_save> 
    <cache> 
     <backend>Mage_Cache_Backend_Redis</backend> 
     <backend_options> 
      <server>127.0.0.1</server> 
      <port>6379</port> 
      <database>0</database> 
      <password>SOME_PASSWORD</password> 
      <force_standalone>0</force_standalone> <!-- 0 for phpredis, 1 for standalone PHP --> 
      <connect_retries>3</connect_retries> <!-- Reduces errors due to random connection failures --> 
      <automatic_cleaning_factor>0</automatic_cleaning_factor> <!-- Disabled by default --> 
      <compress_data>1</compress_data> <!-- 0-9 for compression level, recommended: 0 or 1 --> 
      <compress_tags>1</compress_tags> <!-- 0-9 for compression level, recommended: 0 or 1 --> 
      <compress_threshold>20480</compress_threshold> <!-- Strings below this size will not be compressed --> 
      <compression_lib>gzip</compression_lib> <!-- Supports gzip, lzf and snappy --> 
      <persistent>1</persistent> <!-- persistence value, 0: not in use, > 0 used as persistence ID --> 
     </backend_options> 
    </cache> 
    <redis_session>      <!-- All options seen here are the defaults --> 
     <host>127.0.0.1</host> 
     <port>6379</port> 
     <password>SOME_PASSWORD</password>   <!-- Specify if your Redis server requires authentication --> 
     <timeout>2.5</timeout>   <!-- This is the Redis connection timeout, not the locking timeout --> 
     <persistent></persistent>   <!-- Specify unique string to enable persistent connections. E.g.: sess-db0; bugs with phpredis and php-fpm are known: https://github.com/nicolasff/phpredis/issues/70 --> 
     <db>1</db>      <!-- Redis database number; protection from accidental loss is improved by using a unique DB number for sessions --> 
     <compression_threshold>2048</compression_threshold> <!-- Set to 0 to disable compression (recommended when suhosin.session.encrypt=on); known bug with strings over 64k: https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/issues/18 --> 
     <compression_lib>gzip</compression_lib>    <!-- gzip, lzf or snappy --> 
     <log_level>4</log_level>    <!-- 0 (emergency: system is unusable), 4 (warning; additional information, recommended), 5 (notice: normal but significant condition), 6 (info: informational messages), 7 (debug: the most information for development/testing) --> 
     <max_concurrency>6</max_concurrency>     <!-- maximum number of processes that can wait for a lock on one session; for large production clusters, set this to at least 10% of the number of PHP processes --> 
     <break_after_frontend>5</break_after_frontend>  <!-- seconds to wait for a session lock in the frontend; not as critical as admin --> 
     <break_after_adminhtml>30</break_after_adminhtml> 
     <bot_lifetime>7200</bot_lifetime>     <!-- Bots get shorter session lifetimes. 0 to disable --> 
    </redis_session> 

問題は、異なるURL間で共有していないようバックエンドキャッシュすなわちデータベース0 です。

ザ・Redisの誤差がある:Bのlocal.xmlに私は別のデータベースを使用している場合 Redis error

しかし、それは何の問題を持っていないよりも、バックエンドのキャッシュのための2を言うことができます。私はAとBの両方に同じバックエンドキャッシュデータベースを使用したいと思います。誰も私がここで何が起こっているのか理解するのを助けることができますか?

ありがとうございます!

答えて

0

私は回避策を見つけました。その解決策は理にかなっているようです。私は両方のサーバで同じlocal.xmlファイルを作成しました。サーバーAのlocal.xmlファイルは、キャッシュとセッションの両方に対してローカルIP 127.0.0.1ではなくプライベートIPに接続するようにredisを構成しました。 BがAのredisインスタンスに接続する必要があるため、設定は同じでした。そして、私は赤ちゃんをフラッシュし、それは働いた。 Magentoは設定をデータベースに保存すると思います。そのため、キャッシュ管理でキャッシュタイプ「設定」を有効にすると、フロントサーバーBのエラーが特に発生しているようです。Aが先に127.0.0.1のホスト名をデータベースに保存したときに、リモートサーバーAの代わりに自分自身に送信してください(Bでredisサービスが停止しました)

私はいくつかの調査を行い、それがわかっています。このポストは、思考プロセスに着火しました。

How can I disable the cache via the database?

これは、ローカル・データベースと同じでした。だから私はRDSを使用しましたが、ホスト名に関連する問題は一貫していないことに気づいていませんでした。

関連する問題