當部署為publish farm時,成員必須能夠登入並查看其任何發佈節點上的資料。
作者環境不需要在發佈環境中建立的使用者和使用者群組(使用者資料)。
在作者環境中建立的大部分使用者資料都會保留在作者環境中,而不會複製至發佈例項。
在一個發佈實例上進行的註冊和修改必須與其他發佈實例同步,以便它們能夠訪問相同的用戶資料。
從AEM6.1開始,啟用用戶同步後,群中的發佈實例中的用戶資料會自動同步,而不會在作者上建立。
用戶資料及其ACL儲存在Oak Core(Oak JCR下的層)中,並使用Oak API訪問。 對於不頻繁的更新,使用Sling Content Distribution(Sling distribution)將使用者資料與其他發佈例項同步是合理的。
使用Sling散發的使用者同步的優點,與傳統複製相比有:
使用者、使 用者 分析和 在發佈 時建立的使用者群組不會在作者上建立
Sling distribution會在jcr事件中設定屬性,讓您在發佈端事件接聽程式中運作成為可能,而不需擔心無限的複製回圈
Sling散發只會傳送使用者資料至非原始發佈例項,以消除不必要的流量
同 步中包括用戶節點中的ACLsset
如果需要作業,建議您使用SSO解決方案或使用嚴格作業,並讓客戶在切換至其他發佈者時登入。
即使啟用了用戶同步,administrators組也不支援同步。 相反,錯誤日誌中將記錄「導入差異」失敗。
因此,當部署為發佈群時,如果將用戶添加到*administrators組或從中刪除用戶,則必須在每個發佈實例上手動進行修改。
依預設,使用者同步為disabled
。
啟用用戶同步涉及修改existing OSGi配置。
啟用使用者同步後,不應新增任何新的設定。
使用者同步需仰賴作者環境來管理使用者資料分發,即使使用者資料並非由作者建立。 許多(但並非全部)配置都發生在作者環境中,每個步驟都清楚地識別要在作者或發佈上執行。
以下是啟用用戶同步的必要步驟,後面是Troubleshooting部分:
啟用使用者同步後,僅會同步新建立的使用者和群組。
啟用使用者同步
在作者上
以管理員權限登入
訪問Web控制台
找到Apache Sling Distribution Agent - Sync Agents Factory
選取要開啟以進行編輯的現有設定(鉛筆圖示)
驗證name
:socialpubsync
選中Enabled
複選框
選擇Save
設定
權限此授權使用者將用於步驟3,以設定Sling散發給作者。
每個發佈例項
以管理員權限登入
訪問安全控制台
建立新使用者
usersync-admin
將此用戶添加到administrators
用戶組
Allow jcr:all
限制 rep:glob=*/activities/*
必須建立新用戶。
admin
**。communities-user-admin user.
存取CRXDE Lite
選擇/home
節點
在右窗格中,選擇Access Control
頁籤
選擇+
按鈕以添加ACL條目
Allow
jcr:all
*/activities/*
選擇保存全部
另請參閱
設定權限
一旦在所有發佈實例上建立了administrators
用戶組的授權用戶,該授權用戶必須在作者上被標識為具有從作者同步用戶資料到發佈的權限。
在作者上
啟用使用者同步
發佈時:
以管理員權限登入
訪問Web控制台
找到Apache Sling Distribution Agent - Queue Agents Factory
選取要開啟以進行編輯的現有設定(鉛筆圖示)
驗證Name
:socialpubsync-reverse
選中Enabled
複選框
選擇Save
重複每個發佈例項
啟用群組同步
在每個發佈例項上:
以管理員權限登入
訪問Web控制台
找到Adobe Social Sync - Diff Observer Factory
選取要開啟以進行編輯的現有設定(鉛筆圖示)
驗證 agent name
: socialpubsync-reverse
選中Enabled
複選框
選擇Save
(可選)修改輪詢間隔
依預設,作者每30秒就會對變更進行民調問答。 要更改此間隔:
在作者上
以管理員權限登入
訪問Web控制台
找到Apache Sling Distribution Trigger - Scheduled Triggers Factory
選取要開啟以進行編輯的現有設定(鉛筆圖示)
Name
: socialpubsync-scheduled-trigger
將Interval in Seconds
設為所需的間隔
選擇Save
預設組態是針對單一發佈例項。 由於啟用用戶同步的原因是同步多個發佈實例(例如對於發佈群),因此需要將其他發佈實例添加到同步代理工廠。
新增發佈例項:
在作者上
以管理員權限登入
訪問Web控制台
找到Apache Sling Distribution Agent - Sync Agents Factory
Name
:socialpubsync
匯出
器端點每個發佈器應有一個匯出器端點。例如,如果有2個發佈者,localhost:4503和4504,則應有2個項目:
https://localhost:4503/libs/sling/distribution/services/exporters/socialpubsync-reverse
https://localhost:4504/libs/sling/distribution/services/exporters/socialpubsync-reverse
匯入工
具端點每個發佈工具都應有匯入工具端點。例如,如果有2個發佈者,localhost:4503和4504,則應有2個項目:
https://localhost:4503/libs/sling/distribution/services/importers/socialpubsync
https://localhost:4504/libs/sling/distribution/services/importers/socialpubsync
選擇Save
(可選)同步其他JCR節點
如果有自訂資料需要在多個發佈例項間同步,則:
在每個發佈例項上:
以管理員權限登入
訪問Web控制台
https://localhost:4503/system/console/configMgr
找到AEM Communities User Sync Listener
選取要開啟以進行編輯的現有設定(鉛筆圖示)
驗證Name
:socialpubsync-scheduled-trigger
節點
類型這是將同步的節點類型清單。除了sling:Folder以外的任何節點類型都必須列在此處(sling:folder需另外處理)。
要同步的節點類型的預設清單:
可忽略
的屬性這是在偵測到任何變更時將忽略的屬性清單。對這些屬性的更改可能會作為其他更改的副作用而得到同步(因為同步始終在節點級別),但對這些屬性的更改本身不會觸發同步。
要忽略的預設屬性:
可忽略
的節點同步期間將完全忽略的子路徑。這些子路徑下的任何內容將隨時同步。
要忽略的預設節點:
Distributed
FoldersMost sling:Folders are ingored,因為不需要同步。此處列出了少數例外。
要同步的預設資料夾
如果Sling ID在兩個或多個發佈例項之間相符,則使用者群組同步將失敗。
如果Sling ID對於發佈群中的多個發佈例項是相同的,則使用者群組將不會同步。
若要驗證所有Sling ID值都不同,請在每個發佈例項上:
http://<host>:<port>/system/console/status-slingsettings
如果發佈例項的Sling ID符合任何其他發佈例項的Sling ID,則:
停止其中一個具有相符Sling ID的發佈例項
在crx-quickstart/launchpad/felix目錄中
搜索並刪除名為sling.id.file的檔案
例如,在Linux系統上:
rm -i $(find . -type f -name sling.id.file)
例如,在Windows系統上:
use windows explorer and search for *sling.id.file*
啟動發佈例項
驗證Sling ID現在是唯一的
重複這些步驟,直到所有發佈例項都有唯一的Sling ID。
要使更新正確同步,必須修改儲存庫包生成器以用於用戶同步:
在每個AEM發佈例項上
訪問Web控制台
找到Apache Sling Distribution Packaging - Vault Package Builder Factory
Builder name: socialpubsync-vlt
選擇編輯表徵圖
添加兩個Package Node Filters
:
/home/users|-.*/.tokens
/home/users|-.*/rep:cache
策略處理:
要用新節點覆蓋現有rep:policy節點,請添加第三個包過濾器:
/home/users|+.*/rep:policy
要防止策略被分發,請設定
Acl Handling:
IGNORE
根據設計,在發佈環境中建立的使用者和設定檔(自行註冊)不會出現在作者環境中。
當拓撲是publish farm且使用者同步已正確設定時,*user *和user profile會使用Sling散發在發佈群中同步。
根據設計,在發佈環境中建立的使用者資料不會出現在作者環境中,反之亦然。
當使用使用者管理與安全性主控台來在發佈環境中新增使用者時,使用者同步會視需要將新使用者及其群組成員資格同步到其他發佈執行個體。 使用者同步也會同步透過安全性主控台建立的使用者群組。
若要讓使用者同步離線,若要移除發佈者或手動同步資料,散發佇列必須空白且安靜。
要檢查分發隊列的狀態,請執行以下操作:
作者:
在/var/sling/distribution/packages
中查找條目
distrpackage_*
命名的資料夾節點使用軟體包管理器
查找待定軟體包(尚未安裝)
socialpubsync-vlt*
命名communities-user-admin
建立當分發隊列為空時,禁用用戶同步:
在作者上
Enabled
核取方塊任務完成後,要重新啟用用戶同步:
在作者上
Enabled
核取方塊用戶同步診斷是一種檢查配置並嘗試識別任何問題的工具。
在作者上,只需從主控制台瀏覽工具、操作、診斷、用戶同步診斷。
只要進入「User Sync Diagnostics(用戶同步診斷)」控制台,就會顯示結果。
未啟用用戶同步時將顯示以下內容:
當從作者環境運行診斷程式時,通過/失敗結果將包含[INFO]部分,該部分顯示已配置的發佈實例清單以供確認。
清單中包含每個發佈例項的URL,該例項將執行該例項的診斷。 url param syncUser
會附加至診斷URL,其值會設定至在步驟2中建立的授權同步使用者。
注意:在啟動URL之前,授 權的 同步使用者必須已登入該發佈例項。
當使用者同步無法運作時,最常見的問題是其他組態是added。 相反,*existing *default configuration has be edited **.
以下是編輯後預設組態在Web主控台中的顯示方式檢視。 如果出現多個實例,應刪除添加的配置。
如果日誌中顯示以下內容:
org.apache.sling.servlets.post.impl.operations.ModifyOperation Exception during response processing.
java.lang.IllegalStateException: This tree does not exist
然後確認2節。 已正確遵循「建立授權使用者」。
本節說明如何建立已授權的使用者(存在於所有發佈例項上),並在作者的「機密提供者」OSGi設定中識別這些使用者。 依預設,使用者為admin
。
授權的使用者應成為administrators
使用者群組的成員,該群組的權限不應變更。
授權使用者應明確擁有下列所有發佈例項的權限和限制:
路徑 | jcr:all | rep:glob |
---|---|---|
/home | X | /活動/ |
/home/users | X | /活動/ |
/home/groups | X | /活動/ |
身為administrators
群組的成員,授權的使用者應擁有下列所有發佈例項的權限:
路徑 | jcr:all | jcr:read | rep:write |
---|---|---|---|
/etc/packages/sling/distribution | X | ||
/libs/sling/distribution | X | ||
/var | X | ||
/var/eventing | X | X | |
/var/sling/distribution | X | X |
如果Sling ID在兩個或多個發佈例項之間相符,則使用者群組同步將失敗。
在具有用戶和組的發佈商上:
建立 套件 /home
編輯包時
/home
Overwrite
在其他發佈例項上:
要配置或啟用用戶同步,請轉至步驟1:Apache Sling Distribution Agent - Sync Agents Factory
當發佈例項無法使用時,如果它日後會重新連線,就不應移除它。 變更會排入發佈者佇列,一旦變更重新上線,就會處理變更。
如果發佈例項永遠不會回線,如果它已永久離線,則必須移除它,因為佇列累積會導致作者環境中的磁碟空間使用量明顯增加。
當發佈者關閉時,作者記錄檔會有類似下列的例外:
28.01.2016 15:57:48.475 ERROR
[pool-12-thread-34-org_apache_sling_distribution_queue_socialpubsync_endpoint1
(org/apache/sling/distribution/queue/socialpubsync/endpoint1)]
org.apache.sling.distribution.agent.impl.SimpleDistributionAgent [agent][socialpubsync] could not deliver package distrpackage_1454014575838_a2b45ec8-0400-42f3-bed8-ae09b66381cb
org.apache.sling.distribution.packaging.DistributionPackageImportException: failed in importing package ...
若要從Apache Sling Distribution Agent - Sync Agents Factory移除發佈者,散發佇列必須空白且安靜。
作者:
按照步驟7從兩個伺服器清單中刪除發佈器:
Exporter Endpoints
Importer Endpoints
重新啟用用戶同步
Enabled
核取方塊