インデックスサーチサーバーのクラウドモードでの設定
インデックスサーチサーバーをクラウドモードでインストールした場合は、次の手順を実行します。
|
Java 8 以降を使用していることを確認します。そうでない場合は、以下のコマンドを実行する前に SOLR_JAVA_HOME 環境変数を設定します。
• Windows: SET SOLR_JAVA_HOME=<Java 8 へのパス>
• Unix: export SOLR_JAVA_HOME=<Java 8 へのパス>
|
ZooKeeper ノードのセットアップと起動
1. ZooKeeper ノードごとにデータディレクトリを作成します。次に例を示します。
◦ Windows:
D:\ptc\commondata\zkdata\node1
D:\ptc\commondata\zkdata\node2
D:\ptc\commondata\zkdata\node3
◦ Unix:
/opt/ptc/commondata/zkdata/node1
/opt/ptc/commondata/zkdata/node2
/opt/ptc/commondata/zkdata/node3
2. ZooKeeper ノードを識別するための "myid" という名前のファイルを作成します。このファイルのコンテンツによって各ノードが識別されます。
たとえば、次の myid ファイルのコンテンツは 1 という番号のみです。
◦ Windows:
D:\ptc\commondata\zkdata\node1\myid
◦ Unix:
/opt/ptc/commondata/zkdata/node1/myid
同様に、node2/myid には「2」、node3/myid には「3」を入力します。
|
これらは ZooKeeper に割り当てられている ID であり、次のステップの zoo.cfg で使用されます。
|
3. ZooKeeper 設定ファイルを作成します。
<インデックスサーチホーム>\zookeeper\conf\zoo.cfg
ここで、<インデックスサーチホーム> はインデックスサーチサーバーがインストールされているインストールディレクトリです。
ノード 1 に対して次のコンテンツを追加します。
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=D:\\ptc\\commondata\\zkdata\\node1 OR /opt/ptc/commondata/zkdata/node1
# the port at which the clients will connect
clientPort=<ポート番号>
server.1=<ホスト 1>.ptcnet.ptc.com:2888:3888
server.2=<ホスト 2>.ptcnet.ptc.com:2889:3889
server.3=<ホスト 3>.ptcnet.ptc.com:2890:3890
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
以下のプロパティは一意である必要があり、ZooKeeper ノードごとに指定する必要があります。
dataDir
|
ZooKeeper ノードのデータディレクトリ。
|
clientPort
|
ZooKeeper がリクエストを受信するポート。
|
4. 次のコマンドを実行して、すべての ZooKeeper ノードを起動します。
◦ Windows:
<インデックスサーチホーム>\zookeeper\bin\zkServer.cmd
◦ Unix:
sh <インデックスサーチホーム>\zookeeper\bin\zkServer.sh start
|
ZooKeeper ノードが起動すると、アンサンブル設定 (zoo.cfg) で指定されているほかの ZooKeeper ノードとの通信を開始します。
起動中、コンソールにエラーが表示されたり、ノードがほかの ZooKeeper ノードと接続できないことを報告するログが表示されたりする場合があります。これは、これらのノードがまだ起動していないからです。これらのエラーは無視できます。
|
Solr コア (クラウド) の作成
|
Java 8 以降を使用していることを確認します。そうでない場合は、以下のコマンドを実行する前に SOLR_JAVA_HOME 環境変数を設定します。
• Windows: SET SOLR_JAVA_HOME=<Java 8 へのパス>
• Unix: export SOLR_JAVA_HOME=<Java 8 へのパス>
|
1. コマンドプロンプトを開き、以下のコマンドを使用して Solr を起動します。
◦ Solr の起動 (Windows):
<インデックスサーチホーム>/bin/Index_Search_Server.bat start
◦ Solr の停止 (Windows):
<インデックスサーチホーム>/bin/Index_Search_Server.bat stop
◦ Solr の起動 (Unix):
sh <インデックスサーチホーム>/bin/Index_Search_Server.sh start
◦ Solr の停止 (Unix):
sh <インデックスサーチホーム>/bin/Index_Search_Server.sh stop
ここで、<インデックスサーチホーム> はインデックスサーチサーバーがインストールされているインストールディレクトリです。
2. コマンドプロンプトから<インデックスサーチホーム>/solr/bin に移動し、次のコマンドを実行して、必要なモジュールのコアを作成します。
◦ Windows:
solr.cmd create -c <コレクションの名前> -n <設定セットの名前> -d <設定セットのパス> -shards <シャードの数> -replicationFactor <レプリカ (Solr ノード) の数>
◦ Unix:
solr create -c <コレクションの名前> -n <設定セットの名前> -d <設定セットのパス> -shards <シャードの数> -replicationFactor <レプリカ (Solr ノード) の数>
|
どのインストールからも、このコマンドを実行できるのは 1 回のみです。ZooKeeper が、Solr クラウド全体で使用できるコアを作成します。
|
Windchill Index Search
▪ Windows:
solr.cmd create -c wblib -n wblib -d D:\ptc\IndexSearchServer_Solr1\solr_schemas\wblib -shards 1 -replicationFactor 2
▪ Unix:
solr create -c wblib -n wblib -d /opt/ptc/IndexSearchServer_Solr1/solr_schemas/wblib -shards 1 -replicationFactor 2
Windchill PartsLink
▪ Windows:
solr.cmd create -c clfstructurelib -n clfstructurelib -d D:\ptc\IndexSearchServer_Solr1\solr_schemas\clfstructurelib -shards 1 -replicationFactor 2
▪ Unix:
solr create -c clfstructurelib -n clfstructurelib -d /opt/ptc/IndexSearchServer_Solr1/solr_schemas/clfstructurelib -shards 1 -replicationFactor 2
S1000D
▪ Windows:
solr.cmd create -c sisaadlib -n sisaadlib -d D:\ptc\IndexSearchServer_Solr1\solr_schemas\sisaadlib -shards 1 -replicationFactor 2
▪ Unix:
solr create -c sisaadlib -n sisaadlib -d /opt/ptc/IndexSearchServer_Solr1/solr_schemas/sisaadlib -shards 1 -replicationFactor 2
|
オプションのモジュールがインストールされていない場合でも、Windchill Index Search、Windchill PartsLink、および S1000D のコアを作成することをお勧めします。作成しておくと、これらのモジュールを後でインストールする場合に、そのコアを作成する必要がありません。
|
3. Solr 管理者インタフェースを開き、Solr が実行されていることとコアが使用可能であることを確認します。
http://<Solr ホスト名>:<Solr ポート>/solr
クラウドモードの Solr スキーマの更新 (省略可能)
Solr スキーマを更新するには、次の手順に従います。
1. <インデックスサーチホーム>/solr_schemas に移動し、必要な更新を行います。
2. <インデックスサーチホーム>/solr/server/scripts/cloud-scripts に移動し、次のコマンドを実行して、更新したスキーマを ZooKeeper にアップロードします。
◦ Windows:
zkcli.bat -cmd upconfig -confname <設定セットの名前> -z <コンマで区切られた ZooKeeper ホスト名:ポートエントリのリスト> -confdir <スキーマ設定へのパス>
◦ Unix:
zkcli.sh -cmd upconfig -confname <設定セットの名前> -z <コンマで区切られた ZooKeeper ホスト名:ポートエントリのリスト> -confdir <スキーマ設定へのパス>
次に例を示します。
◦ Windows:
zkcli.bat -cmd upconfig -confname wblib -z host1.ptcnet.ptc.com:2181,host2.ptcnet.ptc.com:2182,host3.ptcnet.ptc.com:2183 -confdir <INDEX_SEARCH_HOME>\solr_schemas\wblib\conf
◦ Unix:
sh zkcli.sh -cmd upconfig -confname wblib -z host1.ptcnet.ptc.com:2181,host2.ptcnet.ptc.com:2182,host3.ptcnet.ptc.com:2183 -confdir <INDEX_SEARCH_HOME>\solr_schemas\wblib\conf
既存の Solr クラウドでの Solr ノードの追加または除去
Solr ノードの追加
1. インデックスサーチサーバーのクラウドモードでのインストールで説明されているようにインデックスサーチサーバーをインストールし、適切な ZooKeeper ホスト、Solr ホスト、Solr データディレクトリ、Solr ポート、Solr ユーザー、および Solr パスワードを指定します。
2. Solr ノードを起動します。
3. Solr URL を使用して次の API を呼び出し、この新規ノードにレプリカを作成して Solr クラウドに追加します。
<Solr URL>/solr/admin/collections?action=ADDREPLICA&collection=<コレクションの名前>&shard=<シャードの名前>
次に例を示します。
◦ Windchill Index Search:
http://host1.ptcnet.ptc.com:9501/solr/admin/collections?action=ADDREPLICA&collection=wblib&shard=shard1
◦ Windchill PartsLink:
http://host1.ptcnet.ptc.com:9501/solr/admin/collections?action=ADDREPLICA&collection=clfstructurelib&shard=shard1
◦ S1000D:
http://host1.ptcnet.ptc.com:9501/solr/admin/collections?action=ADDREPLICA&collection=sisaadlib&shard=shard1
|
レプリカが作成される必要のあるノードを指定するためのパラメータを追加することもできます。次に例を示します。
http://host1.ptcnet.ptc.com:9501/solr/admin/collections?action=ADDREPLICA&collection=wblib&shard=shard1&node=127.0.0.1:9501_solr
|
Solr ノードの除去
1. Solr URL を使用して次の API を呼び出し、Solr クラウドからレプリカを削除します。
<Solr URL>/solr/admin/collections?action=DELETEREPLICA&collection=<コレクションの名前>&shard=<シャードの名前>&replica=<レプリカノードの名前>
|
シャードの名前 (shard) およびレプリカノードの名前 (coreNodeName) の値は <インデックスサーチホーム>/solr/server/solr/<コレクションコアの名前> にある core.properties ファイルにあります。
|
次に例を示します。
◦ Windchill Index Search:
http://host1.ptcnet.ptc.com:9501/solr/admin/collections?action=DELETEREPLICA&collection=wblib&shard=shard1&replica=core_node1
◦ Windchill PartsLink:
http://host1.ptcnet.ptc.com:9501/solr/admin/collections?action=DELETEREPLICA&collection=clfstructurelib&shard=shard1&replica=core_node1
◦ S1000D:
http://host1.ptcnet.ptc.com:9501/solr/admin/collections?action=DELETEREPLICA&collection=sisaadlib&shard=shard1&replica=core_node1
2. 除去した Solr ノードのインストールファイルは削除できます。
既存の Solr クラウドでの ZooKeeper ノードの追加または除去
ZooKeeper ノードの追加
1. インデックスサーチサーバーのクラウドモードでのインストールで説明されているようにインデックスサーチサーバーをインストールし、適切な ZooKeeper ホスト、Solr ホスト、Solr データディレクトリ、Solr ポート、Solr ユーザー、および Solr パスワードを指定します。
2. セクション「ZooKeeper ノードのセットアップと起動」で説明されているように zoo.cfg を追加することで ZooKeeper ノードを設定します。
3. 新規ノードのエントリを追加して、既存のすべての ZooKeeper ノードの zoo.cfg を更新します。
4. すべての ZooKeeper ノードを再起動します。
5. 新しい Zookeeper ノードを追加して、すべての Solr ノードの solrserver.properties を更新します。
xconfmanager -s wt.index.zookeeperHosts=<コンマで区切られた ZooKeeper ホスト名:ポートエントリのリスト> -t config/solrserver.properties -p
6. すべての Solr ノードを再起動します。
7. 新規 ZooKeeper ノードを追加して、wt.properties を更新します。
xconfmanager -s wt.index.zookeeperHosts=<コンマで区切られた ZooKeeper ホスト名:ポートエントリのリスト> -t codebase/wt.properties -p
8. Windchill を再起動します。
ZooKeeper ノードの除去
1. ノードのエントリを除去して、既存のすべての ZooKeeper ノードの zoo.cfg を更新します。
2. すべての ZooKeeper ノードを再起動します。
3. Zookeeper ノードを除去して、すべての Solr ノードの solrserver.properties を更新します。
xconfmanager -s wt.index.zookeeperHosts=<コンマで区切られた ZooKeeper ホスト名:ポートエントリのリスト> -t config/solrserver.properties -p
4. すべての Solr ノードを再起動します。
5. ZooKeeper ノードを除去して、wt.properties を更新します。
xconfmanager -s wt.index.zookeeperHosts=<コンマで区切られた ZooKeeper ホスト名:ポートエントリのリスト> -t codebase/wt.properties -p
6. Windchill を再起動します。
Solr の基本認証の設定 (クラウドモード)
1. コマンドプロンプトを開き、<インデックスサーチホーム>/solr/server/scripts/cloud-scripts に移動します。
2. 次のコマンドを実行して、security.json を ZooKeeper ノードアンサンブルにロードします。
◦ Windows:
zkcli.bat -cmd putfile /security.json <インデックスサーチホーム>/config/solr/security.json -z <コンマで区切られた ZooKeeper ホスト名:ポートエントリのリスト>
◦ Unix:
sh zkcli.sh -cmd putfile /security.json <インデックスサーチホーム>/config/solr/security.json -z <コンマで区切られた ZooKeeper ホスト名:ポートエントリのリスト>
|
xconfmanger が実行されてインデックスサーチサーバーのプロパティが設定されるたびに、所定のユーザー名とパスワードを使用して <インデックスサーチホーム>/config/solr/security.json が生成されます。このファイルを ZooKeeper ノードアンサンブルにロードして、Solr クラウドの認証情報を設定したり変更したりできます。
|
3. Solr 管理者インタフェースを開き、ユーザー名とパスワードの入力を求められることを確認します。
http://<Solr ホスト名>:<Solr ポート>/solr
Solr のユーザーまたはパスワードの変更
Solr のユーザーまたはパスワードを変更するとき、Windchill Index Search のクライアントとサーバーの両方を更新する必要があります。
1. Windchill シェルを開き、以下のコマンドを実行して、Windchill Index Search クライアントのパスワードまたはユーザーを変更します。
xconfmanager -s wt.index.solrAdminUser=<新規ユーザー> -t codebase/WEB-INF/conf/index.solrAuth.properties -p
xconfmanager -s wt.index.solrAdminPassword=<新規パスワード> -t codebase/WEB-INF/conf/index.solrAuth.properties -p
2. Windchill を再起動します。
3. コマンドプロンプトから <インデックスサーチホーム>/bin に移動し、以下のコマンドを実行して、Windchill Index Search サーバーのパスワードまたはユーザーを変更します。
◦ Windows:
xconfmanager -s wt.index.server.solrAdminUser=<新規ユーザー> -t config/solrserver.properties -p
xconfmanager -s wt.index.server.solrAdminPassword=<新規パスワード> -t config/solrserver.properties -p
◦ Unix:
sh xconfmanager -s wt.index.server.solrAdminUser=<新規ユーザー> -t config/solrserver.properties -p
sh xconfmanager -s wt.index.server.solrAdminPassword=<新規パスワード> -t config/solrserver.properties -p
4. 前述の手順に従って <インデックスサーチホーム>/config/solr/security.json を ZooKeeper ノードアンサンブルにロードします。
5. Solr と ZooKeeper ノードを再起動します。
クラウドのインデックスサーチサーバー (Solr) の SSL の設定
開始する前に、証明書とキーが単一のファイルとして PEM フォーマットに変換されている必要があります。
|
証明書のみのファイルが使用できない場合、必要に応じて証明書とキーのファイルから生成できます。
1. keytool ユーティリティを使用して、JKS キーストアを PKCS12 フォーマットに変換します:
keytool -importkeystore -srckeystore solr-ssl.keystore.jks -destkeystore solr-ssl.keystore.p12 -srcstoretype jks -deststoretype pkcs12
2. openssl コマンドを使用して、認証書のみが含まれ、キーは含まれていない PKCS12 フォーマットのキーストアを PEM フォーマットに変換します:
openssl pkcs12 -nokeys -in solr-ssl.keystore.p12 -out solr-ssl.cacert.pem
|
Solr の SSL の設定
Solr を実行しているすべてのノードの Windchill Index Search サーバーを設定します。同じ証明書とキーのファイルをすべてのノードに使用します。
1. 証明書 (JKS) ファイルを <インデックスサーチホーム>/solr/server/etc にコピーします。
2. 共通の SSL 関連のシステムプロパティを設定します。
SSL 設定をアクティブ化するには、次のファイルの SOLR_SSL_* で始まるプロパティをコメント解除し、更新します。
◦ Windows: bin\solr.in.cmd
次に例を示します。
set SOLR_SSL_KEY_STORE=etc/solr-ssl.keystore.jks
set SOLR_SSL_KEY_STORE_PASSWORD=secret)
set SOLR_SSL_TRUST_STORE=etc/solr-ssl.keystore.jks
set SOLR_SSL_TRUST_STORE_PASSWORD=secret
REM Require clients to authenticate
set SOLR_SSL_NEED_CLIENT_AUTH=false
REM Enable clients to authenticate (but not require)
set SOLR_SSL_WANT_CLIENT_AUTH=false
◦ Unix: bin/solr.in.sh
以下に例を示します。
bin/solr.in.sh example SOLR_SSL_* configuration
SOLR_SSL_KEY_STORE=etc/solr-ssl.keystore.jks
SOLR_SSL_KEY_STORE_PASSWORD=secret
SOLR_SSL_TRUST_STORE=etc/solr-ssl.keystore.jks
SOLR_SSL_TRUST_STORE_PASSWORD=secret
# Require clients to authenticate
SOLR_SSL_NEED_CLIENT_AUTH=false
# Enable clients to authenticate (but not require)
SOLR_SSL_WANT_CLIENT_AUTH=false
ここで、"secret" は証明書の作成時に指定されたパスワードです。
3. Windchill シェルを開き、次のコマンドを実行して、インデックスサーチクライアントがインデックスサーチサーバーに接続するときに使用するプロトコルを HTTPS に設定します。
xconfmanager -s wt.index.solrProtocol=https -t codebase/wt.properties -p
4. SSL を使用するように Windchill が設定されている場合、Windchill の外部で使用されている Java クライアントが接続するには証明書が必要です。
このため、Solr クラウドで Solr ノードによって使用されている JVM に証明書をインポートする必要があります。これにより、Solr ノードは Windchill に接続し、インデックシング用のドキュメントをダウンロードできます。
証明書ファイルを JVM トラストストア (Solr ノードの JDK/JVM) に追加します。
a. Solr ノードが使用する Java の場所に移動し、<JAVA>/jre/lib/security で cacerts ファイルのパスを確認します。
b. <Java>/jre/bin に移動し、新しい証明書をインポートします。cacerts に書き込むためのアクセス許可を持つユーザーとして keytool ユーティリティを実行します。
keytool -import -file <証明書ファイル> -alias <一意の名前> -keystore <cacerts ファイルへのパス>
次に例を示します。
keytool -import -file D:\SolrWithSSL\solr-5.4.1\server\etc\solr-ssl.cacert.pem -alias Key_Alias -keystore ../lib/security/cacerts
|
JVM キーストアのデフォルトのパスワードは "changeit" です。
|
5. Windchill を再起動します。
ZooKeeper の SSL の設定
1. クラスタ全体に適用される urlScheme プロパティは、Solr ノードがまだ 1 つも起動していないときに、https に設定する必要があります。
コマンドプロンプトを開き、<インデックスサーチホーム>/solr/server/scripts/cloud-scripts に移動して、次のコマンドを実行します。
◦ Windows:
zkcli.bat -zkhost <コンマで区切られた ZooKeeper ホスト名:ポートエントリのリスト> -cmd clusterprop -name urlScheme -val https
以下に例を示します。
zkcli.bat -zkhost host1.ptcnet.ptc.com:2181,host2.ptcnet.ptc.com:2182,host3.ptcnet.ptc.com:2183 -cmd clusterprop -name urlScheme -val https
◦ Unix:
sh zkcli.sh -zkhost <コンマで区切られた ZooKeeper ホスト名:ポートエントリのリスト> -cmd clusterprop -name urlScheme -val https
以下に例を示します。
sh zkcli.sh -zkhost host1.ptcnet.ptc.com:2181,host2.ptcnet.ptc.com:2182,host3.ptcnet.ptc.com:2183 -cmd clusterprop -name urlScheme -val https
|
urlScheme コマンドは、ZooKeeper ノードが再起動されるたびに実行される必要があります。
|
2. Solr クラウド (ZooKeeper ノードと Solr ノード) を再起動し、Solr 管理インタフェースに移動して、Solr が SSL とともに実行されていることを確認します。
|
SSL の既知の問題については、次のサイトを参照してください。
|