4

我使用memcached作爲我的NHibernate二級緩存。我正在將我的系統移至Amazon Web Services,並計劃使用完全兼容Memcache的Elasticache。 Memcached使用一組主機IP地址(注意:不是主機名 - 如果它檢測到無效IP字符串,則會引發錯誤)連接到memcached服務器。以下是一個示例配置字符串:使用NHibernate memcached使用AWS Elasticache的二級緩存問題

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

Elasticache另一方面爲緩存集羣提供了一個靜態主機名和不建議使用的內部IP地址,因爲這些是容易改變。

有沒有人能夠使用NHibernate的memcached提供與Elasticache?有沒有其他的方法來配置NHibernate的memcached,使它使用主機名而不是IP地址?

謝謝JP

+0

似乎有點奇怪,它不允許與主機配置。如果您找不到直接配置它的方法,則可以在本地主機上使用memcached代理進行連接。 – datasage 2013-03-11 15:59:45

回答

3

任何有興趣:我無法指向使用NHibernate.Caches.MemCache主機名。然而,事實證明有一個替代的NHibernate memcache實現 - NHibernate.Caches.EnyimMemcached。這允許通過IP地址或主機名來定義服務器,解決了我的問題。我仍然有興趣知道,如果它可能使用的是舊的Memcache整合,實現但事情與EnyimMemcached工作很好

0

而是在你的配置文件中使用host屬性的

,你能不能只用hostname屬性並將其設置爲ElastiCache提供的DNS名稱?

即:

<memcached hostname="simcoprod02.m2st2p.fsw4.use1qa.cache.amazonaws.com" port="11211" expiration="300" /> 
-1

它是一個AWS問題 主機名(那些由亞馬遜,亞馬遜-XXXX提供)不因爲它們沒有映射到任何域。

內部IPS之間的路由似乎也不可能,你可以嘗試追蹤它到處去。唯一的辦法就是使用面向外部的彈性IPS作爲你發現了,

路由映射到亞馬遜的CNAME也似乎沒有可能

你可以嘗試提交一個反向DNS映射請求(在亞馬遜FAQ),或設置輔助DNS請求(免責聲明,我沒有嘗試這兩種,我映射使用彈性IP,不得不移動到更緊急的事情)