將成員從 Liberty 群體移除
您可以使用群體公用程式 remove 指令,將成員伺服器從群體移除。remove 指令會將成員伺服器從群體取消登錄,並移除該群體相關的成員檔案。remove 指令不會刪除成員伺服器,或是變更成員的 server.xml 檔。
關於這項作業
群體管理者可以使用 join 指令,將伺服器新增至群體,當不再需要成員伺服器之後,可以使用 remove 指令,將該伺服器從群體移除。
remove 指令可以移除不存在的成員伺服器。比方說,在下列情況下,這個指令可以將成員的相關資訊從群體控制器移除:
- 如果不慎或故意刪除成員
- 如果部署失敗,且成員已局部建立,或者成員配置含有錯誤,但是 join 指令已完成
此外,在 remove 指令執行之後,會釋出成員所配置的埠值,以重複使用。
如果成員主機上的整個 wlp/usr 使用者目錄已刪除,您可能需要使用 JConsole 之類的用戶端,將該成員伺服器的參照從群體刪除。
程序
- 停止成員伺服器,或從成員伺服器配置移除群體的相關元素。 如果要停止成員伺服器,請在指令行中執行伺服器 stop 指令:
wlp/bin/server stop memberServerName
如果要讓成員伺服器維持執行中,請從成員伺服器的 server.xml 檔中移除下列任何元素:<featureManager> <feature>collectiveController-1.0</feature> <feature>collectiveMember-1.0</feature> </featureManager> <collectiveMember ... /> <hostAuthInfo ... />
- 使用指令行來移除成員伺服器。
- 在指令行執行群體 remove 指令。
wlp/bin/collective remove memberServerName --host=collectiveControllerHost --port=collectiveControllerHTTPSPort --user=collectiveControllerAdminUserID --password=collectiveControllerAdminUserPassword
如果要減少所需要的選項數目,請使用 --controller 選項,而不使用 --user、--password、--host 和 --port:
wlp/bin/collective remove memberServerName --controller=collectiveControllerAdminUserID:collectiveControllerAdminUserPassword@collectiveControllerHost:collectiveControllerHTTPSPort
比方說,如果群體控制器位於 machineA 主機上,該主機使用埠 1090,且群體控制器管理使用者是 Admin1,密碼是 Admin1pwd,成員伺服器是 member1,請執行下列指令,來移除成員伺服器:
wlp/bin/collective remove member1 --host=machineA --port=1090 --user=Admin1 --password=Admin1pwd
如果要減少所需要的選項數目,請使用 --controller 選項,而不使用 --user、--password、--host 和 --port:
wlp/bin/collective remove member1 --controller=Admin1:Admin1pwd@machineA:1090
這個範例包含 remove 指令的必要設定:
- --host=collectiveControllerHost
- host 設定指定群體控制器伺服器所在主機的名稱。群體控制器伺服器 server.xml 檔中的 defaultHostName 變數設定主機名稱。
- --port=collectiveControllerHTTPSPort
- port 設定指定目標群體控制器的 HTTPS 埠號。群體控制器伺服器 server.xml 檔中的 httpsPort 變數設定埠號。
- --user=collectiveControllerAdminUserID
- user 設定指定目標群體控制器的管理使用者。群體控制器伺服器 server.xml 檔中的 userName 變數設定使用者名稱。
- --password=collectiveControllerAdminUserPassword
- password 設定指定目標群體控制器管理使用者的密碼。群體控制器伺服器 server.xml 檔中的 userPassword 變數設定使用者密碼。如果沒有定義密碼,會提示您提供 --user 設定指定之管理使用者的密碼。
- 如果提示您接受憑證鏈,請輸入 y(是)。
remove 指令會刪除 wlp/usr/servers/member1/resources/collective 目錄。產品會列印類似如下的訊息:
伺服器 member1 已順利取消登錄。 正在嘗試將群體的資源從伺服器移除... 已順利移除群體成員資格的資源。 請更新 server.xml,並移除下列任何元素: <featureManager> <feature>collectiveController-1.0</feature> <feature>collectiveMember-1.0</feature> </featureManager> <collectiveMember ... /> <hostAuthInfo ... />
- 如果您想保留伺服器,請完成訊息中的所有指示。比方說,將訊息中列出的元素,從已移除之成員伺服器的 server.xml 檔移除。
如果您不再需要伺服器,請刪除伺服器目錄。例如,刪除 wlp/usr/servers/member1。
- 在指令行執行群體 remove 指令。
- 如果在執行 remove 指令之前,成員主機上的整個 wlp/usr 使用者目錄已刪除,請在 JConsole 之類的用戶端上,使用 delete 作業,將任何對已移除成員伺服器的參照從群體移除。
- 將 JConsole 連接至群體控制器程序。
- 確定群體控制器正在執行。
wlp/bin/server status collective_controller_name
- 如果 JConsole 不是執行中,請啟動它。在 Windows 上,執行 Java_installation\bin\jconsole.exe。
- 選取群體控制器程序。
使用 JConsole 時,如果要搭配使用 REST Connector,以便透過基礎 HTTPS 連線從遠端存取 MBean,請參閱在 Liberty 中建立遠端 JMX 連線。
- 確定群體控制器正在執行。
- 在 JConsole 中執行 CollectiveRepository getDescendantData 作業,檢查是否有對已移除成員伺服器的參照。
- 在 JConsole MBean 標籤上,選取 CollectiveRepository getDescendantData 作業,並指定群體所在節點的名稱。節點名稱類似於 /sys.was.collectives/local/hosts/host_name;例如 /sys.was.collectives/local/hosts/machineA。
- 在資料清單中,尋找對已移除成員伺服器的參照。如果已移除之成員伺服器的名稱不在資料清單中,表示伺服器不再是群體的成員。成員已順利從群體移除。
不過,如果該成員的參照存在於資料中,請繼續進行下一步。您必須執行 delete 作業,來移除成員。
- 在 JConsole 中執行 CollectiveRepository delete 作業,將對已移除成員伺服器的其餘參照從群體刪除。
- 在 JConsole MBean 標籤上,選取 CollectiveRepository delete 作業。
- 對於 nodeName,請指定您想刪除之成員伺服器的完整節點名稱。此作業會刪除成員伺服器節點和其下的所有節點。
本端程序上的節點名稱類似如下,其中,群體控制器位於主機 machineA 上,成員路徑是 Windows 電腦上的 C:\wlp\usr\servers\member1:
/sys.was.collectives/local/hosts/machineA/userdirs/C%3A%2Fwlp%2Fusr/servers/member1
- 按一下刪除。
- 如果要確認伺服器不再是群體的成員,請重複步驟 2b。在 JConsole 中執行 CollectiveRepository getDescendantData 作業,檢查是否有對已移除成員伺服器的參照。
- 將 JConsole 連接至群體控制器程序。

檔名:tagt_wlp_remove_member.html