使用NHibernate memcached二级缓存与AWS Elasticache遇到的问题

4

我使用memcached作为我的NHibernate二级缓存。我正在将系统迁移到Amazon Web Services,并计划使用完全兼容Memcache的Elasticache。Memcached使用一组主机IP地址(注意:不是主机名 - 如果检测到无效的IP字符串,该库会抛出错误)来连接memcached服务器。以下是示例配置字符串:

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

另一方面,Elasticache为缓存集群提供静态主机名,不建议使用内部IP地址,因为这些地址容易更改。
有人能够在Elasticache中使用NHibernate memcached提供程序吗?是否有其他方法可以配置NHibernate的memcached,使其使用主机名而不是IP地址?
谢谢
JP

看起来很奇怪,它不允许使用主机名进行配置。如果您找不到直接配置的方法,您可以尝试在本地主机上使用memcached代理进行连接。 - datasage
4个回答

4

对于任何有兴趣的人:我无法使用NHibernate.Caches.MemCache指向主机名。但是,事实证明,NHibernate有一种替代的memcache实现-NHibernate.Caches.EnyimMemcached。这允许通过IP地址或主机名定义服务器,解决了我的问题。如果使用旧的Memcache集成仍然可以实现,我仍然很感兴趣听到这一点,但是使用EnyimMemcached一切都很好。


1

0

在您的配置文件中,不使用host属性,而是直接使用hostname属性,将其设置为ElastiCache提供的DNS名称,这样可以吗?

例如:

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

-1

这是一个AWS的问题 由于它们未映射到任何域名,因此主机名(由亚马逊提供的amazon-XXXX)不适用。

在内部IP之间进行路由似乎也不可能,您可以尝试跟踪路由,但它会到处走。唯一的方法是使用外部面向的弹性IP,就像您发现的那样。

似乎也无法路由到映射到亚马逊上的CNAME。

您可以尝试提交反向DNS映射请求(在Amazon常见问题解答中),或设置次要DNS请求(免责声明,我没有尝试过两者,我使用弹性IP进行了映射,并且必须继续处理更紧急的事情)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接