概要
このドキュメントでは、インスタントメッセージング(IM)とプレゼンス(IM&P)のクラスタ間ピア間でPostgreSQLデータベースを移動する方法について説明します。
著者:Joel Burleigh、編集:Joseph Koglin、Cisco TACエンジニア
前提条件
要件
これらの条件を満たす環境を用意しておくことをお勧めします。
- バージョン9.1.1の2つのIM&Pクラスタがあります
- クラスタ間ピアは、IM&Pクラスタ間で設定されました。
- PostgreSQLデータベースは、IM&Pパブリッシャに関連付けられた1つのデータベースインスタンスを持つ1つのクラスタに設定されました
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアバージョンとコンポーネントに基づいています。
- IM&Pバージョン9.1.1
- PostgreSQL
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
解決方法
混乱を避けるために、これらの用語はIM&PクラスタとPostgreSQLデータベースを参照するために使用されます。
ご利用条件
- Cluster1:外部データベースが最初に設定されたIM&Pクラスタ
- Cluster2:外部データベース設定の移動先となるIM&Pクラスタ。
- PostgreSQL – 外部データベースホスト用
実行された手順
警告:これらの手順は、他のオプションが残されていない場合にのみ使用してください。これらの手順を進める前に、これが最適なソリューションであることを確認するために社内で検討してください。
注:クラスタ間ピアに対して固定チャットが正しく設定されている場合は、注意が必要です。各クラスタの各ノードは、PostgreSQL上に独自のデータベースインスタンスを持つ必要があります。唯一の例外は、バージョンが11.5以上の場合です。
ステップ1:まず、データベースが現在ホストされているIM&Pパブリッシャ(Cluster1)からCLIコマンドを入力します。
run sql select * from tcaliases
動的に作成された会議IDと、ローカルクラスタに関連付けられた手動で作成されたエイリアスをメモします。
ダイナミック会議IDの例は、conference-2-StandAloneCluster2c2aa.jburleig.localです。プライマリ会議IDがtrueに設定され、fkprocessnodeフィールドに値が設定されているため、これがプライマリ会議IDであることがわかります
チャットノードエイリアスの例はpchat1.jburleig.localです。プライマリはfalseに設定されていますが、fkprocessnodeカラムにはプライマリ会議IDと同じpkid値が設定されているためです。
出力例:
admin:run sql select * from tcaliases
pkid tcalias isprimary fkprocessnode peerclusterid
==================================== ================================================== ========= ==================================== ==============
50a4cf3b-0474-4723-ba50-4cd2cc1dd277 conference-2-StandAloneCluster2c2aa.jburleig.local t 2c2aa1f6-cc7a-470a-a0ba-c8a892db68ca NULL
9eca651d-5a67-3116-a57b-1eb2ab0911bd pchat1.jburleig.local f 2c2aa1f6-cc7a-470a-a0ba-c8a892db68ca NULL
838e900a-0d2f-4843-be00-ac0a6c803ab5 conference-2-StandAloneClustercbea5.jburleig.local f NULL 2202
ステップ2:現在のデータベース(PostgreSQL)のバックアップを作成します。
注:これは、組織の要件に従ってデータベース管理者が行う必要があります。
ステップ3:次に新しいデータベースインスタンスを作成します(PostgreSQL)
- 次のコマンドで作成されるテーブルの名前はcluster2で、作成に使用されるユーザはtcuserです。
注:データベースのEncodedメソッドは、UTF8とは異なる場合があります。
CREATE DATABASE cluster2 WITH OWNER tcuser ENCODING 'UTF8'
ステップ4:ステップ2で作成した新しいデータベースへのtcuserへのアクセスを許可するために、新しいエントリを追加する必要があります。
IM&Pクラスタ上の新しい外部データベース設定が新しいIPサブネット上にある場合は、pg.hba.confファイル(PostgreSQL)で作成したエントリのサブネットを必ず更新してください。
- install_dir /data/pg_hba.confディレクトリにエントリを追加します
host DBName DBUsere Subnet password
host cluster2 tcuser 10.10.1.0/24 password
ステップ5:次に、設定を移動するIM&Pクラスタ(クラスタ2)に新しい外部データベースを作成する必要があります
- [Messaging] > [External Server Setup] > [External Databases]に移動します
- [Add New]ボタンを選択し、新しい外部データベースを設定し、手順3で作成したデータベース名とユーザを使用します
ステップ6:現在のIM&Pで常設チャットを無効にして、常設チャット設定(Cluster1)に関連付けられている外部データベースの割り当てを解除します
- [メッセージ] > [グループチャットと常設チャット]に移動します
- [常設チャットを有効にする]チェックボックスをオフにします
- [External Database]を[unassigned]に設定します
ステップ7:次に、外部データベース設定(Cluster1)を削除します
- [Messaging] > [External Server Setup] > [External Databases]に移動します
- 設定済みのPostgreSQL常設チャットデータベースの横にあるチェックボックスをオンにし、[削除]を選択します。
ステップ8:次に、現在のクラスタ(Cluster1)に設定されている常設チャットカスタムエイリアスを削除します
- [メッセージ] > [Group Chat Server Alias Mapping]に移動します
- 設定済みのエイリアスの横にあるチェックボックスをオンにし、[削除]を選択します。
ステップ9:常設チャットと外部データベースの設定が完全に削除されたら(Cluster1) Cisco XCPルータ(Cluster1)を再起動します
ステップ10:次に、(Cluster2)で常設チャットを有効にし、ステップ5で作成した外部データベースを割り当てます。
- [メッセージ] > [グループチャットと常設チャット]に移動します
- [Enable Persistent Chat]チェックボックスをオンにします
- [External Database]を、手順5で作成した外部データベースに設定します。
ステップ11:パーシステントチャットを有効にした後、(Cluster2)で外部データベース接続テストがokと表示されていることを確認します。すべての緑色のチェックマークが付いている場合にのみ続行します。
- [Messaging] > [External Server Setup] > [External Databases]に移動します
- 外部データベースのトラブルシュータに緑色のチェックマークが表示されていることを確認します。
- ステップ5で設定した設定済みの外部データベースを選択します
ステップ12:(Cluster2)でカスタムエイリアスを作成します。古いクラスタから削除したエイリアスの正確な名前を使用してください。エイリアスの名前は、ステップ1の出力で確認できます。
- [Messaging] > [Group Chat Server Alias Mapping] > [Add New]に移動します
- Cluster1で設定されているものと同じエイリアスを追加します。エイリアス名は、ステップ1のコマンド出力で確認できます。
ステップ13:次にXCPルータ(Cluster2)を再起動します
ステップ14:Cisco XCPルータが正常に再起動したら(Cluster2)、Cisco Text Conferencing Manager(Cluster2)を続行して停止します
ステップ15:ステップ2で作成したPostgreSQLバックアップを使用してデータベースの復元を実行します。ステップ3(PostgreSQL)で作成した新しいデータベースインスタンスにバックアップを復元してください
- インポートされたデータがtc_rooms、tc_users、tc_messages、tc_msgarchiveテーブルにあることを確認します。
ステップ16:次にPostgreSQLサービス(PostgreSQL)を再起動します
ステップ17:次に、cluster2でテキスト会議マネージャを起動します。
- この時点でユーザがJabberにログインすると、常設チャットエイリアスで作成されたチャットルームを確認できます。動的に割り当てられたチャットルーム会議IDに関連付けられたチャットルームは、現在は古いクラスタに関連付けられているため、表示されません。これを修正するには、PostgreSQLサーバでSQL updateコマンドを実行します。
ステップ18. PostgreSQLコマンドラインから、これらのコマンドを実行して、古い会議IDをステップ12で作成した新しいエイリアスに更新します。(PostgreSQL)
注:これらのコマンドを調整して、Cluster1会議IDと設定したエイリアスIDを含める必要があります。
Updates for tc_rooms
update tc_rooms set room_jid = replace(room_jid, ‘conference-2-StandAloneCluster2c2aa.jburleig.local’, ‘pchat1.jburleig.local’);
Updates for tc_users
update tc_users set room_jid = replace(room_jid, ‘conference-2-StandAloneCluster2c2aa.jburleig.local’, ‘pchat1.jburleig.local’);
update tc_users set nick_jid = replace(nick_jid, ‘conference-2-StandAloneCluster2c2aa.jburleig.local’, ‘pchat1.jburleig.local’);
update tc_users set initiator_jid = replace(initiator_jid, ‘conference-2-StandAloneCluster2c2aa.jburleig.local’, ‘pchat1.jburleig.local’);
Updates for tc_messages
update tc_messages set room_jid = replace(room_jid, ‘conference-2-StandAloneCluster2c2aa.jburleig.local’, ‘pchat1.jburleig.local’);
update tc_messages set msg = replace(msg, ‘conference-2-StandAloneCluster2c2aa.jburleig.local’, ‘pchat1.jburleig.local’);
Updates for tc_msgarchive
update tc_msgarchive set to_jid = replace(to_jid, ‘conference-2-StandAloneCluster2c2aa.jburleig.local’, ‘pchat1.jburleig.local’);
update tc_ msgarchive set nick_jid = replace(nick_jid, ‘conference-2-StandAloneCluster2c2aa.jburleig.local’, ‘pchat1.jburleig.local’);
update tc_ msgarchive set message_string = replace(message_string, ‘conference-2-StandAloneCluster2c2aa.jburleig.local’, ‘pchat1.jburleig.local’);
ステップ19:次にPostgreSQLサービス(PostgreSQL)を再起動します
ステップ20:次に、テキスト会議マネージャ(Cluster2)を再起動します
ステップ21:この時点で、JabberクライアントはIM&Pにログインし、[すべての部屋(All Rooms)]タブですべての部屋を取得できます。