SRXでchassis clusterを構築


SRXでHA構成とするためにchassis clusterを構築する時に、躓いたのでメモ。

**機器情報**
`HW:SRX100H、SW:junos 12.3X48-D80.4-domestic`

#chassis clusterとは

SRXでHA構成を実現する際には、chassis clusterという冗長化方式を利用する。
 (セッション同期, RTO同期が可能)
chassis clusterは、JSRP（JUNOS Services Redundancy Protocol）というプロトコルを使用することで冗長化を行って、2台のSRXで単一のコンフィグレーションを保持し仮想的に1台に見せることができる。
なお、chassis clusterを利用するには2台のSRXで機種モデル・OS・ライセンスを同じにする必要がある。


chassis clusterの構築においては2台のSRX間のコントロールリンク、ファブリックリンク（データリンク）を接続する。

<dl>
 <dt>コントロールリンク</dt> 
 <dd>ルーティングエンジン間のクラスタ状態、コンフィグ情報を伝達するためのリンク</dd>
 <dt>ファブリックリンク（データリンク）</dt> 
 <dd>パケットフォワーディングエンジン間の実際のデータ、RTOメッセージ(セッション情報)の伝送リンク</dd>
</dl>

chassis clusterの構築においてはfxp0 / fxp1 / fab の3つのI/Fを使用する。

|　　I/F &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|用途|
|---|---|
|fxp0|SRXシリーズのchassis clusterにて使用する管理用I/F<br>管理用I/Fとして使用することができる物理ポート番号は仕様により決まっている([^1]※)|
|fxp1|SRXシリーズのchassis clusterにて使用するコントロールリンク用I/F<br>コントロールリンク用I/Fとして使用することができる物理ポート番号は仕様により決まっている([^1]※)|
|fab|SRXシリーズのchassis clusterにて使用するファブリックリンク（データリンク）用I/F<br>最大2ポートで構成することができ、ファブリックリンク用I/Fとして使用することができる物理ポートは任意で決められる|


[^1]: ※参考：[SRX - HA by Chassis Cluster - interface](https://www.infraeye.com/study/srx7.5.html)


#chassis clusterの構築手順


①SRXを起動し、コントロールリンクを接続

②Primary機、Secondary機で以下コマンドを実施
　*\<num\>*にはHAを組む機器で同じ任意の値を（ネットワーク内で一意）

**Primary機**
<code>set chassis cluster cluster-id *\<num\>* node 0 reboot</code>

```
root>set chassis cluster cluster-id 1 node 0 reboot
```

**Secondary機**
<code>set chassis cluster cluster-id *\<num\>* node 1 reboot</code>

```
root>set chassis cluster cluster-id 1 node 1 reboot
```

③機器が起動したら、以下の状態になることを確認

**Primary機**

```
{primary:node0} 
root>
```
**Secondary機**

```
{hold:node1}
root>
```

④ファブリックリンクを接続

⑤管理用I/F、コントロールリンク等の設定をPrimary機に投入

#エラー

上記手順にて作業実施したが項番③にて想定とは異なる結果となった。

**Primary機**

```
{hold:node0}
root>
```
**Secondary機**

```
{hold:node1}
root>
```

機器の状態を確認しようにも、結果が出力されない。
（configは出力される）

```
root> show version
warning: Clustering enabled; using private edit
error: shared configuration database modified
```

#解決方法

結論から言うと、IFにデフォルトで設定されている"family ethernet-switching"が原因であった。

```
set interfaces fe-0/0/0 unit 0
set interfaces fe-0/0/1 unit 0 family ethernet-switching vlan members vlan-trust
set interfaces fe-0/0/2 unit 0 family ethernet-switching vlan members vlan-trust
set interfaces fe-0/0/3 unit 0 family ethernet-switching vlan members vlan-trust
set interfaces fe-0/0/4 unit 0 family ethernet-switching vlan members vlan-trust
set interfaces fe-0/0/5 unit 0 family ethernet-switching vlan members vlan-trust
set interfaces fe-0/0/6 unit 0 family ethernet-switching vlan members vlan-trust
set interfaces fe-0/0/7 unit 0 family ethernet-switching vlan members vlan-trust
set interfaces vlan unit 0 family inet address 192.168.1.1/24
```

ということで設定変更するためにrootパスワードを設定し、各機器で該当の設定を削除する。

```
{hold:node0}
root@% cli

{hold:node0}
root> configure 
warning: Clustering enabled; using private edit
warning: uncommitted changes will be discarded on exit
Entering configuration mode

{hold:node0}[edit]
root# 

{hold:node0}[edit]
root# set system root-authentication plain-text-password
New password:
Retype new password:

{hold:node0}[edit]
root# load set terminal 
[Type ^D at a new line to end input]

delete interfaces fe-0/0/1 unit 0 family ethernet-switching vlan members vlan-trust
delete interfaces fe-0/0/2 unit 0 family ethernet-switching vlan members vlan-trust
delete interfaces fe-0/0/3 unit 0 family ethernet-switching vlan members vlan-trust
delete interfaces fe-0/0/4 unit 0 family ethernet-switching vlan members vlan-trust
delete interfaces fe-0/0/5 unit 0 family ethernet-switching vlan members vlan-trust
delete interfaces fe-0/0/6 unit 0 family ethernet-switching vlan members vlan-trust
delete interfaces fe-0/0/7 unit 0 family ethernet-switching vlan members vlan-trust

^D
load complete

hold:node0}[edit]
root# commit and-quit 
node0: 
commit complete
Exiting configuration mode

{hold:node0}
root> 

Primary機、Secondary機を再び再起動する

root> request system reboot 
Reboot the system ? [yes,no] (no) yes 

Shutdown NOW!
```

無事冗長構成が組めました。
（※primary、secondaryとなるまで起動後少し時間が掛かる）

**Primary機**

```
{primary:node0}
root> 
```
**Secondary機**

```
{hold:node1}
root> 
```

#おまけ

先輩曰くOSバージョンが古いものであれば、
今回の設定削除しなくてもHA構成組めるとか・・・。
その辺資料は見つけられなかったので参考になれば。