配置 Liberty 群體抄本集
您可以配置群體抄本集。抄本集為 Liberty 管理網域提供高可用性的管理功能。
關於這項作業
抄本集是配置成一起運作的一組群體控制器。每個抄本都會含有集內其他抄本已處理的所有儲存庫更新項目。 因此,成員或用戶端不需要在每次與群體互動時,都要連接特定群體控制器;抄本集中所配置的任何群體控制器都可以提供相同的資料。
如需建立及配置群體控制器的詳細指示,請參閱配置 Liberty 群體。
您可以完成下列程序,來配置群體抄本集:
請參閱範例:建立和啟動抄本集,此範例說明如何建立一個由相同主機上的三部群體控制器組成的抄本集。
抄本集需要奇數個抄本。
程序
- 新增抄本到現有的抄本集中。
在抄本集的生命期間,可能需要新增一或多個抄本到現有的集中,比方說,用來增加容量。
抄本集中現有抄本的配置不需要進行任何更新。您可以更新它們,使它們在 server.xml 檔中的配置,能更準確地反映形成抄本集的抄本,但此更新並非必要,而且不會影響其行為。
註: 您不需要變更集中現有抄本的 server.xml 檔中的 replicaSet 值。不需要變更現有抄本的配置。 如果您想要更新集中現有抄本的配置中的 replicaSet 值,使配置值在集中的所有抄本之間是一致的,您必須將現有抄本的配置中的 isInitialReplicaSet 值設為 false。 在您變更 replicaSet 值之後,它所說明的是已變更的抄本集,而不是起始的抄本集。註: 當您參照抄本時,必須保持一致,並使用相同的 host:port 值。如果有使用主機名稱,則必須一直使用。或者,如果有使用 IP 位址,就必須一直使用。如果要新增抄本,請遵循下列步驟:
- 確定現有的抄本集在執行中,且大部分抄本都可供使用。
- 建立伺服器,來作為新的群體控制器。
wlp/bin/server create MyNewController
- 進行抄寫,將新伺服器轉換成群體控制器。
wlp/bin/collective replicate MyNewController --host=host_of_running_controller --port=https_port_of_running_controller --user=userName_for_running_controller --password=userPassword_for_running_controller --keystorePassword=keystore_password_for_new_controller
如果要減少所需要的選項數目,請使用 --controller 選項,而不使用 --user、--password、--host 和 --port。
wlp/bin/collective replicate MyNewController --controller=userName_for_running_controller:userPassword_for_running_controller@host_of_running_controller:https_port_of_running_controller --keystorePassword=keystore_password_for_new_controller
replicate 指令會將 XML 輸出寫入到主控台畫面。您可以將輸出複製到 server.xml 檔案。
如果要將指令的輸出寫入至檔案,而不是寫入到主控台畫面,請指定 --createConfigFile=output_file_path 參數。然後,新增 include 陳述式至 server.xml 檔案,以將輸出的檔案併入群體配置中。<include location=output_file_path />
- 使用 replicate 指令的輸出,來配置新抄本的 server.xml 檔。 將 replicate 指令的 XML 輸出複製到 server.xml 檔案中。您可以修改抄本配置,如下所示:以下是您可能會新增到新抄本 server.xml 檔中的項目範例:
- 必要的設定:這些值必須明確設定。replicate 指令所列印的 XML 包含這個配置,對這些設定而言,這已經足夠。
- hostAuthInfo
- 主機鑑別資訊,內含遠端用戶端啟動伺服器時所需要的內容。只有在新抄本的主機未啟用 SSH 時,才需要這個設定。
一般而言,Linux 主機會啟用 SSH,Windows 主機不會啟用 SSH。
因此,可能只在 Windows 主機上才需要這個設定。
為抄本設定 RPC 認證的方式有兩種:
- 將 rpcUser 設為抄本所在主機的作業系統登入使用者 ID,將 rpcUserPassword 設為該使用者 ID 的作業系統登入密碼。舉例來說,如果您使用使用者 test1 和密碼 test1pwd 登入抄本電腦,請將 hostAuthInfo 元素變更為如下:
<hostAuthInfo rpcUser="test1" rpcUserPassword="test1pwd" />
- 如果抄本主機已向群體控制器登錄,請將抄本的 hostAuthInfo useHostCredentials 設為 true,以繼承其主機的 RPC 認證。
<hostAuthInfo useHostCredentials="true" />
請參閱置換 Liberty 伺服器主機資訊,取得 hostAuthInfo 設定的相關資訊。
- 將 rpcUser 設為抄本所在主機的作業系統登入使用者 ID,將 rpcUserPassword 設為該使用者 ID 的作業系統登入密碼。舉例來說,如果您使用使用者 test1 和密碼 test1pwd 登入抄本電腦,請將 hostAuthInfo 元素變更為如下:
- replicaSet
- 這是一份空格定界的清單,其中含有抄本集中各個 replicaHosts 和 replicaPorts 的 host:port,但目前新增到抄本集中的群體控制器的值不包括在內。例如,
這個集至少必須有一個值已是現有抄本集的抄本。original.host.com:10001 some.other.host.com:10003
- 選用設定:這些設定是預設值,但可以變更。
- isInitialReplicaSet
- False
- replicaHost
- 每個個別抄本的主機名稱
- replicaPort
- 每個個別抄本的埠
這個埠不是群體控制器的 http 或 https 埠,而是在抄本集的抄本之間用來通訊的唯一埠。
- repositoryDir
- 用來保存儲存庫資料的目錄位置
<collectiveController replicaHost="localhost" replicaPort="10012" replicaSet="localhost:10010 localhost:10011" isInitialReplicaSet="false"/>
replicate 指令所列印的 XML 需要更新伺服器的安全配置,以及指定 collectiveRootKeys 金鑰儲存庫密碼。伺服器的安全配置必須與原始群體控制器的配置相同,而且 collectiveRootKeys 金鑰儲存庫密碼必須是用於原始群體控制器的 collectiveRootKeys 金鑰儲存庫密碼的密碼。如果是從 配置 Liberty 群體 中所建立的控制器來建立抄本,新控制器的配置必須包含下列內容:<quickStartSecurity userName="adminUser" userPassword="adminPassword" /> <!-- collective root signers keystore --> <keyStore id="collectiveRootKeys" password="yourPassword" location="${server.config.dir}/resources/collective/rootKeys.jks" />
- 必要的設定:
- 啟動新的群體控制器來啟動新抄本。
- 確認原始群體控制器已順利連接新抄本。在原始群體控制器和抄本的 messages.log 檔中,尋找 CWWKX6009I 訊息。 提示: 對於會執行 replicate 和 addReplica 指令的 Script,在 replicate 指令執行之後,請多等待 10 秒,以確保在執行 addReplica 指令之前,原始群體控制器和抄本已連接。
- 在群體公用程式上呼叫 addReplica 作業來啟動新的抄本。
addReplica 集的引數必須是要新增的抄本之抄本端點(格式為 "replicaHost:replicaPort")。
wlp/bin/collective addReplica localhost:10012 --host=host_of_running_controller --port=port_of_running_controller --user=user_for_running_controller --password=user_password
如果要減少所需要的選項數目,請使用 --controller 選項,而不使用 --user、--password、--host 和 --port。
wlp/bin/collective addReplica localhost:10012 --controller=user_for_running_controller:user_password@host_of_running_controller:port_of_running_controller
- 選擇性的: 必要的話,您可以修改起始抄本集的預設配置。這個步驟僅是建議,但非必要。
當建立起始群體控制器時,會配置起始抄本集。 如果需要修改預設抄本配置,您可以變更 server.xml 檔中的下列內容:
選用設定:這些值是預設值,但可以變更。- replicaHost
- 每個個別抄本的主機名稱
- replicaPort
- 每個個別抄本的埠
這個埠不是群體控制器的 http 或 https 埠,而是在抄本集的抄本之間用來通訊的唯一埠。
- repositoryDir
- 用來保存儲存庫資料的目錄位置
範例:建立和啟動抄本集
這個範例說明如何建立抄本集,然後啟動它。抄本集必須至少有三個抄本,最好是位於不同主機上,以達高可用性。這個範例是將抄本置於相同主機上,因此您需要指派唯一埠號給這些抄本。如果抄本位於不同主機上,這些抄本可以使用相同的埠號。
- 建立抄本集。
為了建立抄本集,您將增加群體控制器的數量,並將它們配置成可以彼此通訊。每一部新的群體控制器都稱為抄本,因為新增的群體控制器具有與原始控制器相同的安全配置,且凡是寫入至任何一部控制器的資訊都會自動抄寫到其他所有作用中的控制器。在配置之後,抄本集中的所有群體控制器可以執行與原始控制器相同的作業。
- 如果您沒有群體控制器,請建立一個。請參閱配置 Liberty 群體的步驟 1。
- 確定現有的群體控制器正在執行。對於名稱是
myController 的現有控制器,執行 status 指令:
如果群體控制器不在執行中,請使用 start 或 run 指令來啟動它:wlp/bin/server status myController
wlp/bin/server start myController
- 建立伺服器,來作為新的群體控制器。
wlp/bin/server create myController2
- 將現有群體控制器的配置抄寫到新的群體控制器。新的群體控制器稱為抄本。
執行 replicate 指令,使其使用現有群體控制器的管理安全網域配置,並且為抄本設定新的金鑰儲存庫密碼。查看現有群體控制器的 server.xml 檔,找出 --host、--port、--user 和 --password 參數的值。對於 --keystorePassword,請設定一值,以用於金鑰儲存庫,例如 myController2。如需這些必要參數和選用參數的相關資訊,請在指令行執行 collective help replicate。
wlp/bin/collective replicate myController2 --host=host_of_existing_controller --port=https_port_of_existing_controller --user=userName_for_existing_controller --password=userPassword_for_existing_controller --keystorePassword=keystore_password_for_new_controller
如果要減少所需要的選項數目,請使用 --controller 選項,而不使用 --user、--password、--host 和 --port。
wlp/bin/collective replicate myController2 --controller=userName_for_existing_controller:userPassword_for_existing_controller@host_of_existing_controller:https_port_of_existing_controller --keystorePassword=keystore_password_for_new_controller
如果提示您接受憑證鏈,請輸入 y(是)。
replicate 指令會將 XML 輸出寫入到主控台畫面。您可以將輸出複製到 server.xml 檔案。
如果要將指令的輸出寫入至檔案,而不是寫入到主控台畫面,請指定 --createConfigFile=output_file_path 參數。然後,新增 include 陳述式至 server.xml 檔案,以將輸出的檔案併入群體配置中。<include location=output_file_path />
- 將 replicate 指令的 XML 輸出新增到抄本的 server.xml 檔,並視需要編輯參數值。
- 確定 httpEndpoint 元素已設定抄本的 httpPort 和 httpsPort 值,且這些值在主機上是唯一的埠號。比方說,假設原始控制器的名稱是 myController,它和抄本都位於相同的本端主機上,且 myController 具有如下的 httpEndpoint 元素:
將 myController2 的值變更為:<httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="9080" httpsPort="9443" />
<httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="9085" httpsPort="9448" />
- 設定 hostAuthInfo 的 RPC 認證。為抄本設定 RPC 認證的方式有兩種:
- 設定 hostAuthInfo RPC 使用者和密碼值。將 rpcUser 設為抄本所在主機的作業系統登入使用者 ID,將 rpcUserPassword 設為該使用者 ID 的作業系統登入密碼。比方說,如果您使用使用者 test1 和密碼 test1pwd 登入抄本電腦,請將 hostAuthInfo 元素變更為如下:
<hostAuthInfo rpcUser="test1" rpcUserPassword="test1pwd" />
- 如果抄本主機已向群體控制器登錄,請將抄本的 hostAuthInfo useHostCredentials 設為 true,以繼承其主機的 RPC 認證。
<hostAuthInfo useHostCredentials="true" />
請參閱置換 Liberty 伺服器主機資訊,取得 hostAuthInfo 設定的相關資訊。
- 設定 hostAuthInfo RPC 使用者和密碼值。將 rpcUser 設為抄本所在主機的作業系統登入使用者 ID,將 rpcUserPassword 設為該使用者 ID 的作業系統登入密碼。比方說,如果您使用使用者 test1 和密碼 test1pwd 登入抄本電腦,請將 hostAuthInfo 元素變更為如下:
- 確定 replicaPort 所設定的抄本埠號在抄本集中是唯一的,且 replicaSet 所設定的 host:port 值可識別抄本集。比方說,如果原始控制器的名稱是 myController,並且它和抄本都位於相同的本端主機上,請將 myController2 的值從 null:
變更為 10011(抄本埠)和 10010(抄本集埠):<collectiveController replicaPort="null" replicaSet="localhost:null" isInitialReplicaSet="false" />
<collectiveController replicaPort="10011" replicaSet="localhost:10010" isInitialReplicaSet="false" />
- 確定安全配置所設定的值,與原始控制器使用的值相同。例如,myController 和 myController2 抄本都使用:
<quickStartSecurity userName="adminUser" userPassword="adminPassword" />
- 確定群體的主要簽章者金鑰儲存庫元素所設定的密碼,與原始控制器使用的相同。比方說,複製 myController server.xml 檔中的 collectiveRootKeys 金鑰儲存庫密碼,並貼到 myController2 抄本的 server.xml 檔中。這個範例顯示產生的密碼:
<!-- collective root signers keystore --> <keyStore id="collectiveRootKeys" password="{xor}Lz4sLCgwLTs=" location="${server.config.dir}/resources/collective/rootKeys.jks"/>
- 確定 httpEndpoint 元素已設定抄本的 httpPort 和 httpsPort 值,且這些值在主機上是唯一的埠號。比方說,假設原始控制器的名稱是 myController,它和抄本都位於相同的本端主機上,且 myController 具有如下的 httpEndpoint 元素:
- 啟動新的群體控制器來啟動新抄本。
wlp/bin/server start myController2
- 驗證原始群體控制器可以與新抄本通訊。
- 在編輯器中開啟原始控制器的訊息日誌 $WLP_USER_DIR/servers/myController/logs/messages.log。
- 尋找下列訊息,其中您環境中的 IP 位址可能不同:
CWWKX6009I: 群體控制器已順利連接抄本 127.0.0.1:10011。現行作用中的抄本集是 [127.0.0.1:10010]。所配置的抄本集是 [127.0.0.1:10010]。所連接的待命抄本是 [127.0.0.1:10011]。
- 驗證新抄本可以與原始群體控制器通訊。
- 在編輯器中開啟抄本的訊息日誌 $WLP_USER_DIR/servers/myController2/logs/messages.log。
- 尋找下列訊息,其中您環境中的 IP 位址可能不同:
此外,因這時控制器不在作用中,預期應會看到下列訊息。您可以忽略此訊息。CWWKX6009I: 群體控制器已順利連接抄本 127.0.0.1:10010。現行作用中的抄本集是 []。所配置的抄本集是 []。所連接的待命抄本是 [127.0.0.1:10011, 127.0.0.1:10010]。
CWWKX6008E: 群體控制器無法使用,可能是因為大部分的抄本集已遺失,或是發生通訊失敗。現行作用中的抄本集是 [127.0.0.1:10010]。所配置的抄本集是 [127.0.0.1:10010]。所連接的待命抄本是 [127.0.0.1:10011]
- 啟動新抄本。
執行 addReplica 指令,使其使用群體控制器的管理安全網域配置,並且以 replicaHost:replicaPort 格式,指定您想啟動之抄本的端點。請查看群體控制器的 server.xml 檔,找出 --host、--port、--user 和 --password 參數的值。查看抄本的 server.xml 檔,找出 replicaHost:replicaPort 的值。如需這些參數的相關資訊,請在指令行執行 collective help addReplica。
wlp/bin/collective addReplica replicaHost:replicaPort --host=host_of_existing_controller --port=port_of_existing_controller --user=user_for_existing_controller --password=user_password
如果要減少所需要的選項數目,請使用 --controller 選項,而不使用 --user、--password、--host 和 --port。
wlp/bin/collective addReplica replicaHost:replicaPort --controller=user_for_existing_controller:user_password@host_of_existing_controller:port_of_existing_controller
就本例來說,現有群體控制器和抄本位於相同主機 localhost,因此請執行下列指令:
wlp/bin/collective addReplica localhost:10011 --host=localhost --port=9443 --user=adminUser --password=adminPassword
如果要減少所需要的選項數目,請使用 --controller 選項,而不使用 --user、--password、--host 和 --port。
wlp/bin/collective addReplica localhost:10011 --controller=adminUser:adminPassword@localhost:9443
如果提示您接受憑證鏈,請輸入 y(是)。
- 針對新增的抄本,重複步驟 1 和 2。比方說,將第三個抄本新增至抄本集。將新抄本命名為 myController3,並指定 replicaPort="10012"。抄本集必須至少有三個抄本,以達高可用性。將第三個抄本新增至抄本集之後,您可以驗證原始群體控制器和新抄本是否已順利同步化。
- 在原始控制器的訊息日誌中,尋找下列訊息。在訊息中,您環境中的 IP 位址可能不同:
CWWKX6015I: 已收到「變更作用中群體控制器抄本集」要求,現在正在處理。現行作用中的抄本集是 {127.0.0.1:10010,127.0.0.1:10011}。所要求的新作用中抄本集是 {127.0.0.1:10010,127.0.0.1:10011,127.0.0.1:10012}。 CWWKX6016I: 已順利變更作用中的群體控制器抄本集。現行作用中的抄本集是 {127.0.0.1:10010,127.0.0.1:10011,127.0.0.1:10012}。先前作用中的抄本集是 {127.0.0.1:10010,127.0.0.1:10011}。 CWWKX6011I: 群體控制器已備妥,可接受要求。主導器是 127.0.0.1:10010。現行作用中的抄本集是 [127.0.0.1:10012, 127.0.0.1:10011, 127.0.0.1:10010]。所配置的抄本集是 [127.0.0.1:10010, 127.0.0.1:10011, 127.0.0.1:10012]。 CWWKX6014I: 這個群體控制器抄本已完成將資料與其他抄本同步化。
- 在所新增的抄本的訊息日誌中,尋找下列訊息。在訊息中,您環境中的 IP 位址可能不同:
CWWKX6016I: 已順利變更作用中的群體控制器抄本集。現行作用中的抄本集是 {127.0.0.1:10010,127.0.0.1:10011,127.0.0.1:10012}。先前作用中的抄本集是 {127.0.0.1:10010,127.0.0.1:10011}。 CWWKX6011I: 群體控制器已備妥,可接受要求。主導器是 127.0.0.1:10010。現行作用中的抄本集是 [127.0.0.1:10012, 127.0.0.1:10011, 127.0.0.1:10010]。所配置的抄本集是 [127.0.0.1:10010, 127.0.0.1:10011, 127.0.0.1:10012]。 CWWKX8112I: 已順利將伺服器的主機資訊發佈到群體儲存庫。 CWWKX8114I: 已順利將伺服器的路徑發佈到群體儲存庫。 CWWKX8116I: 已順利將伺服器的「已啟動」狀態發佈到群體儲存庫。
- 在原始控制器的訊息日誌中,尋找下列訊息。在訊息中,您環境中的 IP 位址可能不同:
次主題
- 自動提供配置給抄本共用
您可以在抄本集中配置一個群體控制器 server.xml 併入檔,並自動更新抄本集中其他抄本的配置。自動讓配置共用的意義在於,您不需手動更新其他抄本的配置。對於使用自動調整功能的群體,自動讓配置共用尤其好用。 - 變更抄本埠
在一個具有很多抄本的抄本集中,如果要變更其中一個抄本之埠,您必須以特定順序停止再啟動抄本,且不得變更超過一個抄本之埠,直到您變更其他抄本之埠後才行。

檔名:tagt_wlp_configure_replicas.html