簡體   English   中英

如何使用 IPAccessHandler 在集群 Solr 環境中限制 IP?

[英]How to restrict IPs in a clustered Solr environment using IPAccessHandler?

我們有一個 Solr 集群系統(兩個實例在兩台服務器上運行),其中使用 zookeeper 維護仲裁。 我們可以通過點擊直接服務器 URL 或一攬子負載均衡器 URL 來訪問 Solr。 我們需要將訪問這三個 URL 的幾個 IP 列入白名單

我已經嘗試過這里提到的步驟: 限制 Jetty 和 Solr 的 IP 地址

在這里: http : //lucene.472066.n3.nabble.com/How-To-Secure-Solr-by-IP-Address-td4304491.html

第一種方法的問題是我無法添加多個 IP 進行白名單

第二種方法的問題是,雖然它允許將字符串數組中的多個 IP 列入白名單,但當我們使用負載均衡器 URL 訪問 Solr 時,它無法識別列入白名單的 IP。 只有當我們點擊單個服務器 URL 時它才能正常工作

另外,我嘗試調用 addWhite 方法,但這也不起作用,並且 Solr 無法啟動。


    <New id="IPAccessHandler" 
    class="org.eclipse.jetty.server.handler.IPAccessHandler"> 
                   <Set name="white"> 
                     <Array type="String"> 
                       <Item>127.0.0.1</Item> 
                       <Item>-.-.-.-|/solr/techproducts/select</Item> 
                     </Array> 
                   </Set> 
                   <Set name="whiteListByPath">false</Set> 
                   <Set name="handler"> 
                     <New id="Contexts" 
    class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/> 
                   </Set> 
                 </New>

這不適用於負載平衡器


    <New class="org.eclipse.jetty.server.handler.IPAccessHandler">
           <Call name="addWhite">
             <Arg>xxx.xxx.xxx.xxx</Arg>
           </Call>
           <Set name="handler">
             <!-- here's where you put what was there before: -->
             <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
           </Set>
         </New>

這不允許將多個 IP 作為參數傳遞給白名單

也許這為時已晚,但我在需要將多個 IP 地址列入白名單時遇到了同樣的問題,所以我想我會分享我找到的解決方案。 我正在運行 Jetty 8.1.16.v20140903 作為 CollabNet Subversion Edge 安裝的一部分,這對我有用:

         <New class="org.eclipse.jetty.server.handler.IPAccessHandler">
           <Call name="setWhite">
             <Arg>
               <Array type="java.lang.String">
                 <Item>xxx.xxx.xxx.xxx</Item>
                 <Item>yyy.yyy.yyy.yyy</Item>
               </Array>
             </Arg>
           </Call>
           <Set name="handler">
             <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
           </Set>
         </New>

請注意,我將Call標記更改為使用setWhite並將Arg更改為包含一個Array 我根據我在 Jetty 8.1.16 的 JavaDoc 中看到的內容進行了此更改: http : //archive.eclipse.org/jetty/8.1.16.v20140903/apidocs/org/eclipse/jetty/server/handler/IPAccessHandler。 html

MatsLindh發表的評論可能是一個更好的長期解決方案(通過操作系統防火牆控制訪問),但我在這里所做的方法也應該可以完成工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM