You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure多实例Solr设置ARRAffinity Cookie加载建议失败求助

Solr多实例Cookie设置与帧长度错误解决

背景

Azure Web App部署3个Solr实例,目前遇到建议无法在所有实例加载的问题,尝试用HttpSolrClient设置ARRAffinity Cookie绑定特定实例,但代码运行报错。

报错翻译

与服务器通信时发生IOException错误。frame_size_Error/无效的帧长度

问题分析与修复建议

1. HTTP/2协议适配问题

你使用的Http2SolrClient基于HTTP/2协议,而Azure的ARRAffinity Cookie机制在HTTP/2下容易出现帧大小不兼容的问题,这是报错的直接原因。建议切换回HTTP/1.1版本的HttpSolrClient,兼容性更稳定。

2. 修正Cookie设置代码

不管是切换到HTTP/1.1还是坚持使用HTTP/2,Cookie设置的细节必须注意:

  • 保证Cookie的域名、路径与Solr服务地址完全匹配,否则Cookie无法被正确携带
  • 不要硬编码实例ID,建议先通过普通请求获取Azure返回的有效ARRAffinity值再复用

以下是HTTP/1.1版本的修正代码示例:

// 初始化Cookie存储
CookieStore cookieStore = new BasicCookieStore();
// 创建ARRAffinity Cookie
HttpCookie arrCookie = new HttpCookie("ARRAffinity", "有效实例ID");
// 设置Cookie域名,例如你的Solr服务域名是xxx.azurewebsites.net
arrCookie.setDomain("xxx.azurewebsites.net");
// 设置Cookie路径,对应Solr的根路径
arrCookie.setPath("/solr");
// 将Cookie添加到存储
cookieStore.add(null, arrCookie);

// 构建HTTP/1.1版本的Solr客户端
String solrUrl = "http://xxx.azurewebsites.net/solr";
HttpSolrClient solrClient = new HttpSolrClient.Builder(solrUrl)
        .withCookieStore(cookieStore)
        .build();

3. 替代方案:开启Azure粘性会话

如果手动设置Cookie过于繁琐,可以直接在Azure门户开启Web App的粘性会话(Sticky Sessions),Azure会自动处理ARRAffinity Cookie的生成与携带,无需在代码中手动配置。同时建议检查Solr建议组件的数据是否在所有实例中同步,避免因实例缓存不一致导致建议加载异常。

内容的提问来源于stack exchange,提问作者Rohi_Dev_1.0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 04:41:08