2018年10月26日金曜日

VyOSでconfig同期 (config-sync) を実装する

先日、VyOS2台を用いてVRRPによる冗長化を実装した。

★VyOSでVRRPを実装する記事はこちら↓

VyOSをVRRPを使って冗長化する
https://tech-mmmm.blogspot.com/2018/10/vyosvrrp.html

VRRPによって、冗長構成にすることはできたのだが、設定情報の同期を手動で行う必要があり、運用面で負荷が高いと感じていた。商用のネットワーク機器でActive-Standbyの冗長構成を組む場合は設定情報の同期 (以下config同期と呼ぶ) が実装できることが多いので、VyOSでも実装できると予想して調べてみた。

結果、以下サイトで公開されているパッケージをインストールすることで、config同期ができるようだ。

GitHub - Open source implementation of Vyatta and VyOS config-sync
https://github.com/keshavdv/vyattta-config-sync

上記サイトよりダウンロードした「vyatta-config-sync_0.0.1_all.deb」のパッケージを用いて、config同期を実装してみた。

環境

環境は以下の通り。同期元VyOSをVyOS#1、同期先VyOSをVyOS#2と呼ぶこととする。


手順

①VyOS config-syncをインストール

今回はActive側のVyOSからのみconfig同期を行えるようにしたいため、VyOS#1側のみにパッケージをインストールする。

sftp等を使って、/home/vyosに「vyatta-config-sync_0.0.1_all.deb」を配置する。

vyos@t3033vyos# sudo pwd
------------------------------
/home/vyos
------------------------------

vyos@t3033vyos# sudo ls -l
------------------------------
-rw-r--r-- 1 vyos users 5862 Aug 28 06:21 vyatta-config-sync_0.0.1_all.deb
------------------------------

dpkgコマンドでパッケージをインストールする。特に成功とも表示されないが、特にエラーがなければインストールできているようだ。

vyos@t3033vyos# sudo dpkg -i vyatta-config-sync_0.0.1_all.deb
------------------------------
Selecting previously deselected package vyatta-config-sync.
(Reading database ... 38730 files and directories currently installed.)
Unpacking vyatta-config-sync (from vyatta-config-sync_0.0.1_all.deb) ...
Setting up vyatta-config-sync (0.0.1) ...
------------------------------

②ssh公開鍵認証用のキーペアを作成

config同期をする際は、公開鍵認証にてVyOS#1からVyOS#2にsshログインができることが条件となる。

まず、VyOS#1にて、キーペア (秘密鍵と公開鍵) を作成する。

vyos@t3033vyos# ssh-keygen
------------------------------
Generating public/private rsa key pair.
Enter file in which to save the key (/home/vyos/.ssh/id_rsa): ←★空白でエンター
Enter passphrase (empty for no passphrase): ←★空白でエンター
Enter same passphrase again:          ←★空白でエンター
Your identification has been saved in /home/vyos/.ssh/id_rsa.
Your public key has been saved in /home/vyos/.ssh/id_rsa.pub.

~(以下略)~
------------------------------

作成されたキーペアは/home/vyos/.sshディレクトリ配下に作成される。後程、VyOS#2に公開鍵を登録するため、鍵の情報を確認しておこう。

vyos@t3033vyos# cat /home/vyos/.ssh/id_rsa.pub
------------------------------
ssh-rsa AAAAB3…(中略)…XXXXXX vyos@t3033vyos
------------------------------

③VyOS#2にVyOS#1のSSH公開鍵を登録

VyOS#2に「syncuser」というユーザーを同期用のユーザーとして作成する。このユーザーのログインには、先ほどVyOS#1で作成した公開鍵を認証情報として登録する。

vyos@t3032vyos# set system login user syncuser authentication public-keys vyos@t3033vyos key 'AAAAB3…(中略)…XXXXXX'
vyos@t3032vyos# commit

syncuserユーザーの設定情報を確認し、以下のようになっていればOK。

vyos@t3032vyos# show system login user syncuser
------------------------------
 authentication {
     encrypted-password !
     plaintext-password ""
     public-keys vyos@t3033vyos {
         key AAAAB3…(中略)…XXXXXX
         type ssh-rsa
     }
 }
------------------------------

念のため、VyOS#1からパスワード認証なしでログインできることを確認しておこう。

