Solr Zookeeper ACL權限配置

首先注意:在配置ACL的時候,請關閉solr運行實例!!不然可能對集羣形成不可恢復的損壞web

開始:apache

1.修改solr.xml,在solrCloud節點添加,告訴solr要使用的provider:ide

    <!--zkACL-->
    <str name="zkCredientialsProvider">org.apache.solr.common.cloud.VMParamsSingleSetCredentialsDigestZkCredentialsProvider</str>
    <str name="zkACLProvider">org.apache.solr.common.cloud.VMParamsAllAndReadonlyDigestZkACLProvider</str>

2.給zkcli.sh添加兩個變量,並把變量加到PATH變量中,這樣使用zkcli.sh訪問zk的時候,就提供了provider和相關用戶名密碼測試

添加的內容:spa

#ZK_ACLS
SOLR_ZK_CREDS_AND_ACLS="-DzkDigestUsername=admin-user -DzkDigestPassword=admin-password -DzkDigestReadonlyUsername=readonly-user -DzkDigestReadonlyPassword=readonly-password"
SOLR_ZK_PROVIDERS="-DzkACLProvider=org.apache.solr.common.cloud.VMParamsAllAndReadonlyDigestZkACLProvider -DzkCredentialsProvider=org.apache.solr.common.cloud.VMParamsSingleSetCredentialsDigestZkCredentialsProvider"

修改的內容:命令行

 

 

3.在bin/solr.in.sh底部添加以下用戶名密碼的配置,目的是爲了讓bin/solr 腳本可以有訪問zk配置文件的權限(也就是說讓solr的web界面裏可以顯示zk配置文件)code

#ZK ACLS
SOLR_ZK_CREDS_AND_ACLS="-DzkDigestUsername=admin-user -DzkDigestPassword=admin-password -DzkDigestReadonlyUsername=readonly-user -DzkDigestReadonlyPassword=readonly-password"
SOLR_OPTS="$SOLR_OPTS $SOLR_ZK_CREDS_AND_ACLS"

好了,配置完成。xml

 

下面咱們來測試一下,blog

假設咱們本來的zk裏面文件夾節點/collections,咱們來給它添加權限,執行:繼承

sh zkcli.sh -zkhost 10.172.85.105 -cmd updateacls /collections

執行完成後咱們進入zk客戶端命令行,執行:

ls /collections,結果以下:

證實咱們成功給/collections這個節點添加了權限。

咱們來查看一下/collections這個節點的權限設置:

如圖中所示,表明有兩個用戶admin-user和readonly-user擁有這個節點的權限,admin-user的權限是cdrwa,readonly-user的權限是r。

咱們授予權限admin-user,而後再查看,這時候就能夠查看了:

 

接下來咱們啓動solr,在solr admin的管理頁面裏查看zk的配置文件:

如圖,查當作功,這說明以前咱們配置的solr.xml和solr.in.sh成功的在solr啓動時給予solr集羣訪問zk的權限。

備註:

1.上述咱們是手動給/collections添加了權限,對於solr自動建立的文件,若是是在咱們配置ACL以前已經生成的文件,都須要咱們手動添加權限,對於配置ACL以後生成的文件,所有會自動添加solr.in.sh中配置的權限。

2.zk的權限設置是非繼承的,也就是說若是A文件夾節點裏有子文件夾節點B,咱們在zk的客戶端命令行中給A設置權限,那麼B不會受影響,任意用戶均可以訪問B。然而上述咱們用zkcli.sh的updateacls命令給/collections目錄節點設置權限時,實際上solr內部的org.apache.solr.cloud.ZkCLI 會遞歸地將collections下的所有文件夾節點/文件節點都設置上權限。

相關文章
相關標籤/搜索