Проблемы с использованием кэша 2-го уровня NHibernate memcached с AWS Elasticache

Я использую memcached в качестве кеша 2-го уровня NHibernate. Я перевожу свою систему на Amazon Web Services и планирую использовать Elasticache, полностью совместимый с Memcache. Memcached использует набор IP-адресов хоста (примечание: не имен хостов - библиотека выдает ошибку, если обнаруживает недопустимую строку IP) для подключения к серверам memcached. Ниже приведен пример строки конфигурации:

  <memcache>
    <memcached host="192.168.1.1" port="11211" expiration="300" />
  </memcache>

Elasticache, с другой стороны, предоставляет статическое имя хоста для кластеров кеша, и не рекомендуется использовать внутренние IP-адреса, поскольку они подвержены изменениям.

Кто-нибудь смог использовать провайдера NHibernate memcached с Elasticache? Есть ли альтернативные способы настройки memcached с NHibernate, чтобы он использовал имя хоста, а не IP-адрес?

Спасибо

JP


person JP.    schedule 11.03.2013    source источник
comment
Кажется странным, что он не позволяет конфигурировать с именем хоста. Если вы не можете найти способ настроить его напрямую, вы можете использовать прокси memcached на локальном хосте для подключения.   -  person datasage    schedule 11.03.2013


Ответы (4)


Для всех, кто интересуется: мне не удалось указать имя хоста с помощью NHibernate.Caches.MemCache. Однако оказалось, что для NHibernate есть альтернативная реализация memcache - NHibernate.Caches.EnyimMemcached. Это позволяет определять серверы по IP-адресу или имени хоста, решая мою проблему. Мне все еще было бы интересно узнать, можно ли достичь с помощью более старой интеграции Memcache, но с EnyimMemcached все работает хорошо.

person JP.    schedule 15.03.2013

Если кто-то все еще ищет решение,

Вы можете использовать https://github.com/henriquecampos/NHibernate.Caches.Elasticache для подключения к Amazon Elastic Cache с минимальными настройками.

Также для локальной разработки вы можете использовать следующий проект https://github.com/hybridtechie/fake-elasticache-.NET-version

person hybrid    schedule 25.09.2017

Можно ли вместо использования атрибута host в вашем файле конфигурации просто использовать атрибут hostname и установить для него DNS-имя, предоставленное ElastiCache?

ie:

<memcached hostname="simcoprod02.m2st2p.fsw4.use1qa.cache.amazonaws.com" port="11211" expiration="300" />
person Ryan Weir    schedule 14.03.2013

Имена хостов проблемы aws (предоставленные amazon, amazon-XXXX) неприменимы, поскольку они не сопоставлены ни с одним доменом.

Маршрутизация между внутренними IP-адресами также не представляется возможной, вы можете попробовать ее отследить, она проходит везде. Единственный способ - использовать эластичные ips внешней облицовки, как вы выяснили,

Маршрутизация на cnames, сопоставленные с Amazon, также не представляется возможной

вы можете попробовать отправить запрос обратного сопоставления DNS (в FAQ amazon) или установить вторичный запрос DNS (отказ от ответственности, я не пробовал оба, я сопоставил с помощью эластичного IP-адреса, и мне пришлось перейти к более важным вещам)

person Choon Keat    schedule 20.03.2013