vyos@t3033vyos# ssh -p 22 syncuser@192.168.33.32
------------------------------
The authenticity of host '192.168.33.32 (192.168.33.32)' can't be established.
RSA key fingerprint is cb:bc:12:05:09:47:21:5f:cd:a1:aa:3a:37:ba:ba:41.
Are you sure you want to continue connecting (yes/no)? yes ←★yesと入力
Warning: Permanently added '192.168.33.32' (RSA) to the list of known hosts.
Welcome to VyOS
Linux t3032vyos 3.13.11-1-586-vyos #1 SMP Sat Nov 11 12:34:00 CET 2017 i686
Welcome to VyOS.
This system is open-source software. The exact distribution terms for
each module comprising the full system are described in the individual
files in /usr/share/doc/*/copyright.
Last login: Tue Aug 28 09:04:04 2018 from 192.168.33.33
syncuser@t3032vyos:~$   ←★パスワードを聞かれなければ成功!
------------------------------

④同期設定を追加する

config同期する対象を決定するルールを作成する。今回は「syncmap」という名前のルールを作り、firewallの設定のみを同期対象とする設定を投入した。

vyos@t3033vyos# set system config-sync sync-map syncmap rule 10 action include
vyos@t3033vyos# set system config-sync sync-map syncmap rule 10 location "firewall"

一度ここでcommitしておくが、この段階では同期はどこにもされない。

vyos@t3033vyos# commit
------------------------------
Syncing all nodes...
------------------------------

続けて、同期先のVyOSを登録する。VyOS#2に対しsyncuserユーザーで接続し、同期対象のconfigはsyncmapを参照する設定となる。

vyos@t3033vyos# set system config-sync remote-router 192.168.33.32 username syncuser
vyos@t3033vyos# set system config-sync remote-router 192.168.33.32 sync-map syncmap

commitは、次の手順で実施する。

⑤config同期

ここまで設定を投入したのちcommitすると、config同期が自動で行われる。
※注:なぜか自動で同期されなくなるようなので、その場合は手動同期する必要がある。手順は後述する。

vyos@t3033vyos# commit
------------------------------
Syncing all nodes...

remote-router:  192.168.33.32
          sync-map:     syncmap
         changeset: ##############
    delete firewall
    set firewall all-ping 'enable'
    set firewall broadcast-ping 'disable'
    set firewall config-trap 'disable'
    set firewall group network-group NET-11 network 192.168.11.0/24
    set firewall group network-group NET-33 network 192.168.33.0/24

~(以下略)~
------------------------------

同期状況を確認しておく。「success」と記載されていれば成功となる。

vyos@t3033vyos:~$ show config-sync status
------------------------------
remote-router:  192.168.33.32
          sync-map:     syncmap
         last sync:     success (at Tue Aug 28 09:16:21 JST 2018)
------------------------------

なお、config同期が行われると、VyOS#2にも以下メッセージが表示されるようだ。

------------------------------
Message from root@t3032vyos on (none) at 22:58 ...
Active configuration has been changed by user 'syncuser' on '?'.
Please make sure you do not have conflicting changes. You can also discard
the current changes by issuing 'exit discard'.
EOF
------------------------------

⑥手動でconfig同期する方法

契機は不明だが、しばらくするとcommitしても自動でconfig同期がされないようになってしまった。この場合は、手動でconfig同期を実施する必要がある。

commitせずに、手動でconfig同期をしたい場合は、以下コマンドで実施できる。

vyos@t3033vyos# run update config-sync 192.168.33.32
------------------------------
remote-router:  192.168.33.32
          sync-map:     syncmap
         changeset: ##############
    delete firewall
    set firewall all-ping 'enable'
    set firewall broadcast-ping 'disable'
    set firewall config-trap 'disable'

~(以下略)~
------------------------------

2018年10月22日月曜日

VRRP関連のMIB登録を行い、SNMP TrapをZabbix+SNMPTTで検知できるようにした話


以前ZabbixでSNMPTTを使ったSNMP Trap監視の方法を記載した。

★前回の記事はこちら↓

Zabbix 3.0でSNMPTTを使ったSNMP Trap監視を実装する
https://tech-mmmm.blogspot.com/2017/11/zabbix-30snmpttsnmp-trap.html

設定方法は同じ内容とはなるが、今回VRRPの切り替わり等をSNMP Trapで検知させる必要があったため、追加でVRRP用のMIB登録をしてみた。

MIBのダウンロード

VRRPを監視するためには、以下2つのMIB登録が必要となる。ダウロードできるサイトはいくつかあるようだが、今回は以下サイトよりダウンロードした。

KEEPALIVED-MIB
http://www.circitor.fr/Mibs/Html/K/KEEPALIVED-MIB.php

VRRP-MIB
http://www.circitor.fr/Mibs/Html/V/VRRP-MIB.php

MIBを変換し登録する

1. MIBを配置

ダウンロードしたMIBをZabbixサーバーの任意の作業用ディレクトリに配置する。今回は/usr/share/snmp/vendersに配置した。作業用ディレクトリには、SNMPTT用ファイルの出力用に、snmpttconfディレクトリを作っておく。

# cd /usr/share/snmp/venders
# mkdir snmpttconf
# ls -l
------------------------------
-rw-r--r-- 1 root root 57305  8月 27 11:20 KEEPALIVED-MIB.mib
-rw-r--r-- 1 root root 29114  8月 27 11:20 VRRP-MIB.mib
drwxr-xr-x 2 root root    86  8月 27 11:22 snmpttconf
------------------------------

2. MIBを変換

snmpttconvertmibコマンドを利用して、MIBをSNMPTT用confファイルに変換する。

# for i in `ls *.mib`; do snmpttconvertmib --in=$i --out=snmpttconf/$i.conf; done
------------------------------
*****  Processing MIB file *****

snmptranslate version: NET-SNMP version: 5.7.2
severity: Normal

File to load is:        ./KEEPALIVED-MIB.mib
File to APPEND TO:      snmpttconf/KEEPALIVED-MIB.mib.conf

MIBS environment var:   ./KEEPALIVED-MIB.mib
mib name: KEEPALIVED-MIB

~(中略)~

Done

Total translations:        2
Successful translations:   2
Failed translations:       0
------------------------------

出力されたSNMPTT用confファイルを確認する。

[root@t3024ce73 venders]# cd snmpttconf
[root@t3024ce73 snmpttconf]# ls -l
------------------------------
-rw-r--r-- 1 root root 2017  8月 27 11:20 KEEPALIVED-MIB.mib.conf
-rw-r--r-- 1 root root  836  8月 27 11:20 VRRP-MIB.mib.conf
------------------------------

出力されたファイルをcatコマンドで1つに結合する。

[root@t3024ce73 snmpttconf]# cat *.conf > snmptt.conf.VRRP
[root@t3024ce73 snmpttconf]# ls -l
------------------------------
-rw-r--r-- 1 root root 2017  8月 27 11:20 KEEPALIVED-MIB.mib.conf
-rw-r--r-- 1 root root  836  8月 27 11:20 VRRP-MIB.mib.conf
-rw-r--r-- 1 root root 2853  8月 27 11:22 snmptt.conf.VRRP ←★結合されたファイル
------------------------------

3. SNMPTT用confファイルをZabbix用に加工

結合したファイルに、Zabbix検知用の文字列「ZBXTRAP」を追加する。

[root@t3024ce73 snmpttconf]# sed -i 's/FORMAT/FORMAT ZBXTRAP $aA $N/g' snmptt.conf.VRRP

4. SNMPTT用confファイルをSNMPTTに登録

結合したファイルをSNMPTTのディレクトリにコピーする。

[root@t3024ce73 snmpttconf]# cp snmptt.conf.VRRP /etc/snmp/
[root@t3024ce73 snmpttconf]# ls -l /etc/snmp/
------------------------------
-rw-r--r-- 1 root root    63 11月 20  2017 snmp.conf
-rw------- 1 root root 18861  5月 12  2016 snmpd.conf
-rw------- 1 root root   351 11月 18  2017 snmptrapd.conf
-rw-r--r-- 1 root root    63 11月 20  2017 snmptt.conf
-rw-r--r-- 1 root root   565 11月 20  2017 snmptt.conf.NAS
-rw-r--r-- 1 root root 60041 11月 23  2017 snmptt.conf.VMWARE
-rw-r--r-- 1 root root  2943  8月 27 11:23 snmptt.conf.VRRP  ←★コピーされたファイル
-rw-r--r-- 1 root root 26457 11月 24  2017 snmptt.ini
------------------------------

SNMPTTの設定ファイルsnmptt.iniに、先ほど作成したconfファイルを読み込むよう追記する。

[root@t3024ce73 snmpttconf]# vi /etc/snmp/snmptt.ini
------------------------------
[TrapFiles]
# A list of snmptt.conf files (this is NOT the snmptrapd.conf file).  The COMPLEETE path
# and filename.  Ex: '/etc/snmp/snmptt.conf'
snmptt_conf_files = <<END
/etc/snmp/snmptt.conf.VMWARE
/etc/snmp/snmptt.conf.NAS
/etc/snmp/snmptt.conf.VRRP     ←★追加
/etc/snmp/snmptt.conf
END
------------------------------

5. SNMPTTをリスタート

設定反映のため、SNMPTTをリスタートする。

# systemctl restart snmptt

以上で登録は完了となる。

VRRPのSNMP Trap確認

実際にVRRPのフェイルオーバーを発生させた際のZabbixでの検知結果を以下に記載する。「General event」となっていたものが、きちんとVRRPのメッセージとして表示されていることがわかる。

設定前

・Trap1 : KEEPALIVED-MIBのTrap
------------------------------
SNMP Trap log (t3033vyos:snmptrap[]): 22:12:36 2018/08/26 .1.3.6.1.4.1.9586.100.5.2.9.0.2 Normal "General event" 192.168.33.33 - vyatta-eth0-10 2 1
------------------------------
・Trap2 : VRRP-MIBのTrap
------------------------------
SNMP Trap log (t3033vyos:snmptrap[]): 22:12:36 2018/08/26 .1.3.6.1.2.1.68.0.1 Normal "General event" 192.168.33.33 - 0.0.0.0
------------------------------

設定後

・Trap1 : KEEPALIVED-MIBのTrap
------------------------------
SNMP Trap log (t3033vyos:snmptrap[]): 11:34:18 2018/08/27 .1.3.6.1.4.1.9586.100.5.2.9.0.2 Normal "Status Events" 192.168.33.33 - vrrpInstanceStateChange This trap signifies that the state of a vrrp instance changed. vyatta-eth0-10 2 1
------------------------------
・Trap2 : VRRP-MIBのTrap
------------------------------
SNMP Trap log (t3033vyos:snmptrap[]): 11:34:18 2018/08/27 .1.3.6.1.2.1.68.0.1 Normal "Status Events" 192.168.33.33 - vrrpTrapNewMaster The newMaster trap indicates that the sending agent 0.0.0.0
------------------------------

2018年10月13日土曜日

VyOSをVRRPを使って冗長化する

ネットワーク機器の冗長化方式として、VRRP (Virtual Router Redundancy Protocol) というものがある。多くのネットワーク機器の冗長化方式で採用されている標準的な方式となっており、VyOSでも利用可能である。

この度、自宅検証環境にESXi用のサーバーが1台増設することができ、自宅のネットワークのゲートウェイとして利用しているVyOSの冗長化が必要となったため、VRRPを実装してみた。さらに、簡単な障害時の切り替わり動作の確認を行ってみた。

環境

環境は以下の通りとなる。利用しているVyOSのバージョンは1.1.8となる。


各VyOSのインターフェース設定は以下の通り。

・VyOS#1
vyos@t3033vyos:~$ show interfaces
------------------------------
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface        IP Address                        S/L  Description
---------        ----------                        ---  -----------
eth0             192.168.33.33/24                  u/u
eth1             192.168.11.33/24                  u/u
lo               127.0.0.1/8                       u/u
                 ::1/128
------------------------------

・VyOS#2
vyos@t3032vyos:~$ show interfaces
------------------------------
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface        IP Address                        S/L  Description
---------        ----------                        ---  -----------
eth0             192.168.33.32/24                  u/u
eth1             192.168.11.32/24                  u/u
lo               127.0.0.1/8                       u/u
                 ::1/128
------------------------------

VRRPの設定

以下設定を投入する。VyOS#1とVyOS#2の設定の違いは、Priorityの箇所のみである。Priorityの値が高いVyOSが通常Masterとして動作する (今回であればVyOS#1)。

・VyOS#1
------------------------------
# eth0側の設定
# アドバタイズの間隔を1秒間毎に設定
set interfaces ethernet eth0 vrrp vrrp-group 10 advertise-interval 1
# VIPを192.168.33.31に設定
set interfaces ethernet eth0 vrrp vrrp-group 10 virtual-address 192.168.33.31/24
# 自動フェイルバックをONにする
set interfaces ethernet eth0 vrrp vrrp-group 10 preempt true
# eth0とeth1を連動して切り替えるための設定
set interfaces ethernet eth0 vrrp vrrp-group 10 sync-group syncgrp01
# Masterになる優先度を150に設定 (大きいほど優先される)
set interfaces ethernet eth0 vrrp vrrp-group 10 priority 150
# eth1側の設定
# アドバタイズの間隔を1秒間毎に設定
set interfaces ethernet eth1 vrrp vrrp-group 10 advertise-interval 1
# VIPを192.168.11.31に設定
set interfaces ethernet eth1 vrrp vrrp-group 10 virtual-address 192.168.11.31/24
# 自動フェイルバックをONにする
set interfaces ethernet eth1 vrrp vrrp-group 10 preempt true
# eth0とeth1を連動して切り替えるための設定
set interfaces ethernet eth1 vrrp vrrp-group 10 sync-group syncgrp01
# Masterになる優先度を100に設定 (大きいほど優先される)
set interfaces ethernet eth1 vrrp vrrp-group 10 priority 150
------------------------------

・VyOS#2
------------------------------
# eth0側の設定
# アドバタイズの間隔を1秒間毎に設定
set interfaces ethernet eth0 vrrp vrrp-group 10 advertise-interval 1
# VIPを192.168.33.31に設定
set interfaces ethernet eth0 vrrp vrrp-group 10 virtual-address 192.168.33.31/24
# 自動フェイルバックをONにする
set interfaces ethernet eth0 vrrp vrrp-group 10 preempt true
# eth0とeth1を連動して切り替えるための設定
set interfaces ethernet eth0 vrrp vrrp-group 10 sync-group syncgrp01
# Masterになる優先度を100に設定 (大きいほど優先される)
set interfaces ethernet eth0 vrrp vrrp-group 10 priority 100
# eth1側の設定
# アドバタイズの間隔を1秒間毎に設定
set interfaces ethernet eth1 vrrp vrrp-group 10 advertise-interval 1
# VIPを192.168.11.31に設定
set interfaces ethernet eth1 vrrp vrrp-group 10 virtual-address 192.168.11.31/24
# 自動フェイルバックをONにする
set interfaces ethernet eth1 vrrp vrrp-group 10 preempt true
# eth0とeth1を連動して切り替えるための設定
set interfaces ethernet eth1 vrrp vrrp-group 10 sync-group syncgrp01
# Masterになる優先度を100に設定 (大きいほど優先される)
set interfaces ethernet eth1 vrrp vrrp-group 10 priority 100
------------------------------

設定投入後は、VyOS#1、VyOS#2の順にcommit、saveしておこう。

VRRPの状態確認

設定後、VRRPの状態を確認してみると、VyOS#1側がMASTER、VyOS#2がBACKUPとして動作していることがわかる。

・VyOS#1
vyos@t3033vyos:~$ show vrrp
------------------------------
                                 RFC        Addr   Last        Sync
Interface         Group  State   Compliant  Owner  Transition  Group
---------         -----  -----   ---------  -----  ----------  -----
eth0              10     MASTER  no         no     22m11s      syncgrp01
eth1              10     MASTER  no         no     22m10s      syncgrp01
------------------------------

vyos@t3033vyos:~$ show interfaces
------------------------------
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface        IP Address                        S/L  Description
---------        ----------                        ---  -----------
eth0             192.168.33.33/24                  u/u
                 192.168.33.31/24
eth1             192.168.11.33/24                  u/u
                 192.168.11.31/24
lo               127.0.0.1/8                       u/u
                 ::1/128
------------------------------

・VyOS#2
vyos@t3032vyos:~$ show vrrp
------------------------------
                                 RFC        Addr   Last        Sync
Interface         Group  State   Compliant  Owner  Transition  Group
---------         -----  -----   ---------  -----  ----------  -----
eth0              10     BACKUP  no         no     22m3s       syncgrp01
eth1              10     BACKUP  no         no     22m3s       syncgrp01
------------------------------

vyos@t3032vyos:~$ show interfaces
------------------------------
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface        IP Address                        S/L  Description
---------        ----------                        ---  -----------
eth0             192.168.33.32/24                  u/u
eth1             192.168.11.32/24                  u/u
lo               127.0.0.1/8                       u/u
                 ::1/128
------------------------------

VRRPの切り替わり動作確認 (筐体障害編)

VRRPの冗長性確認を行うために、実際にMaster側のVyOS#1を停止し、切り替わり動作の確認を行う。


まずは、192.168.11.82の端末のARPテーブルを確認してみると、VIPはVyOS#1側のMACアドレスとなっていることがわかる。

C:\Users\tadmin>arp -a
------------------------------
インターフェイス: 192.168.11.82 --- 0x10
  インターネット アドレス 物理アドレス           種類
  192.168.11.31         00-0c-29-cf-37-09     動的  ←★VIP
  192.168.11.32         00-0c-29-77-3c-a4     動的  ←★VyOS#2のIP
  192.168.11.33         00-0c-29-cf-37-09     動的  ←★VyOS#1のIP
------------------------------

通信断時間の確認のために、192.168.11.82の端末からPingを飛ばしつつ、ESXiからVyOS#1をシャットダウンした。

Pingの結果は以下の通り、1回の欠けが発生したものの、通信は正常に回復した。

C:\Users\tadmin>ping 192.168.33.1 -t
------------------------------
192.168.33.1 に ping を送信しています 32 バイトのデータ:
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
要求がタイムアウトしました。
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
------------------------------

再度、192.168.11.82の端末のARPテーブルを確認すると、VIPはVyOS#2側のMACアドレスとなっていることがわかる。

C:\Users\tadmin>arp -a
------------------------------
インターフェイス: 192.168.11.82 --- 0x10
  インターネット アドレス 物理アドレス           種類
  192.168.11.31         00-0c-29-77-3c-a4     動的  ←★VIP
  192.168.11.32         00-0c-29-77-3c-a4     動的  ←★VyOS#2のIP
  192.168.11.33         00-0c-29-cf-37-09     動的  ←★VyOS#1のIP
------------------------------

VyOS#2のVRRPのステータスもMASTERになっている。

vyos@t3032vyos:~$ show vrrp
------------------------------
                                 RFC        Addr   Last        Sync
Interface         Group  State   Compliant  Owner  Transition  Group
---------         -----  -----   ---------  -----  ----------  -----
eth0              10     MASTER  no         no     4s          syncgrp01
eth1              10     MASTER  no         no     3s          syncgrp01
------------------------------

なお、VRRPの切り替わり時間だが、デフォルトで1秒間隔のアドバタイズをMasterルーターが送信し続け、Backupルーターはアドバタイズを受信することでMasterルーターが正常に動作していることを検知する。Backupルーターでアドバタイズが受信できなくなると、3秒間 (アドバタイズ間隔の3倍の時間) 待機し、さらに受信ができない場合は、BackupルーターはMasterルーターに昇格するという動作をする。

VRRPの動作確認 (NIC障害編)

先ほどはVyOS#1を停止させたが、今度はVyOS#1のeth0をLinkDownさせた場合の切り替わり動作を確認する。


192.168.11.82の端末からPingを飛ばしながら、ESXiよりVyOS#1のeth0の仮想NICを切断してみる。

今度は2回の欠けが発生したが、前述したとおり、最大3秒間の切り替わり時間があるので、想定通りの結果と言えるだろう。

C:\Users\tadmin>ping 192.168.33.1 -t
------------------------------
192.168.33.1 に ping を送信しています 32 バイトのデータ:
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
要求がタイムアウトしました。
要求がタイムアウトしました。
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
------------------------------

なお、VyOSのステータスは以下の通りとなる。NIC障害の場合、VRRPのStateが「FAULT」になる。

・VyOS#1
vyos@t3033vyos:~$ show vrrp
------------------------------
                                 RFC        Addr   Last        Sync
Interface         Group  State   Compliant  Owner  Transition  Group
---------         -----  -----   ---------  -----  ----------  -----
eth0              10     FAULT   no         no     1m29s       syncgrp01
eth1              10     FAULT   no         no     1m29s       syncgrp01
------------------------------

・VyOS#2
vyos@t3032vyos:~$ show vrrp
------------------------------
                                 RFC        Addr   Last        Sync
Interface         Group  State   Compliant  Owner  Transition  Group
---------         -----  -----   ---------  -----  ----------  -----
eth0              10     MASTER  no         no     3m12s       syncgrp01
eth1              10     MASTER  no         no     3m15s       syncgrp01
------------------------------

まとめ

VyOSでVRRPの設定を行い障害時の動作確認をしてみたが、非常に簡単な設定をするだけで、VyOSを冗長構成にすることができた。仮想環境でVyOSを動作させる場合、vSphere HAの機能ではどうしても数分間の通信断が発生するが、VRRPであれば数秒の通信断に抑えることができる。

2018年10月9日火曜日

Windows版Zabbix Agentのインストール手順

MIRACLE ZBXでは、Windows版のZabbix Agentがexe形式のインストーラ形式となっているが、Zabbixはインストーラは用意されておらず、ただのzip形式の圧縮ファイルとなっているようだ。

今までMIRACLE ZBXを主に使っていたので気がつかなかったが、今回Zabbixを使う機会があったので、Windows版のZabbix Agentインストール手順を簡単にまとめておく。

ダウンロード先

Zabbix Agentのダウンロード先は以下となる。

Download and install Zabbix
https://www.zabbix.com/jp/download_agents

今回は、Zabbix 3.0 LTSの中にある最新バージョン「3.0.10」を選択した。


インストール手順

1. ダウンロードファイルを解凍・配置

ダウンロードしたファイルを解凍すると、以下ファイルが含まれていることがわかる。今回はWindows Server 2019にZabbix Agentをインストールするので、64bit OS用となる★印のファイルを「c:\zabbix」にコピーする。
※32bit OSの場合は、win32フォルダのexeファイルを配置すること

------------------------------
<解凍フォルダ>
├─bin
│  ├─win32
│  │  │  zabbix_agentd.exe
│  │  │  zabbix_get.exe
│  │  │  zabbix_sender.exe
│  │  │
│  │  └─dev
│  │          zabbix_sender.dll
│  │          zabbix_sender.lib
│  │
│  └─win64
│      │  zabbix_agentd.exe  ←★
│      │  zabbix_get.exe    ←★
│      │  zabbix_sender.exe  ←★
│      │
│      └─dev
│              zabbix_sender.dll
│              zabbix_sender.lib

└─conf
        zabbix_agentd.win.conf ←★
------------------------------

2. confファイルを修正

配置したzabbix_agentd.win.confに対して、以下4箇所の修正を行う。

------------------------------
LogFile=c:\zabbix\zabbix_agentd.log ←★ログ出力先を修正
Server=192.168.33.24, 192.168.11.24 ←★Zabbix ServerのIPアドレスを指定
ServerActive=192.168.33.24, 192.168.11.24 ←★Zabbix ServerのIPアドレスを指定
Hostname=t1081w219 ←★Zabbix Server側で監視設定する名前と同一名を設定
------------------------------

3. サービス登録

管理者権限にてPowerShellを開き、以下コマンドを実行する。「-c」がconfファイルの指定、「-i」がインストールを意味する。

PS C:\> c:\zabbix\zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.win.conf -i
------------------------------
zabbix_agentd.exe [5576]: service [Zabbix Agent] installed successfully
zabbix_agentd.exe [5576]: event source [Zabbix Agent] installed successfully
------------------------------

インストール後、サービスが表示されることを確認しておく。

PS C:\> Get-Service -Name Zabbix*
------------------------------
Status   Name               DisplayName
------   ----               -----------
Stopped  Zabbix Agent       Zabbix Agent
------------------------------

4. サービス起動

「-s」オプションをつけて、Zabbix Agentサービスを起動させることができる。

PS C:\Windows\system32> c:\zabbix\zabbix_agentd.exe -s
------------------------------
zabbix_agentd.exe [5792]: service [Zabbix Agent] started successfully
------------------------------

PS C:\> Get-Service -Name Zabbix*
------------------------------
Status   Name               DisplayName
------   ----               -----------
Running  Zabbix Agent       Zabbix Agent
------------------------------

5. Windowsファイアウォール設定

Windowsファイアウォールが有効な環境の場合、Zabbix ServerからZabbix Agentに対して、10050番ポートによる通信が許可されていないため、ファイアウォールの「受信の規則」を追加する必要がある。

もし設定がうまくできていない場合、「Get value from agent failed: cannot connect to [[<AgentのIPアドレス>]:10050]: [4] Interrupted system call」というエラーがZabbixの画面で表示されるので注意。


今回はポートによる通信許可ではなく、Zabbix Agentの実行ファイルによる通信をすべて許可する設定としてみた。

まず、プログラムを選択する。もしポートで選択したい場合は、「ポート」を選べばよい。


次に、「このプログラムのパス」を選択し、先ほどc:\zabbixに配置した「zabbix_agentd.exe」を選択する。


次に「接続を許可する」を選択し、その他の設定はすべてデフォルトにしておけばよい。


以上でエージェントのインストールは完了となる。

参考

Zabbix Documentation 3.0 - 3 Agent
https://www.zabbix.com/documentation/3.0/manual/concepts/agent

2018年10月6日土曜日

Windows Server 2019がリリースされたのでインストールしてみた

2018年10月2日に、Windows Serverの最新バージョンとなるWindows Server 2019がリリースされた。いままで2008→2012→2016と続いてきたので、次は2020になるかと思いきや、1年早い2019という名前でリリースがされた。

今までと同様に評価版も用意されているので、取り急ぎインストールをしてみることにした。

評価版ダウンロード先

ダウンロードは以下サイトからできる。ここから日本語版のISOイメージをダウンロードする。ダウンロードサイズは4.4GBとなっており、Windows Server 2016 (6.7GB) より小さくなっている。

Evaluation Center
https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2019

インストール手順

先に結論を言ってしまうと、インストール手順はWindows Server 2016と変化はない。一応画面キャプチャは取得したので、手順を記載していこう。

1. 言語を選択

デフォルトのままで問題ない。


2. 今すぐインストール

そのまま次へ。


3. エディションと種類を選択

「Windows Server 2019 Standard (デスクトップエクスペリエンス) 」を選択する。


4. ライセンス条項に同意

「同意します」にチェックを入れ、次へ。


5. インストール種類の選択

「カスタム」を選択する。初期インストールの場合、「アップグレード」を選択してしまうと、最初からやり直しになってしまうので注意。


6. インストール場所を選択

デフォルト設定のまま次へ。


7. インストール開始

インストールが開始されているので少し待つ。SSDのようにディスクI/Oが高ければ、10分あれば完了する。


8. Administratorのパスワード設定

インストールが完了すると自動で再起動される。最初にAdministratorのパスワードを設定する必要がある。


9. インストール完了

インストールが完了し、ログイン画面が表示される。見ての通り、Windows Server 2016と同一画面で区別が付かない。


10. ログイン

ログインしてみる。サーバーマネージャーが自動で起動してくるのも変わらずだが、「Windows Admin Centerでのサーバー管理を試してみる」というメッセージが表示されるようだ (Windows Admin Centerについては未調査)。


左下のWindowsアイコンを右クリック→「システム」にてOSの情報を確認しようとすると、以下画面の表示に変更されている。


以前の「システム」画面は「コントロールパネル」→「システム」から表示可能。


インストール直後のディスク使用状況を確認すると、約10GBほどが利用されていることがわかった。


以上でWindows Server 2019のインストールは完了した。ためしにWindows Server 2008のActive Directoryに参加させてみたが、正常にドメイン参加することができるようだ。

2018年10月5日金曜日

Ansible AWXのジョブテンプレート作成時に、認証情報が「Invalid search term entered. GET returned: 400 無効な credential_type ID: NaN」でエラーになって選択できない


先日Ansible AWXをインストールしてみたのだが、問題が発生した。

★以前の記事はこちら↓

Ansible AWXをインストールしてみた
https://tech-mmmm.blogspot.com/2018/09/ansible-awx.html

Ansible AWXでは、ジョブテンプレート作成の際に認証情報を選択する項目があるのだが、本項目を選ぶと「Invalid search term entered. GET returned: 400 無効な credential_type ID: NaN」のエラーが発生し、選択画面が表示されない事象が発生する。なお、AWXのバージョンは、1.0.7.2となる。


本記事では本事象の発生原因と、回避方法について記載する。

原因

原因がわからず苦労していたのだが、以下に同じ事象の記載を見つけることができた。

"Invalid search term entered. GET returned: 400 無効な credential_type ID: NaN" when click CREDENTIAL at Templates (LANG Japanese only) #2231
https://github.com/ansible/awx/issues/2231

ブラウザの言語設定が日本語となっている場合発生するバグのようだ。英語環境では発生しないらしい。

回避方法

日本語環境以外では発生しないので、ブラウザの言語設定を英語に変更することで対応すればよい。とはいえ言語設定をいちいち変更するのは面倒だし、変更することで他サイトの閲覧時に影響も出そうだ。そこで、言語設定を変更できるChromeのアドオンで対応することにした。

アドオンは一番利用ユーザーが多い「Quick Language Switcher」にした。


本アドオンを導入すると、アドレスバーの右側から簡単に言語を変更できるようになる。今回は「English」に変更する。


変更すると、以下の通り認証情報の選択画面が表示されるようになった。


2018年10月2日火曜日

Zabbix 4.0.0の正式版がリリースされたのでRC版からアップデートしてみた

先日、Zabbix 4.0.0rc1をインストールしてみた。

★以前の記事はこちら↓

Zabbix 4.0.0rc1 (リリース候補版) をインストールしてみた
https://tech-mmmm.blogspot.com/2018/09/zabbix-400rc1.html

2018年10月1日に、とうとう正式版のZabbix 4.0.0がリリースされたようなので、RC版から正式版にアップデートすることにした。

アップデート手順

なぜかyum updateを実行してもインストールすることができなかった(Zabbix 4.0.0rc3にはアップデートできた)。そこで、wgetで必要なパッケージファイルを入手し、rpmコマンドでインストールすることにした。

まずは、wgetでパッケージを入手する。

# mkdir /root/zabbix4
# cd /root/zabbix4
# wget https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0-2.el7.x86_64.rpm
# wget https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-get-4.0.0-2.el7.x86_64.rpm
# wget https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-java-gateway-4.0.0-2.el7.x86_64.rpm
# wget https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-sender-4.0.0-2.el7.x86_64.rpm
# wget https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-server-mysql-4.0.0-2.el7.x86_64.rpm
# wget https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-web-4.0.0-2.el7.noarch.rpm
# wget https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-web-japanese-4.0.0-2.el7.noarch.rpm
# wget https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-web-mysql-4.0.0-2.el7.noarch.rpm
# ls
------------------------------
zabbix-agent-4.0.0-2.el7.x86_64.rpm
zabbix-get-4.0.0-2.el7.x86_64.rpm
zabbix-java-gateway-4.0.0-2.el7.x86_64.rpm
zabbix-sender-4.0.0-2.el7.x86_64.rpm
zabbix-server-mysql-4.0.0-2.el7.x86_64.rpm
zabbix-web-4.0.0-2.el7.noarch.rpm
zabbix-web-japanese-4.0.0-2.el7.noarch.rpm
zabbix-web-mysql-4.0.0-2.el7.noarch.rpm
------------------------------

正常にファイルを入手できたので、rpmコマンドでアップデートする。

# rpm -Uvh *
------------------------------
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:zabbix-web-mysql-4.0.0-2.el7     ################################# [  8%]
   2:zabbix-web-4.0.0-2.el7           ################################# [ 15%]
   3:zabbix-web-japanese-4.0.0-2.el7  ################################# [ 23%]
   4:zabbix-server-mysql-4.0.0-2.el7  ################################# [ 31%]
   5:zabbix-sender-4.0.0-2.el7        ################################# [ 38%]
   6:zabbix-java-gateway-4.0.0-2.el7  ################################# [ 46%]
   7:zabbix-get-4.0.0-2.el7           ################################# [ 54%]
   8:zabbix-agent-4.0.0-2.el7         ################################# [ 62%]
整理中 / 削除中...
   9:zabbix-web-japanese-4.0.0-1.1rc3.################################# [ 69%]
  10:zabbix-web-mysql-4.0.0-1.1rc3.el7################################# [ 77%]
  11:zabbix-web-4.0.0-1.1rc3.el7      ################################# [ 85%]
  12:zabbix-server-mysql-4.0.0-1.1rc3.################################# [ 92%]
  13:zabbix-agent-4.0.0-1.1rc3.el7    ################################# [100%]
------------------------------

以上で完了となる。

Zabbix画面から確認してみる

Zabbixの画面からも「rc」の表記がなくなっており、正常にアップデートできたようだ。


人気の投稿