2018年11月6日火曜日

vCenter Server Appliance 6.7にupdate1を適用する手順

vCenter Server 6.7のupdate1が2018/10/16にリリースされたようだ。

VMware vCenter Server 6.7 Update 1 リリース ノート
https://docs.vmware.com/jp/VMware-vSphere/6.7/rn/vsphere-vcenter-server-671-release-notes.html

上記update1をvCSA6.7に適用してみたので、手順を簡単に記載する。

事前確認

バージョンアップの前に、必ず「VMware Product Interoperability Matrices」を使って、アップデート対象のvCenter Serverが管理できるESXiのバージョンを確認しておこう

VMware Product Interoperability Matrices - チェック結果
https://www.vmware.com/resources/compatibility/sim/interop_matrix.php#interop&2=2862,2736&1=

チェック結果は以下の通りとなり、ESXi 6.0以降であればvCSA 6.7 update1で問題なく管理できるようだ。

------------------------------
VMware vCenter Server 6.7 U1 6.7.0
VMware vSphere Hypervisor (ESXi)
6.7 U1 Y Y
6.7.0 Y Y
6.5 U2 Y Y
6.5 U1 Y Y
6.5.0 Y Y
6.0 U3 Y Y
6.0.0 U2 Y Y
6.0.0 U1 Y Y
6.0.0 Y Y
------------------------------

手順

1. ISOイメージをダウンロード

以下サイトからvCSAのupdate1のISOイメージをダウンロードする。

My VMware  - 製品パッチ
https://my.vmware.com/group/vmware/patch#search

製品を「VC」、バージョンを「6.7」で検索すると、「VC-6.7.0-update01-Appliance-Patch」が表示されるので、「ダウンロード」ボタンを押してダウンロードする。1.8GB程度の「VMware-vCenter-Server-Appliance-6.7.0.20000-10244745-patch-FP.iso」というファイルがダウンロードされる。



2. vCSAにupdate1のISOをマウント

ダウンロードしたISOイメージをvCSAの仮想CD/DVDドライブにマウントする。この辺りは一般的なvSphere環境の手順で実施すればよいので、詳細な手順は割愛する。

3. SSHでvCSAにログイン

vCSAに対してSSHを使ってrootログインする。なお、インストール時にSSHを有効にしていない場合は、https://<vCSAのIPアドレス>:5480/にアクセスし、「アクセス設定」を変更しておこう。
※SSHを使わなくても直接コンソールを使ってアップデート作業はできると思うが、操作性の観点から今回はSSHで作業する。


4. マウント&ライセンス条項に同意

以下コマンドにて、ISOイメージをマウントし、ライセンス条項に同意する。ライセンス条項は非常に長いのだが、最後に「yes」を入力するところまでスクロールさせる必要がある。面倒だが頑張ろう。

Command> software-packages stage --iso
------------------------------
 [2018-10-23T03:57:10.296] : ISO mounted successfully

VMWARE END USER LICENSE AGREEMENT

PLEASE NOTE THAT THE TERMS OF THIS END USER LICENSE AGREEMENT SHALL GOVERN YOUR
USE OF THE SOFTWARE, REGARDLESS OF ANY TERMS THAT MAY APPEAR DURING THE
INSTALLATION OF THE SOFTWARE.

~(中略)~

12.11  Contact Information.  Please direct legal notices or other
correspondence to VMware, Inc., 3401 Hillview Avenue, Palo Alto, California
94304, United States of America, Attention: Legal Department.
Do you accept the terms and conditions?  [yes/no] yes ←★「yes」を入力
 [2018-10-23T03:58:58.296] : Evaluating packages to stage...
 [2018-10-23T03:58:58.296] : Verifying staging area
 [2018-10-23T03:58:58.296] : ISO unmounted successfully
 [2018-10-23T03:58:58.296] : Staging process completed successfully
------------------------------

5. インストール前の内容確認

インストール前に、インストール内容を確認することができる。nameが「VC-6.7.0U1-Appliance-FP」になっていれば問題ない。

Command> software-packages list --staged
------------------------------
 [2018-10-23T03:59:33.296] :
        productname: VMware vCenter Server Appliance
        name: VC-6.7.0U1-Appliance-FP
        leaf_services: ['vmware-pod']
        rebootrequired: True
        tags: []
        thirdPartyInstallation: False
        eulaAcceptTime: 2018-10-23 03:58:49 UTC
        summary: Update for VMware vCenter Server Appliance 6.7.0
        releasedate: October 16, 2018
        buildnumber: 10244745
        version: 6.7.0.20000
        size in MB: 1829
        updateversion: True
        TPP_ISO: False
        vendor: VMware, Inc.
        severity: Critical
        category: Bugfix
        kb: https://docs.vmware.com/en/VMware-vSphere/6.7/rn/vsphere-vcenter-server-671-release-notes.html#full_patch
        version_supported: ['6.7.0.10000', '6.7.0.11000', '6.7.0.12000']
------------------------------

6. インストール

以下コマンドでインストールを開始する。なお、「Running pre-install script」の処理が始まるころからWeb Client接続不可となるので注意すること。

Command> software-packages install --staged
------------------------------
 [2018-10-23T04:00:08.296] : Validating software update payload
 [2018-10-23T04:00:08.296] : Validation successful
 [2018-10-23 04:00:08,914] : Copying software packages  [2018-10-23T04:00:08.296] : ISO mounted successfully
133/133
 [2018-10-23T04:00:54.296] : ISO unmounted successfully
 [2018-10-23 04:00:54,103] : Running test transaction ....
 [2018-10-23 04:00:56,135] : Running pre-install script.....
 [2018-10-23 04:03:53,470] : Upgrading software packages ....
 [2018-10-23T04:05:51.296] : Setting appliance version to 6.7.0.20000 build 10244745
 [2018-10-23 04:05:51,899] : Running pre-patch script.....
 [2018-10-23 04:05:52,905] : Running post-patch script.....
 [2018-10-23T04:06:00.296] : Packages upgraded successfully, Reboot is required to complete the installation.
------------------------------

7. 再起動

最後に再起動を行う。-rオプションの後のメッセージは適当な再起動理由を記載しておけばよい。

Command> shutdown reboot -r "Install update1"

8. インストール後のビルド番号を確認

正常にインストールされたことを確認するため、https://<vCSAのIPアドレス>:5480/にアクセスし、ビルド番号を確認してみよう。

【バージョンアップ前】


【バージョンアップ後】


以上のように、正常にアップデートが完了していることを確認できた。

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

人気の投稿