キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

NSO: HA Troubleshooting

 

概要

本ドキュメントでは tailf-hcc パッケージを使用して NSO の HA(High Availability) を構築する際によく発生する問題についてまとめます。

  

前提条件

本ドキュメントは以下のバージョンをベースに作成しています。バージョンによって動作が変わる可能性がありますので注意してください。

 

NSO: 4.2.1.4

Tail-f HCC Package : 4.0.6

 

また、HA の基本的な設定に関しては tailf-hcc package に含まれる deployment_guide.pdf を参照してください。

  

ncs.conf で HA を有効にしていない

 HA を有効にするには、NSO CLI 上の設定以外に ncs.conf に以下の設定が必要です。デフォルトではコメントアウトされていますので、アンコメントしてください。

<ha>
<enabled>true</enabled>
</ha>

 

アンコメントされていない場合、devel.log に以下のようなエラーが出力されます。

<ERR> 10-Jan-2017::08:51:26.239 foo-1 ncs[1544]: devel-econfd tailf_viperl_server: Got unexpected info: {'EXIT',<0.249.0>,

{badmatch,
{error,
{1,
<<"/tfnm:ncs-state/ha does not exist">>}}}}


<ERR> 10-Jan-2017::08:51:27.596 foo-1 ncs[1544]: ncs Socket connection from "HA socket" rejected - probably due to NCS being in phase0 or service not enabled in config file

 

また、ncs-java-vm.log には以下のようなエラーが出力されます。

<ERROR> 10-Jan-2017::08:51:46.321 TcmApp (tailf-hcc:tailf-hcc)-Run-0: - NCS HA is likely not enabled

 

HA を activate していない

NSO 起動後に CLI で HA を activate しなければなりません。

admin@ncs# ha commands activate
status activated

 

HA が activate されていないと status  が none と表示されます。 

admin@ncs# ha commands status
status foo-1[none]
admin@ncs# show ncs-state ha
ncs-state ha mode none

 

Hostname がマッチしていない

NSO 設定上のホスト名が Linux 上で名前解決できる状態で、かつマッチしていないと tailf-hcc package は正常に動作しません。以下のようにホスト名が合っているかどうか確認してください。

 

NSO 上の設定

ha member foo-1
address 172.17.0.2
default-ha-role master
vip-interface eth0

 

Linux 上のホスト名

root@foo-1:/home/nso# cat /etc/hosts | grep foo-1
172.17.0.2 foo-1.cisco.com foo-1
root@foo-1:/home/nso# hostname
foo-1

 

例えば、上記の設定で foo-1 を foo-1-wrong に変更した場合、ha commands status の表示は以下のようになります。foo-1 とは NSO が設定されている IP から解決したホスト名になりますので、設定されているホスト名と異なっていることが分かります。

admin@ncs# ha commands status
status foo-1[none]

 

なお、Java 実行環境のバージョンや Linux OS 上の IPv6 有効・無効の設定によって FQDN がホスト名として NSO に認識されてしまうことがあるようです。そのような場合、/etc/modprobe.conf 内の options ipv6 disable=1 を削除して IPv6 を有効にしてみるか、どうしても回避できない場合は FQDN で NSO 上の設定も実施してみてください。ただし、将来的にはこの動作は tailf-hcc packge 内で改善される可能性があります。

 

Master/Slave 間が通信できていない

HA の通信にはデフォルトでポート番号 4570 を使用します。また、本ポート番号は ncs.conf の設定で変更できます。この通信ができないとリモートノードが認識できないなどの問題が発生します。

<ha>
<enabled>true</enabled>
<ip>0.0.0.0</ip>
<port>4570</port>
<tick-timeout>PT20S</tick-timeout>
</ha>

 

Firewall などで通信がブロックされていないか確認してください。また、telnet <master NSO> 4570 などで接続が可能かなど確認してください。
 

Master/Slave で異なる Key を使用している

ncs.conf の encrypted-strings 内の値は Mater/Slave で同じ値が設定されている必要があります。これらの値を元に NSO 設定内のパスワードは暗号化・復号化されますので、もし Master/Slave  間で異なる場合切り替え後にデバイスと接続できないという問題が発生します。

 

Master 上

admin@ncs# devices device nxos connect
result true

 

Slave に切り替え後

admin@ncs# devices device nxos connect
result false
info Failed to authenticate towards device nxos: Bad password for local/remote user admin/admin Auth failed

 

ncs.conf の encrypted-strings は必ず同じ値を使用するようにしてください。

 

HA 関連の一般的なログ

NSO CLI のコマンド

  • show ncs-state ha
  • show packages package tailf-hcc
  • ha commands status
  • show running-config ha

 

ログファイル(通常 Master/Slave 両方のものが必要です)

  • ncs-java-vm.log
  • devel.log
  • syslog (/var/log/messages) ※ VIP に関するログが出力されます。

※ ncs-java-vm.log により詳しい情報を残したい場合は、以下の設定を入れることで tailf-hcc package のログレベルを debug に設定します。ログ取得が完了したら設定を削除してください。ログ出力増加に伴い負荷も増す可能性がありますので、ラボで確認のうえ実施してください。

root@ncs(config)# java-vm java-logging logger com.tailf.ns.tailfHcc level level-debug
root@ncs(config-logger-com.tailf.ns.tailfHcc)# commit

 

 

 

バージョン履歴
改訂番号
3/3
最終更新:
‎09-20-2017 11:03 AM
更新者:
 
ラベル(1)