Bginfo

Windows Server 2012 R2 に Bginfo を導入した際の備忘録です。

 

 【Bginfo について】
 デスクトップの背景にコンピュータの構成情報(ホスト名など)を表示してくれる、Microsoft 製のアプリケーションです。

 デスクトップにホスト名などが表示されるようになるので、リモートデスクトップなどからでもどのコンピュータにアクセスしているかが把握しやすくなります。

 詳細は MS の technet  (https://technet.microsoft.com/ja-jp/sysinternals/bginfo.aspx )を参照ください。

 

↓ Bginfo でデスクトップ背景にホスト情報を表示したところ。

 


作業の流れとしては、

  1. Bginfo を MS のサイトからダウンロード。
  2. デスクトップの背景にするビットマップのレイアウトを作成。
  3. どのユーザでログインした場合でも、このビットマップがデスクトップの背景に表示されるように、共通のスタートアップパスに Bginfo の実行バッチファイルを登録。

となります。

 


 

Bginfo のダウンロード

下記 MS technet のサイトから、Bginfo をダウンロード。
https://technet.microsoft.com/ja-jp/sysinternals/bginfo.aspx

ページ右上のダウンロードアイコンをクリックで、 bginfo.zip がダウンロードできます。

 

ダウンロードアイコンはコレ。

 

ダウンロードが終わったら、.zip を適当なディレクトリに解凍します。
今回は、「 C:\01.BgInfo\ 」 に保管。

 


 

デスクトップの背景にするビットマップを作成

「C:\01.BgInfo\Bginfo.exe」 をダブルクリックして、背景にするビットマップを作成します。

 

ライセンスに同意。

 

 

背景にするビットマップのレイアウト編集画面が起動します。
が!

デフォルトでは、10秒経つとこの画面が消えてしまいます(アプリケーションが終了する)。
画面右上の 「Time remaining N」(N はカウントダウンの数字) をクリックすると、カウントダウンが止まります。

 

デスクトップの背景に表示する項目を編集していきます。
下記のがデフォルトの表示項目(レイアウト)なので、

 

今回はホスト名を先頭に表示して、フォントも大きく。。。
(編集画面内はテキストなので、項目をカット&ペーストで移動したり、改行(エンターキー)とかも入れられます。 )

 

こんな具合にしてみました。

編集画面右下には、背景色の変更(Background)や、背景の表示位置の調整(Position)するボタンがあるので、適宜編集して、お好みの背景を作りましょう。

 

レイアウトが決まったら、「File」 > 「Save As…」 で構成情報を保存します。

 

 

今回は、実行ファイルと同じ場所(C:\01.BgInfo)に 「bginfofile.bgi」 という名称で保管。

 


 

共通のスタートアップに .bat を登録

どのユーザがログインしても、この背景(ビットマップ)がデスクトップに表示されるように、共通のスタートアップにバッチファイルを登録します。

 

共通のスタートアップファイルのパスは(2012R2の場合)、

C:\ProgramData\Microsoft\Windows\スタートメニュー\プログラム\スタートアップ

※ C:\ProgramData は隠しフォルダなので、見えない場合は隠しファイルを表示するように設定が必要です。

 

ここに、 「bginfo.bat」 というファイルを作成。

 

このファイルの中身は、↓ こんなです。(Bginfo.exe に引数をつけて実行するバッチファイル)

C:\01.BgInfo\Bginfo.exe C:\01.BgInfo\bginfofile.bgi /timer:0 /silent /NOLICPROMPT

 

Bginfo.exe コマンドのオプションは、「C:\01.BgInfo\Bginfo.exe /? 」 で表示されます。 

今回のバッチ(Bginfo.exe の起動)は、

・構成ファイルに 「C:\01.BgInfo\bginfofile.bgi」 を指定。
・/timer:0 構成のダイアログボックスを表示せずにディスプレイを更新。
・/silent エラーメッセージを表示しない。
・/NOLICPROMPT 使用許諾(EULA)の表示をスキップ。

 

 

これで、ユーザがログインする毎にビットマップが生成されて、デスクトップに背景として表示されるようになります。

 

今回の備忘録は以上です。

 

 

 

CentOS(Red Hat) on Hyper-V 2012R2

Hyper-V 2012 R2 上の仮想マシンに CentOS ( or RedHat) を入れた際の備忘録です。

CentOS 6.8 をゲストにしたのですが、minimal install したせいか、Hyper-V 関連のデーモンが入ってなかったので、yum で追加しました。
( https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/6.6_Technical_Notes/RHEA-2014-1439.html

(Hyper-V側の Windows Server バックアップでゲストの CentOS のOnlineバックアップが失敗したことで気付きました。。。)

 

# yum install hyperv-daemons

 

Baseリポジトリにあるので、yum.repos.d とかいじらなくて大丈夫です。
関連する ↓ 下記のデーモン達も一緒にインストールされます。

hyperv-daemons.x86_64 : HyperV daemons suite
hyperv-daemons-license.noarch : License of the HyperV daemons suite
hypervfcopyd.x86_64 : HyperV FCOPY daemon
hypervkvpd.x86_64 : HyperV key value pair (KVP) daemon
hypervvssd.x86_64 : HyperV VSS daemon

 

インストールが終わったら、OS 再起動です。

hyperv-daemons がない状態でも普通に動作しますが、これがあると、ライブマイグレーションが早くなったり、VSSバックアップ(オンラインバックアップ)ができたりと、なかなか便利になります。

 

また、hypervfcopyd (HyperV FCOPY daemon) のおかげで、PowerShell の 「Copy-VMFile」 コマンドを使用して、ホスト(Hyper-V側)に置いてあるファイルを Linux ゲストにコピーできるようになります。
(Hyper-V では USBメモリスティック をゲストに握らせられなかったりする場合があるので、これができるとちょー便利。)

 

「Copy-VMFile」 コマンドは MS の technet (https://technet.microsoft.com/ja-jp/library/dn464282.aspx) に詳しいですが、

 

例えば、ホスト側の「C:\hogehoge.txt」 を ゲストマシン(下記例では仮想マシン名「devmiz01」) の「/tmp」にコピーする場合は、

Copy-VMFile -Name devmiz01 -SourcePath 'C:\hogehoge.txt' -DestinationPath '/tmp' -FileSource Host

 

で、コピーできます。
※ 書き込み先のパーミッションは other の write を許可しておきます。

 

今回の備忘録は以上となります。

 

 

 

 

Cacti on CentOS6

Cacti (+ RRDTool)  を CentOS6 上で稼働させて、ネットワーク機器のトラフィック状況をグラフ化してみた際の作業記録です。

 


【Cacti について】

RRDTool (http://oss.oetiker.ch/rrdtool/) が作成したグラフをブラウザで表示できるようにしてくれるオープンソースなツールです。

SNMP で対象機器をポーリング、そのデータをRRDTool (がDBに格納して)グラフを作成、cacti 経由で ブラウザに表示してくれる、といった具合になります。

↓ こんな感じです。 (下記はローカルホストのロードアベレージを表示したところ)

 

Cacti のホームページ
http://www.cacti.net/

Cacti のマニュアル
http://www.cacti.net/documentation.php

 


【インストール】

CentOS 標準のリポジトリには含まれておらず、ソースからのインストールがメジャー(?)ですが、幸いにも EPEL (https://fedoraproject.org/wiki/EPEL/ja)リポジトリでパッケージが公開されているので、今回はEPEL から yum して利用することにします。

 


 

まずは EPEL リポジトリの追加から。
EPEL のトップページ(https://fedoraproject.org/wiki/EPEL/ja) にも記載あるように、CentOS では “yum install epel-release” の実行だけで、EPELを利用できるようになります。

# yum install epel-release

 

EPEL は現在 CentOS Extras repository に含まれているため、標準リポジトリとの競合はまずなさそう  (FAQより :  https://fedoraproject.org/wiki/EPEL/FAQ/ja) ですが、念のため、yum priorities (https://wiki.centos.org/PackageManagement/Yum/Priorities) プラグインを追加して、リポジトリの優先順位を設定しておきます。

# yum install yum-plugin-priorities

 

/etc/yum.repos.d/CentOS-Base.repo の [Base], [updates], [extras], [centosplus] を priority=1 に、[contrib] を priority=2 に指定します。
(priority は 1 – 99 までの指定、デフォルトは 99、数字が低いほど優先)

# vi /etc/yum.repos.d/CentOS-Base.repo

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=2

 

EPEL は priority=10 を指定しておきます。

# vi /etc/yum.repos.d/epel.repo

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
priority=10

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 6 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1
priority=10

[epel-source]
name=Extra Packages for Enterprise Linux 6 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1
priority=10

 


 

Cacti を yum でインストールします。

# yum install cacti

稼働要件(http://www.cacti.net/downloads/docs/html/requirements.html) のツール(RRDTool や PHP、MySQL, Apache など)も併せてインストールされます。

読み込んだプラグイン:fastestmirror, priorities
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.jaist.ac.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.jaist.ac.jp
 * updates: ftp.jaist.ac.jp
117 packages excluded due to repository priority protections
依存性の解決をしています

 <中略>

依存性を解決しました

============================================================================================================================
 パッケージ                              アーキテクチャ      バージョン                          リポジトリー          容量
============================================================================================================================
インストールしています:
 cacti                                   noarch              0.8.8b-7.el6                        epel                 2.2 M
依存性関連でのインストールをします。:
 apr                                     x86_64              1.3.9-5.el6_2                       base                 123 k
 apr-util                                x86_64              1.3.9-3.el6_0.1                     base                  87 k
 apr-util-ldap                           x86_64              1.3.9-3.el6_0.1                     base                  15 k
 cairo                                   x86_64              1.8.8-6.el6_6                       base                 309 k
 dejavu-fonts-common                     noarch              2.33-1.el6                          base                  63 k
 dejavu-lgc-sans-mono-fonts              noarch              2.33-1.el6                          base                 397 k
 dejavu-sans-mono-fonts                  noarch              2.33-1.el6                          base                 474 k
 fontconfig                              x86_64              2.8.0-5.el6                         base                 186 k
 fontpackages-filesystem                 noarch              1.41-1.1.el6                        base                 8.8 k
 freetype                                x86_64              2.3.11-15.el6_6.1                   base                 361 k
 httpd                                   x86_64              2.2.15-47.el6.centos.4              updates              831 k
 httpd-tools                             x86_64              2.2.15-47.el6.centos.4              updates               77 k
 libX11                                  x86_64              1.6.0-6.el6                         base                 586 k
 libX11-common                           noarch              1.6.0-6.el6                         base                 192 k
 libXau                                  x86_64              1.0.6-4.el6                         base                  24 k
 libXft                                  x86_64              2.3.1-2.el6                         base                  55 k
 libXrender                              x86_64              0.9.8-2.1.el6                       base                  24 k
 libpng                                  x86_64              2:1.2.49-2.el6_7                    updates              182 k
 libthai                                 x86_64              0.1.12-3.el6                        base                 183 k
 libxcb                                  x86_64              1.9.1-3.el6                         base                 110 k
 lm_sensors-libs                         x86_64              3.1.1-17.el6                        base                  38 k
 mailcap                                 noarch              2.1.31-2.el6                        base                  27 k
 mysql                                   x86_64              5.1.73-5.el6_7.1                    updates              894 k
 net-snmp                                x86_64              1:5.5-54.el6_7.1                    updates              308 k
 net-snmp-libs                           x86_64              1:5.5-54.el6_7.1                    updates              1.5 M
 net-snmp-utils                          x86_64              1:5.5-54.el6_7.1                    updates              176 k
 pango                                   x86_64              1.28.1-10.el6                       base                 351 k
 php                                     x86_64              5.3.3-46.el6_7.1                    updates              1.1 M
 php-cli                                 x86_64              5.3.3-46.el6_7.1                    updates              2.2 M
 php-common                              x86_64              5.3.3-46.el6_7.1                    updates              529 k
 php-mysql                               x86_64              5.3.3-46.el6_7.1                    updates               86 k
 php-pdo                                 x86_64              5.3.3-46.el6_7.1                    updates               80 k
 php-snmp                                x86_64              5.3.3-46.el6_7.1                    updates               35 k
 pixman                                  x86_64              0.32.4-4.el6                        base                 243 k
 rrdtool                                 x86_64              1.3.8-7.el6                         base                 293 k

トランザクションの要約
============================================================================================================================
インストール        36 パッケージ

総ダウンロード容量: 14 M
インストール済み容量: 43 M
これでいいですか? [y/N]y

 <中略>

インストール:
  cacti.noarch 0:0.8.8b-7.el6

依存性関連をインストールしました:
  apr.x86_64 0:1.3.9-5.el6_2                                   apr-util.x86_64 0:1.3.9-3.el6_0.1
  apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1                       cairo.x86_64 0:1.8.8-6.el6_6
  dejavu-fonts-common.noarch 0:2.33-1.el6                      dejavu-lgc-sans-mono-fonts.noarch 0:2.33-1.el6
  dejavu-sans-mono-fonts.noarch 0:2.33-1.el6                   fontconfig.x86_64 0:2.8.0-5.el6
  fontpackages-filesystem.noarch 0:1.41-1.1.el6                freetype.x86_64 0:2.3.11-15.el6_6.1
  httpd.x86_64 0:2.2.15-47.el6.centos.4                        httpd-tools.x86_64 0:2.2.15-47.el6.centos.4
  libX11.x86_64 0:1.6.0-6.el6                                  libX11-common.noarch 0:1.6.0-6.el6
  libXau.x86_64 0:1.0.6-4.el6                                  libXft.x86_64 0:2.3.1-2.el6
  libXrender.x86_64 0:0.9.8-2.1.el6                            libpng.x86_64 2:1.2.49-2.el6_7
  libthai.x86_64 0:0.1.12-3.el6                                libxcb.x86_64 0:1.9.1-3.el6
  lm_sensors-libs.x86_64 0:3.1.1-17.el6                        mailcap.noarch 0:2.1.31-2.el6
  mysql.x86_64 0:5.1.73-5.el6_7.1                              net-snmp.x86_64 1:5.5-54.el6_7.1
  net-snmp-libs.x86_64 1:5.5-54.el6_7.1                        net-snmp-utils.x86_64 1:5.5-54.el6_7.1
  pango.x86_64 0:1.28.1-10.el6                                 php.x86_64 0:5.3.3-46.el6_7.1
  php-cli.x86_64 0:5.3.3-46.el6_7.1                            php-common.x86_64 0:5.3.3-46.el6_7.1
  php-mysql.x86_64 0:5.3.3-46.el6_7.1                          php-pdo.x86_64 0:5.3.3-46.el6_7.1
  php-snmp.x86_64 0:5.3.3-46.el6_7.1                           pixman.x86_64 0:0.32.4-4.el6
  rrdtool.x86_64 0:1.3.8-7.el6

完了しました!

 

必要なパッケージ (http://docs.cacti.net/manual:088:1_installation.1_install_unix#installing_under_unix) が全て yum 経由で入ったかどうか、確認しましょう。
今回は、 php-xml と mysql-server  が不足していたので、別途インストールしました。

# yum install php-xml
# yum install mysql-server

 


 

これで cacti (とRRDTool や関連パッケージ)の導入が完了しましたので、次は、

Cacti のインストールガイド (http://docs.cacti.net/manual:088:1_installation.1_install_unix#configuration_of_software_packages) を参考に、各ソフトウェアの設定を行っていきます。

 


 

PHP の設定 (http://docs.cacti.net/manual:088:1_installation.1_install_unix.1_configure_php

確認対象は /etc/php.ini です。
上記マニュアルを参考に、必要に応じて修正します。
今回は、date.timezone = “Asia/Tokyo” に修正。 (http://php.net/manual/en/timezones.asia.php

# vi /etc/php.ini

[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
date.timezone = "Asia/Tokyo

 


 

httpd (Apache) の設定 (http://docs.cacti.net/manual:088:1_installation.1_install_unix.2_configure_apache

上記のマニュアルを参考に、

/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/php.conf

↑ この2つの設定を確認。 私の環境では、特に変更しなくてもよさそうだったです。

なお、Cacti (のWebサイト)へのアクセスが デフォルトでは local host (127.0.0.1) からのみ可となっているため、接続できるIPを追加しておきます。

# vi /etc/httpd/conf.d/cacti.conf
#
# Cacti: An rrd based graphing tool
#

# For security reasons, the Cacti web interface is accessible only to
# localhost in the default configuration. If you want to allow other clients
# to access your Cacti installation, change the httpd ACLs below.
# For example:
# On httpd 2.4, change "Require host localhost" to "Require all granted".
# On httpd 2.2, change "Allow from localhost" to "Allow from all".

Alias /cacti    /usr/share/cacti

<Directory /usr/share/cacti/>
        <IfModule mod_authz_core.c>
                # httpd 2.4
                #Require host localhost
                Require all granted
        </IfModule>
        <IfModule !mod_authz_core.c>
                # httpd 2.2
                Order deny,allow
                Deny from all
                Allow from localhost
                Allow from 172.31.1.0/24
                Allow from 172.31.10.0/24
        </IfModule>
</Directory>

<Directory /usr/share/cacti/install>
        # mod_security overrides.
        # Uncomment these if you use mod_security.
        # allow POST of application/x-www-form-urlencoded during install
        #SecRuleRemoveById 960010
        # permit the specification of the rrdtool paths during install
        #SecRuleRemoveById 900011
</Directory>


# These sections marked "Require all denied" (or "Deny from all")
# should not be modified.
# These are in place in order to harden Cacti.
<Directory /usr/share/cacti/log>
        <IfModule mod_authz_core.c>
                Require all denied
        </IfModule>
        <IfModule !mod_authz_core.c>
                Order deny,allow
                Deny from all
        </IfModule>
</Directory>
<Directory /usr/share/cacti/rra>
        <IfModule mod_authz_core.c>
                Require all denied
        </IfModule>
        <IfModule !mod_authz_core.c>
                Order deny,allow
                Deny from all
        </IfModule>
</Directory>

17 行目をコメントアウト、
18, 25, 26 行目を追加してます。

 

httpd を起動します。
(OS起動時に自動起動するようにもしておきます)

# service httpd start
# chkconfig httpd on

 


 

Cacti 用の MySQL DB を作成します。 (http://docs.cacti.net/manual:088:1_installation.1_install_unix.5_install_and_configure_cacti

今回は、データベース名 「cacti」、DBのユーザー「cactiuser」 、パスワード「cacticacti」とします。

 

このへんの設定あたりから、↑ のマニュアルに書いてない事も多かったので、ネットでいろいろと検索した結果を織り交ぜて書いてます。

 

mysqld が起動していない場合は、まず起動を。

# service mysqld start
# chkconfig mysqld o

 

cacti 用のDB 「cacti」 を作成して、テーブルをインポートします。

# mysqladmin --user=root create cacti
# mysql cacti < /usr/share/doc/cacti-0.8.8b/cacti.sql

 

cacti DB に ユーザとパスワードを設定

# mysql --user=root
Server version: 5.1.73 Source distribution

mysql> grant all on cacti.* to cactiuser@localhost identified by 'cacticacti';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> exit;
Bye

 


 

残りの設定。

DBのユーザ名/パスワードを cacti の設定ファイルに反映。

# vi /usr/share/cacti/include/config.php

 <中略>

$database_username = "cactiuser";
$database_password = "cacticacti";

 <中略>

 

cron を有効化。
yum した際に cacti の cron ファイル(/etc/cron.d/cacti)が作成さますが、中身がコメントアウトされてるので、外して有効化します。

# vi /etc/cron.d/cacti

*/5 * * * *     cacti   /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1

↑ コメントアウトされてるので、外します。

 

cron の再起動

# service crond restart

 


 

これで準備が整いました。
cacti にアクセスして初期設定を開始します。

ブラウザから、

http://cactiをインストールしたサーバー/cacti

にアクセスすると、下記のように Installation Guide で出てきます。「Next」で次に進みます。

 

「New Install 」 を選んで 「Next」

 

各パラメータのチェックがOK(緑色文字)な事を確認して、「Finish」

 

ログイン画面が出てきます。

User Name :  admin
Password: admin

でログイン。

 

初回の強制パスワードの設定画面が出てきますので、新しいパスワードを設定します。

 

cacti の利用準備が整いました!

 

 


 

次は、トラッフィクグラフを取得したい機器を登録していきます。

基本的な設定の流れは、cacti にログイン後のトップページにも記載があるように、

  1.  「create device」 (ネットワーク機器を登録)
  2.  「create grafh」  (グラフ作成)

の流れです。

では、早速登録してみます。

 

画面左上の赤いタブ 「console」を選択(デフォルトではこの画面になってます)、 画面左側のメニュー一覧から 「Devices」 をクリック。

 

↑ この画面右上の「Add」 をクリックすると、デバイス登録画面が出てきます。

 

Hostname、SNMP Community など、必要な情報をタイプして、画面右下の 「create」 をクリックします。

 

対象とSNMPでコミュニケーションできなかった場合、下記のように赤文字で 「SNMP error」 となります。

対象の機器でSNMPが有効になっているか、コミュニティ名などに間違いはないか、通信経路上のFirewallがある場合はSNMP 通信(UDP/161) が許可されているか、など確認します。

 

うまくいった場合は下記のように SNMP Information が取得できます。

 

次はグラフの作成です。 
↑ この画面の右上の 「Create Graphs for this Host」 をクリックします。

すると、↑ このように作成できるグラフリストの一覧が表示されます。

(デバイス作成時に SNMP error が表示された -> でもなんとか修正して SNMP Information は取れるようになった -> でもこのリストが出てこない、な場合はデバイスの削除 -> 再登録 でうまくいくかもしれません)

右端のチェックボックスにチェックを入れて、画面右下の 「Create」 をクリックすると、グラフが作成されます。
ポート数の多い機器とかは、Next ページにも一覧があるので忘れずにチェックを。

↓ Create が終わったところ。

 


グラフを見てみます。
GUI画面左上、赤色の 「graphs」 をクリックします。

初期状態では、↓ こんなふうに Tree View 画面が表示されます。
左ペインの Default Tree を展開すると、localhost の各グラフを表示することができます。

 

さきほど登録した機器は、デフォルトではこの Tree View には表示されません。
画面右上、「setting」 ボタンの右側に、3つほどボタン(左から、Tree View、List View、Preview view)があって、List View か Preview view を選択すると、追加した機器のグラフを見ることができます。

List View をクリックしたところ。
↓ こんなふうに、グラフの一覧が出てきます。

↑ この中から、見たいグラフをクリックすると、
↓ こんなかんじで閲覧することができます。

 


 

よく見るグラフは、Tree View に登録すると良いです。

Console > Graph Trees をクリックします。

↑ 初期状態では、「Default Tree」(localhost の各グラフが表示) のみ登録されています。

ここに新しいツリーを作成して、閲覧したいグラフを追加していきます。

↑ この画面右上の 「Add」 をクリック。
↓ 新規ツリーの作成画面が出ますので、適当な名前を入力して 「Create」 をクリック。

 

↓ Tree Items の 「Add」 をクリックして、見たいアイテムを追加します。

 

↓ Add を押したところ。
Tree Item Type には、「header」、「grapsh」、「host 」 が選択できます。
Header はTree の 上位階層(Parent) になるので、アイテムを階層化したい場合に使います。
graph は 各グラフ単位、host はその対象で取得しているグラフ全てが表示されます。

Tree Item Type「Header」 で作るとこんな感じです。

 

SW01 の配下に、Gi 1/0/1 のグラフを追加してみます。

 

すると、Tree View ではこんな風に表示されます。

 

こんな感じで、お好みのグラフ表示を作成することができます。

 

今回の備忘録は以上です。

 

 

 

FortiGate 60D 2台でHA構成

FortiGate 60D x 2台でHA構成を組んだ際の備忘録です。

 

【 FortiGateについて】
 アメリカ カリフォルニア州サニーベールに本社を置くネットワークセキュリティベンダーの Fortinet社 (http://www.fortinet.com/) が開発したUTM(Unified Threat Management / 統合脅威管理)製品です。
 UTMは次世代型FireWall(Next Generation Firewall)とも呼ばれ、1台の機器で、FIrewall機能や侵入検知/防御、AntiVirus、Webコンテンツフィルタリングなどのネットワーク・セキュリティ機能を包括的に実装した機器です。
 FortiGateにはエントリーモデルからハイエンドモデルまで多数の機種がありますが、今回使用した 60D はエントリーモデルの位置づけになります。

 

 

【今回使用した Fortigate 60D x 2台 】

・ファームウェアバージョン: v5.2.7,build718

↑ 60D には全部で10個の UTPポート(10M/100M/1G) があります。

 

 

【HA構成 概略図】

 

こんな風に 2台 の 60D でHA構成を組んでみます。
Internetが2回線あって設定どうしてるの、とか、内部LANがおおざっぱ、だとかはスルーしてください ^^;

今回は Active – Standby の HA で、FW01 がActive、FW02 を Standby とします。
Fortigate の HA では、ホスト名などのごく一部の設定を除き、2台がまったく同じコンフィグになります。
サービス用IPも共有されるので、機器を個別に管理するために、管理用ポート(FW01, FW02 にそれぞれ異なるIPを付与)が必要です。
今回は、物理ポート(port 6)を管理専用に、物理ポート 7 を HA ハートビート用、port 1 (internal インターフェース)をサービスポート(内部LANがインターネットに抜ける際のNextHop)にします。

管理用ポート(インターフェース)について、今回は贅沢にも物理ポートをまるっと専有しましたが、vlan インターフェースなどを割り当てることもできますので、例えばサービスポート(今回であれば port1 / internal) に相乗りさせることもできます。

 

 

§1. 設定用PCの接続

では、早速設定をしてみます。
まずはFW01からです。

設定は、GUI(ブラウザ) or CLI コンソールから行います。
今回はどちらも使用。
(試してないのですが、Windows(など)から USB ケーブルで接続して初期設定する方法や、iOS (USBケーブルで接続)から も初期設定できる、と Quick Start Guide には書いてある!)

まずは、FW01 の port 5に PC を接続します。

セットアップガイドでは port 1 に繋いで、となってますが、デフォルトでは FG60D の port 1 ~ 7 は同じ設定(同一のハードウェアスイッチに所属)になってますので、どこにつないでもいけます。

PC は DHCP か、192.168.1.99 以外の IP を割り当てます。
(FG60D の port 1 ~ 7  は 192.168.1.99 / 24 が設定されており、DHCPサーバーが有効になっています)

 

ブラウザから、 192.168.1.99 にアクセスします。(HTTPSにリダイレクトされます = ですので、安全な証明書じゃないとブラウザが言いますが、気にせずすすみましょう)
※ 下記スクリーンショットだとIP違いますが、スルーしてください ><)

工場出荷時状態でのID/パスワードは下記のようになっています。Name : admin
Password : なし

ログインすると、ダッシュボード ステータス画面が表示されます。
(System Information の部分には機器のシリアルナンバーやファームウェアバージョンなどが表示されるので、ここでは畳んでいます)

 

初期状態では、admin ユーザのパスワードが空なので、早めに設定しておきましょう。
(スクリーンショットは割愛しますが) System > Admin > Administrators からアカウントの設定・変更が行えます。

また、ホスト名もまっさきに設定しておきます。(HA構成の個体識別子になるので)

GUI で System > Dashboard > Status で設定するか、CLI であれば、

config system global
    set hostname FW01

 

 

 【ちなみに  CLI コマンドのメモ】

・no pager したい
# config system console
(console) # set output standard
(console) # end

・工場出荷時の設定に戻したい
# execute factoryreset

・設定を(全部)みたい
# show

 

 

§2. 設定画面を日本語表示に変更

(お好みで)GUI画面を日本語表示にもできます。

「System > Admin > Settings 」 画面の View Settings 欄の Language のプルダウンから Japanese を選択し、Apply します。

 

日本語表示になりました。(以降、日本語画面で作業します)

 

 

§3. DNS と NTP の設定

内部LAN向けにDNSリゾルバとNTPサーバーを提供したいので、先に設定しておきます。(HA組んだあとからでもいいんだけど、今回はこのFG経由でネットに接続しながらいろいろやってたので。。。)

まずはDNSから。
「システム > フィーチャー」 を選択、右ペインの「フィーチャー設定」画面を最下段までスクロール、「さらに表示」 のボタンがあるのでクリックします。

 

「DNSデータベース」 を 「ON」 にして、「適用」  をクリック。

 

DNSデータベースをONにすると、「システム > ネットワーク」 に 「DNSサーバー」 の項目が追加されます。

 

「インターフェース上のDNSサービス」 で 「新規追加」 をクリックし、内部LAN用のインターフェース(今回であれば 「internal」 )を追加します。

 

 【ちなみに コマンドで DNS Proxy(キャッシュ)の確認】

# diag test application dnsproxy 3
# diag test application dnsproxy 6
# diag test application dnsproxy 7

 

 

次に、外部NTPサーバーの参照と、内部LAN向けのNTPサーバーを設定します。
今回はNICT(http://jjy.nict.go.jp/tsp/PubNtp/qa.html)さんが提供するNTPサーバー(ntp.nict.jp)を利用します。

「システム > ダッシュボード」 を選択し、「システム情報」画面にあるシステム時間の「変更」をクリック。

 

タイムゾーンを GMT+9:00 に。
「NTPサーバーと同期」 にチェックを入れ、「ntp.nict.jp」 を指定します。
内部LAN向けのNTPサーバーにするため、「NTPサーバーを有効にする」 にチェックを入れ、インターフェースに 「internal」 を選択します。

 

 【ちなみに コマンドで時刻(NTP) の確認】

# execute time
# get system ntp
# diagnose sys ntp status

 

 

§4. HAの設定

まず、port 6(管理用ポートにする) と port 7 (HAのハートビート用にする)がハードウェアスイッチ(internal  インターフェース)にバインドされているので、そこから外します。

「システム > ネットワーク > インターフェース」 を開き、「internal」 インターフェースを右クリック > 「編集」 をクリックします。
(スクリーンショットが英語でIPも違いますが、スルーをば。。。)

 

「物理インターフェースメンバ」 の 「internal6」 「internal7」 の右横にある 「X」 をクリックすると、メンバーから外れます。

 

↓外したところ。 画面を最下段までスクロールし、「OK」 をクリックして反映させます。

ちなみに CLI からだと、

config system virtual-switch
    edit "internal"
        config port

delete internal6
delete internal7

 

 

次に、HAの設定です。
「システム > 設定 > HA」 を開き、

設定項目 その他
モード アクティブ・パッシブ  
デバイスのプライオリティ 200

今回は FW01 を 200 に、FW02 を 100 に設定。
0 – 255 の範囲で指定。 値が大きいほうがマスタに選出される(マスタの選出方法はマニュアルに -> http://docs.fortinet.com/fortigate/admin-guides )

クラスタ管理メンバに管理ポートを予約 internal6 internal 6 にエイリアス 「MGMT」 と設定したので、下図のように表示されてます。
(システム > ネットワーク > インターフェース)、
グループ名 & パスワード  お好みの文字列を 同じ文字列の所有者間でHAが構成されるので、FW01/02ともに(なにか)設定します
セッションピックアップ 有効  

ハートビートインターフェースに、Internal7 (プライオリティ 100)、Internal 6 (プライオリティ 50) を指定。
(管理インターフェースも HA heartbeat に使ってみることにしました)

適用をクリックします。

・・・なんか怒られた。。。
“Please disable switch-controller first”

 

switch-controller なるものを disable にしろと。。。 なんじゃろ。。。
調べたところ、knowledge にありました。
http://kb.fortinet.com/kb/documentLink.do?externalID=FD36685

version 5.2 での制限との事なので、solution 通りに設定することにします。
CLIから、

config system global
set switch-controller disable
end

これで設定できるようになりました!

 

さて、ここまでは FG60D がデフォルトで提供しているIP(192.168.1.99)に向けて通信(設定)を行っていましたが、このあたりでこのIPの使用をやめて、管理専用ポート(internal6)にIPを振って、以降はそこ経由で設定することにします。
(同時に Internal インターフェースのDHCPも無効に)

GUIからでもCLIからの設定でも良いのですが、ここではCLIから。

config system interface
    edit "internal6"
        set ip 172.31.10.250 255.255.255.0
        set allowaccess ping https ssh snmp http

(IPとかはご利用の環境に合わせて)
管理ポートにデフォルトゲートウェイを設定して、他のセグメントからもアクセスできるようにします。

config system ha
set ha-mgmt-interface-gateway 172.31.10.229

 

これで、FW01 の設定は完了です。

同様に、FW02 も設定します。
ホスト名、HA のプライオリティ値、管理IPが異なる以外は、上記の手順と同様です。

FW02の設定が終わったら、いよいよLANケーブルを接続です。
(ここまで、FW02は スタンドアロン、FW01 は WAN1/Internal1,6 がリンクアップ済み)

双方の internal 7 間を接続、FW02(のinternal1 とinternal6 )を内部LANに接続します。

すると、GUI画面(システム > 設定 > HA)ではこんなふうに。

 

FW01 がマスターに、FW02がスレーブとして HA 構成が出来上がりです!

このあとは、FW01/02どちらかの管理IPにアクセスして設定を続けても良いですし、サービスIPに接続しての設定するのもありです。
(コンフィグはHA組んだ機器間で自動で同期されますが、ホスト名やHA設定などの一部の設定は同期されませんので、これらを変更する場合は、各管理IPにアクセスが必要です)

 

 【ちなみに CLI の HAコマンド】

・状態確認
# get system ha status

・設定値の確認
# get system ha
# show system ha

・手動フェールオーバー
# diagnose sys ha reset-uptime
 ※ master 側で実行。 slave と 5分以上 uptime 差がないと無効。

 

 

今回の備忘録は以上です。

 

 

Kali Linux, Rolling Edition – 2016.1

 Kali Linux は ディストリビューションのリリース形態を ローリング・リリース モデル に変更するとのことで、2016年1月21日、Kali Linux Rolling Edition 2016.1 をリリースしました。

https://www.kali.org/news/kali-linux-rolling-edition-2016-1/

 従来の最新バージョンであった Kali Linux 2.0 については、リポジトリの EOL が 2016年4月15日 とのこと。
 もうそろそろ期限を迎えるので、手持ちの Kali 2.0 を ローリング・エディションに変更してみました。

 

 アップグレードの手順は kali のサイト に記載があるとおり、

# cat << EOF > /etc/apt/sources.list
> deb http://http.kali.org/kali kali-rolling main non-free contrib
> EOF

# apt-get update
# apt-get dist-upgrade
# reboot

 /etc/apt/sources.list の内容を書き換えて、apt-get すると ローリングエディション版に更新されます。

 

 私の環境だと、

アップグレード: 1944個、新規インストール: 525個、削除: 93個、保留: 0個。
2,626 MB 中 1,690 MB のアーカイブを取得する必要があります。
この操作後に追加で 2,444 MB のディスク容量が消費されます

でした。 

 ・・・アップグレード 1944個、新規インストール 525個、けっこう変更されますね。。。 
 今回は、Kali 2.0 マシンが LTE 経由でネットにアップリンクしてたのと、低スペックな仮想マシン上で実行したことも相まって、終わるまで9時間くらいかかりました。。。

 .iso ( kali 2016.1 のダウンロードはこちら https://www.kali.org/downloads/ ) からクリーンインストールしたほうが早かった。。。かも。

 

 アップデート完了後のカーネルとバージョン情報はこんなでした。

 

 

 

Hyper-V Server 2012 R2 その③

Hyper-V 2012 R2 のライブマイグレーションを試してみたので、その備忘録です。

以前に備忘録した 「Hyper-V Server 2012 R2 その① (Hyper-V 環境の構築)」 と 「 その② (仮想マシンのレプリケーション)」 の続きになります。

 

構成はこんなです。(備忘録 その①、② の時と構成変わってます)

Hyper-V(ホスト名:HVS000)上で稼働させている仮想マシン(CentOS)を、同じセグメント上の Hyper-V(ホスト名:HVS000LM)にライブマイグレーション(移動) させてみます。

 

・HVS000  :  Windows Server 2012 R2 (on HP DL 370G6 / Xeon E5520 / RAM 6GB / HDD 600GB)
・HVS000LM  :  Hyper-V Server 2012 R2 (on Lenovo A58 / Core2Duo E7500 / RAM 4GB / HDD 300GB)

※ 共有ストレージはなし、ローカルHDDのみです。
(2012 R2 からは、共有ストレージなしでもライブマイグレーションができるようになりました)

HVS000 は評価版の Windows Server 2012 R2 を使用、Hyper-Vの役割のみを追加。
HVS000LM は Hyper-V Server 2012 R2 を使用。

HVS000 上の2台の仮想マシンは、 
・ Windows Server 2012 R2(評価版) : Active Directory ドメインサービスの役割を追加、HVS000LM をこのドメインに参加させてます。
・ CentOS 6  :  ライブマイグレーションを試してみる 用の Linux。

 

各サーバーの設定は、以前の備忘録 「Hyper-V Server 2012 R2 その① (Hyper-V 環境の構築)」 と 「 その② (仮想マシンのレプリケーション)」  と同等です。
 

 

 【Hyper-V 2012 R2 のレプリケーションとライブマイグレーションをざっと使ってみてわかったこと】
 
・ レプリケーション先とライブマイグレーション先は同じサーバーにできない (設定しようとすると、同名ホストが存在する、と怒られる)

・ Hyper-V マネージャは、右クリック > 管理者権限 で起動してから利用する。
ADの環境依存なのかもしれませんが、こうしないと権限不足で起動できない機能があった。

・ ライブマイグレーション先のCPU。
仮想マシンのプロセッサ互換性を有効にすれば、例えば Xeon上のHyper-Vで動いていた仮想マシンを Core2 Duo 上のHyper-V に移動することもできるのですが、互換性を有効にしても仮想マシンに割り当てたプロセッサの個数とかはどうしようもないらしく、4コアを割り当てた仮想マシンを 2コアのサーバーにライブマイグレーションするのは無理だった。

 

 

【ライブマイグレーションの設定】

Hyper-V 上で、ライブマイグレーションの機能を有効にします。

HVS000 を右クリック >  「Hyper-V の設定」 を開き ライブマイグレーションを有効にするにチェックを入れます。
HVS000LMも同様の設定を行います。

 

高度な設定。

認証プロトコルは Kerberos を選択。(CredSSP も試してみましたが、私の環境だとうまく動かなかったです。。。)
パフォーマンスは圧縮を選択。(デフォルトのまま)

 

 

【仮想スイッチについて】
CentOS(ライブマイグレーション対象の仮想マシン)にバインドしている仮想スイッチと同じものを、移動先の Hyper-V にも作成しておきます。

今回、CentOSは HVM000上の仮想スイッチ 「VSW-DEV-000」 をバインドしていますので、移動先にも同様の名称で仮想スイッチを事前に作成しておきます。

 

【ライブマイグレーションの実行】

では、ライブマイグレーションしてみます。
移動したい仮想マシンを右クリック > 「移動」 を選択。
(下記スクリーンショットではサーバー HVS000RP 上の仮想マシンを選択してますが、HVS000 に読み替えてください >< )

 

移動ウィザードが開始されます。
画面の指示にしたがって先に進みます。

 

今回は 「 仮想マシンを移動する 」 を選択。

 

移動先のコンピュータ名(今回は HVS000LM )を指定。

 

「仮想マシンのデータを1つの場所に移動する」を選択。

 

移動先での保存場所を指定。
今回は事前にHVM000LMに「C:\10.LiveMigrated_VM\」というフォルダを作成しておき、そこを指定。

 

「完了」をクリックすると。。。

 

・・・エラーが発生。。。

 

エラーメッセージによると、どうやら「Active Directory で制約付き委任」 なる設定をしないといけいない様子。
エラーコード 0x8009030E で検索していたら、GMOさんの解説 に同様のケースがあったので、こちらを参考に設定を追加することにします。

 

ドメインコントローラーの「Active Directory ユーザーとコンピューター」を開き、HVS000 を選択 > 右クリックして「プロパティ」を開きます。
(HVS000LM も同様に。 ライブマイグレーションを実行したいサーバー全てに同設定を行う)

 

「委任」タブを開き、「指定されたサービスへの委任のみでこのコンピューターを信頼する」 > 「Kerberos のみを使う」 を選択。

 

続いて、同プロパティ内の「追加」ボタンをクリックし、「サービスの追加」を起動。

 

上記画面内の「ユーザーまたはコンピューター」をクリックし、

 

ライブマイグレーションの相手側になるサーバーを指定します。
(下記スクリーンショットは HVS000LM の設定中なので、相方には HVS000 を指定)

 

「OK」をクリックすると、サービスの追加画面が出るので、

 

この中から「cifs」と「Microsoft Virtual System Migration Service」 の2つを選択 (ctrlキーを押しながらクリックで複数選択できる) します。

サービスに 「cifs」と「Microsoft Virtual System Migration Service」 が追加されましたので、「OK」をクリック。

 

HVS000、HVS000LMともに委任の設定が終わったので、再度、仮想マシンの移動を試してみます。
(スクリーンショットは先程と同様なので割愛)

今度はエラーも出ず、ライブマイグレーションに成功しました! ^^)

 ↑ こんな感じで、移動の進捗が表示されます。

 

ライブマイグレーションした仮想マシン(CentOS6)のスペックは、
・ 第一世代の仮想マシン
・ 割り当てメモリ : 512MB
・ 仮想プロセッサ : 1個(プロセッサの互換性:オン)
・ 仮想マシンのサイズ(*.vhdx) : 約 4.35 ギガバイト

Hyper-V サーバー間は 1Gbps のリンクで、このスペックでのライブマイグレーションに要した時間は
  約 2分
といった結果でした。

マイグレーション後のデータの正常性などは特に確認していないのですが (DBとか更新中に移動したらどうなんるんだろうとかは非常に気になっているので、そのうち確認はしたいですが)、

マイグレーションの実行中に、この仮想マシン(CentOS 6)に同セグメントの別マシンから ping をあて続けたところ、完了直前(直後?)に  1発 だけ ping 落ち (このちょっと前に、仮想マシンから G-ARP(Gratuitous ARP – Wikipedia) が 1パケット (だと少ない気もしますが) 発信されたのを確認できたので、この際に ICMP Reply ロスした模様。G-ARP 出るので、上流のスイッチ達のMAC テーブル更新も心配なさそう) が確認されましたが、それ以外は特に異常なく、ライブマイグレーションできました。

 

 

robocopyで外付けHDDにデータをミラーリング

  robocopy を使用して、ローカルHDD内のデータを外付けUSB-HDDにミラーリングした時の作業記録です。

【robocopy について】
 ”Robust File Copy(堅牢なファイルコピー)”  の略称で、ディレクトリやファイルの複製が行えます。
 Windows VISTA / WIndows Server 2008 以降から、OS標準で搭載されいるコマンドです。
 (構文やオプションなどは Microsoft の technet に)

 

 

 今回は、OS が Windows Server 2008 R2 、
 robocopy コマンドを Windows のタスクマネージャに登録して、OS起動時にタスク(robocopyコマンド)を実行する、という方式にしました。
 また、robocopy の実行結果ログも出力(/LOG+ オプション)するようにしています。
 (ログが貯まり続けてしまうので、90日経過後に削除するPowershell スクリプトを作成してログメンテするようにしました。 このOSは毎日再起動(これもタスクに登録)されるので、この スクリプト がOS起動時に実行されるよう、タスクに登録してます)

 

 robocopy のコマンドです。

robocopy E:\ H:\ /MIR /DCOPY:T /MON:1 /ZB /LOG+:C:\10.Robocopy-Log\robocopy.log /NP /XD "$RECYCLE.BIN" "System Volume Information" 

 今回は、
 ・ コピー元: E:\  (ローカルのHDD)
 ・ コピー先: H:\ (外付けのUSB-HDD)
 ドライブを丸ごとミラー( /MIR )してます。

 実行結果を 「C:\10.Robocopy-Log\robocopy.log」 という名称で出力、また、「$RECYCLE.BIN」「System Volume Information」ディレクトリはコピー対象外としています。
(ログを出力するディレクトリが存在しないとコマンドが失敗するので、事前に作成を)

 

 この robocpy コマンドがOS起動時に実行されるよう、タスクとして登録します。
 タスクの登録状況はこんな感じです。
 (サーバーマネージャー > 構成 > タスクスケジューラー > タスクスケジューラー ライブラリ)

 

 上記のタスク名称 「002.~」 が robocopy用のタスクです。
「全般」タブはこんな設定。

 

「トリガー」タブはこんなです。 5分の遅延起動にしています。

 

「操作」タブです。 上に記載した robocopy コマンドを登録してます。

 

「条件」タブ。

 

「設定」タブです。

 これで、OS起動時に robocpy コマンドが実行され、外付けUSB-HDDにミラーが作成されます。

 

 続いて、ログのメンテナンスです。

 今回は 「 C:\10.Robocopy-Log\robocopy.log 」 にログを出力(追記形式で保存 (/LOG+) )してます。
 このログを毎日のOS再起動のタイミングで、

 ・ robocopy.log  を 別のフォルダ(C:\10.Robocopy-Log\履歴\)にmove してリネーム(moveした日をファイル名に付与)。
 ・ 90日経過したログは削除する。

 上記の処理を行うPoweshellスクリプトを作成し、Windowsのタスクに登録します。
 今回はこんなPowershellスクリプトを作成。
( 「C:\01.Script_for_PowerShell\001.Del_robocopy-log.ps1」 で保存)

###
### 【このシェルについて】
### robocopy のログをOSの再起動毎にmoveして、90日経過したら削除する。
### ログの保管場所 C:\10.Robocopy_Log\robocopy.log
###
### STEP1) ログファイルを、再起動毎にmove。
###  移動元: C:\10.Robocopy-Log\robocopy.log
###  移動先: C:\10.Robocopy-Log\履歴\Robocopy_Log_yyyyMMdd
###    yyyy:西暦
###    MM:月
###    dd:日
###    HH:時
###    mm:分
###    ss:秒
###
### STEP2) 古くなったログファイルを削除。
###  作成から90日経過したものを対象。
###
###
###
### !このシェルは、OS再起動毎に、タスクスケジューラーによって実行されます。
###
###
### タスクの起動順:
### 003. robocopy.log のメンテナンス
###  ↑ OS起動後、3分後に起動
###
###  002. DS3200のデータをUSB-HDDにミラーリング
###  ↑ OS起動後、5分後に起動。
###
###
### 【履歴】
### YYYY.MM.DD 新規作成。
### YYYY.MM.DD あれとあれを修正。
###
###
### STEP0) robocopyを強制終了。
###  今回はOS起動後の実行なので、このステップはなし。
### stop-process -name robocopy


### STEP1) ログファイルを、再起動毎にmove。
###  移動元: C:\10.Robocopy-Log\robocopy.log
###  移動先: C:\10.Robocopy-Log\履歴\Robocopy_Log_yyyyMMdd

$TargetLogPath = "C:\10.Robocopy-Log\robocopy.log"    #robocopyのログを指定。
$BackupFolderPath = "C:\10.Robocopy-Log\履歴"     #移動先フォルダの指定。
$DateNow = (Get-Date).toString("yyyyMMdd_HHmmss")        #システム日時を変数 $DateNow に格納。
$BackUpLogName = "$BackupFolderPath\robocopy"  + "`_" + "$DateNow" + ".log"  #移動先ファイル名の指定。

###get-process robocopy 2> C:\001.PowerShell\001.Log\002.RobocopyResults_$DateNow.txt #robocopyプロセスの確認。存在しなければ、ファイルに出力される。

move-item -Path "$TargetLogPath" -Destination "$BackUpLogName"   #moveを実行。
###move-item -Path "$TargetLogPath" -Destination "$BackUpLogName" 2> C:\001.PowerShell\001.Log\001.MoveLog_$DateNow.txt #コピーを実行。エラーが出れば、ファイルに出力。



###
### STEP2) 古くなったログファイルを削除。
###  作成から90日経過したものを対象。
###
### $DeleteTime = "-n" n(分/min)。 n分経過したものを削除する。
###  30日 = 43200min (60min * 24hour * 30day)
###  90日 = 129600min (60min * 24hour * 90day)
### $DelFile : 削除対象。
###

            
$DeleteTime = "-129600"  #経過「分」を指定。1 = 1min。

### 作成日から $DeleteTime 分経過したものを削除。
foreach ($DelFile in (Get-ChildItem C:\10.Robocopy-Log\履歴\* | Where-Object {$_.CreationTime -lt (Get-Date).AddMinutes($DeleteTime)})) {Remove-Item -recurse $DelFile}


### 作成日から $DeleteTime 分経過したものを削除。エラーが出れば、ファイルに出力。
### foreach ($DelFile in (Get-ChildItem C:\10.Robocopy-Log\履歴\* | Where-Object {$_.CreationTime -lt (Get-Date).AddMinutes($DeleteTime)})) {Remove-Item -recurse $DelFile}

 

 このスクリプトがOS起動時に実行されるよう、タスクマネージャに登録します。 ( 「003.robocopy.logのメンテナンス」 )

 

「全般」タブ。

 

「トリガー」の設定。 3分の遅延起動です。(この処理が終わってから、robocopyのタスク -5分の遅延起動- を実行)

 

「操作」タブです。 以下のコマンドを登録。

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command C:\01.Script_for_PowerShell\001.Del_robocopy-log.ps1

 

「条件」タブです。

 

「設定」タブ。

 

 これで、毎日の再起動のタイミングで ログファイルも処理されます。

 

 今回の備忘録は以上です。

 

 

iPhoneをUSB経由でテザリングして複数PCをネットに接続

 インターネット接続用の回線が(諸々の都合で)廃止となってしまったので、代わりにiPhone でテザリングして、自分の作業用PCやその他のPCをインターネットに接続できるようにしてみたときの備忘録です。

 

【使用機器】

  • iPhone 5s (iOS 9.2、 docomo / Xiパケ・ホーダイ for iPhone)
  • Windows 7 Professional
  • HUB , その他PC

 構成はこんなです。 (PC達にWiFiがないので、Windows 7 をブリッジにして有線でつなぎます)

 なくなってしまった有線インターネット回線は、もともと Linux や Windows など諸々の検証用に使用していたので、今回も自分の作業用PC(Windows 7)のみならず、他のマシン達も(Windows 7経由で)同時にインターネットに接続できるようにしてみます。

  携帯電話事業者によって、テザリング できる / できない は変わってきますので、そこらへんについてはご利用のキャリアでのご確認を。。。
 私の場合(docomo)では、特に追加契約などは不要でテザリングできました。
 ・docomo iPhone テザリングの利用方法

 

 作業のおおまかな流れとしては、

  1.  USB接続の iPhone でテザリングできるように、 Windows 7 にデバイスドライバなどを入れる。
  2.  Windows 7 の USBポート に iPhone を繋いでインターネットに接続。
  3.  Windows 7 の有線LANにHUB(とか)を繋ぐ。
  4.  Windows 7 で 有線LAN と iPhone側の接続をブリッジする。

 こんな感じです。
 特段むずかしい事もないので、早速やってみましょう。

 

§1. デバイスドライバの導入

 Windows 用の iPhone ドライバは、iTunes のインストーラーに含まれています。
 iTunes をまるっとインストールするのが手っ取り早いのですが、iTunes には Bojour などどいった他のアプリも同梱されています。
 今回は作業用PCということもあり、極力不要なアプリは除外したいので、必要最低限なもののみインストールします。

【iPhone USB テザリング】
 ・Apple のサポートコミュニティ(英語) : https://discussions.apple.com/thread/6829407?start=0&tstart=0
・ASCII.jp の記事 : http://ascii.jp/elem/000/000/918/918548/

 

 上記サイトを参考に、iTunes インストーラーをアーカイバで展開(解凍) -> 各インストールコンポーネント(*.msi)を抽出、下記の2つを導入、でUSB経由でiPhoneテザリングするための最低限必要な機能が実装できます。

① AppleApplicationSupport.msi
② AppleMobileDeviceSupport.msi

(インストールの順番は、iTunes 削除 https://support.apple.com/ja-jp/HT204275 と逆 ~ 上記① -> ②の順番 ~ で行います)

 ちなみに、Mobile Device Support (← Windows のサービスとしてインストールされる)だけでも動くのでは、と思って試したのですが、 Application Support がないとサービスの起動ができませんでした。。。

 

 

  • iTunes のダウンロード

 Apple のサイトから iTunes のインストーラーをダウンロードして、展開(解凍)します。

 ダウンロードサイト(日本):  http://www.apple.com/jp/itunes/download 

 

 ダウンロードしたインストーラーを解凍したところ。(今回は Lhaplus http://www7a.biglobe.ne.jp/~schezo/  を使用)

 上記のなかから、

① AppleApplicationSupport.msi
② AppleMobileDeviceSupport.msi

 ①、②の順番にインストール。 (インストールのスクリーンショットは割愛しますが、インストーラーの指示どおりで特に難しくないです)

 

§ 2. iPhone を USB で接続

 まず、iPhone側 で、ホーム画面から 「設定」 を押して > 「インターネット共有」 を押して > インターネット共有設定をオンに。(スクリーンショットはないです・・・)

 続いて、Windows 7 マシンのUSBポートに iPhone を接続します。

 すると、Windowsのネットワークアダプタに ↓ このように、「Apple Mobile Device Ethernet」(画面内の下から2番目) が追加されます。

 私の環境だと、iPhoneは 「ローカルエリア接続2」にマッピングされました。

 このPC 1台だけをネット接続するのであれば、この時点で 「ローカルエリア接続2」 を 「DHCP」 に設定すれば、インターネットに疎通できるようになります。

 

【iPhone から配布されるIPアドレス】
Windowsで ipconfig して確認したところ、

IPv4 アドレス . . . . . . . . . . : 172.20.10.4(優先)
サブネット マスク . . . . . . . . : 255.255.255.240
リース取得. . . . . . . . . . . . : 2016年1月14日 10:41:08
リースの有効期限. . . . . . . . . : 2016年1月15日 10:26:44
デフォルト ゲートウェイ . . . . . : 172.20.10.1
DHCP サーバー . . . . . . . . . . : 172.20.10.1
DNS サーバー. . . . . . . . . . . : 172.20.10.1

でした。

iPhone からは、USBインターフェース(ローカルエリア接続2)に /28 (255.255.255.240)のネットワークが展開されていますので、iPhone が使う .1 を除き、第4オクテットが .2  ~  .14  を端末側で利用できますね。
端末側では DHCP を使用しなくとも、第4オクテットが .2  ~  .14 を固定で割り振るのもアリですね。

 

 

§ 3. WIndows 7 の有線LAN側にHUB(とか)を接続

 Windows 7 の有線LAN側にHUB(とか)を接続、その先にインターネットに接続したいマシン達を接続します。 

 各マシンのIPアドレスは、DHCPにするか、固定でもよいかと。
(DHCPと固定を併用する場合は、DHCPリースされてないIPを固定に割り当てないと)

 DHCPを使用する場合は、最大 13台が同時接続できる・・・かな? (検証していないのですが、.2 から .14 までがリースされるとして)

 NATを併用すれば、もっと接続台数は増やせますね。

 多くの携帯電話会社では 通信量制限があるので、台数が多いとすぐ上限を超えてしまいそうですが・・・
 また、従量課金の場合はこの方法はキケンですね・・・

 

 

§ 4. Windows 7 で 有線LAN と iPhone側の接続をブリッジする

 Windows 7 の有線LAN と iPhone テザリング接続を間をブリッジ接続します。

 コントロールパネルからネットワーク接続を開き、

・有線LAN : ローカルエリア接続(Marvell Yukon 88E8072)
・iPhone テザリング : ローカルエリア接続2(Apple Mobile Device Ethernet)

を選択、右クリックして 「ブリッジ接続」 を選択します。

 

 しばらくすると、下記のように 「ネットワーク ブリッジ」 が作成されます。

 

 「ネットワークブリッジ」 のプロパティを開くと、アダプターの欄に先ほど選択していた  「ローカルエリア接続」 と 「ローカルエリア接続2」 が選択(チェック)されているはずです。

  「ネットワークブリッジ」 のIPアドレスは DHCP で取得にしておきます。 

 

 

 これで、Windows 7 と その先につながっているマシン達が、iPhone 経由でインターネットと疎通できます。
 iPhone の USB インターフェース側に展開される IPアドレス(サブネット)は上記に記したように /28 (iPhone も含めて、ホスト部 は14台ぶん) のサブネットなので、DHCPでiPhoneからIPアドレスをもらっても、固定IPを別途割り振っても良いかと思います。
 携帯電話の通信量制限を気にしなくても良い環境であれば、Windows 7 の有線LAN側に NAT できる機器を置けば、何台でも同時接続可能にすることもできると思います。

 

 今回の備忘録は以上です。

 

 

.vimrc for me

 自分用の .vimrc をいつでも他の環境にコピる用の備忘録なので、特段解説がないですヨ。 ^^;

ペーストする際には、「:set paste」 を忘れずに!

 

" vi互換スイッチの設定。この定義は vimrc の先頭に記述しなければならない。(compatible: vi互換を優先し、vimの機能は制限される。 / nocompatible: vimの機能を有効にする。)
"
set nocompatible

" 現在のカーソル位置(行、桁)をVimウィンドウの右下に常に表示する。(有効:ruler/無効:noruler)
set ruler

" カラースキーマを設定 (使えるカラーはこちら(at CentOS 7) >>> /usr/share/vim/vim74/colors)
colorscheme desert

" 検索パターンにおいて大文字と小文字を区別しない。(有効:ignorecase/無効:noignorecase)
set noignorecase

" 検索パターンが大文字を含んでいたらオプション 'ignorecase' を上書きする。(有効:smartcase/無効:nosmartcase)
set smartcase

" オンのときは、ウィンドウの幅より長い行は折り返され、次の行に続けて表示される。(有効:wrap/無効:nowrap)
set wrap

" 入力されているテキストの最大幅。行がそれより長くなると、この幅を超えないように空白の後で改行される。値を 0 に設定すると無 効になる。
set textwidth=0
set formatoptions=q

" 検索がファイル末尾まで進んだら、ファイル先頭から再び検索する。(有効:wrapscan/無効:nowrapscan)
set wrapscan

" オンのとき、コマンドライン補完が拡張モードで行われる。(有効:wildmenu/無効:nowildmenu)
set wildmenu

" 閉じ括弧が入力されたとき、対応する開き括弧にわずかの間ジャンプする。(有効:showmatch/無効:noshowmatch)
set showmatch

" 毎行の前に行番号を表示する。(有効:number/無効:nonumber)
set number
"
" タブ文字を CTRL-I で表示し、行末に $ で表示する。(有効:list/無効:nolist)
set list

" Listモード (訳注: オプション 'list' がオンのとき) に使われる文字を設定する。
set listchars=tab:>-,extends:<,trail:-,eol:<

" 最下ウィンドウにいつステータス行が表示されるかを設定する。
"       0: 全く表示しない
"       1: ウィンドウの数が2以上のときのみ表示
"       2: 常に表示
set laststatus=2

" コマンド (の一部) を画面の最下行に表示する。(有効:showcmd/無効:noshowcmd)
set showcmd

" ファイルを上書きする前にバックアップを作る。書き込みが成功してもバックアップはそのまま取っておく。(有効:backup/無効:nobackup)
set nobackup

" ファイルの上書きの前にバックアップを作る。オプション 'backup' がオンでない限り、バックアップは上書きに成功した後削除される。(有効:writebackup/無効:nowritebackup)
set writebackup

 

 

 

Hyper-V Server 2012 R2 その②

 Microsoft の Hyper-V Server 2012 R2  上で 、ゲストのLinux ( CentOS6 ) のレプリケーションとフェールオーバーを試してみました。 の続編になります。

 前回 でHyper-V Server の構築を実施しましたが、まず、訂正がひとつあります  ><

 Workgroup 環境で試していたのですが、Active Directry 環境に変更しました。

 理由は、仮想マシンを レプリケーションする際に Hyper-V サーバ間で認証(Kerberos 認証 or サーバ証明書を使った認証)が必要になるのですが、

  1.  Kerberos 認証は Active DIrectory 環境のみで使用可能。 (Workgroup ではサーバー証明書を使った認証のみ可能)
  2.  サーバー証明書は作成が面倒。 (X509v3 デジタル証明書が必要。 Windowsで作成(makecert.exe)する場合、 Windows ソフトウェア開発キット(SDK)の入手が必要)
  3.  他にも、Workgroup 環境の場合、 Hyper-V Server をリモートで管理するためにあれこれ設定(Windows Filrewall に穴あけしたりとか)しないといけない。

 といった事が作業中にわかってきました。。。 
 「Workgroup環境で手っ取り早く」 と思っていたのですが、 Active Directory 環境のほうがはるかに早く簡単に検証できそうだ、ということで、環境を変更しております。 ><

 

(2016.1.8 追記)
 AD環境下でも、リモートから 「コンピュータの管理」 をするために、 Windowsファイアウォールに MMCスナップイン の接続許可をする必要があることがわかったので、Hyper-Vサーバー と Hyper-Vマネージャの双方に、下記を設定しました。

PS C:\> Enable-NetFirewallRule -DisplayGroup "リモート サービス管理"
PS C:\> Enable-NetFirewallRule -DisplayGroup "リモート ボリューム管理"
PS C:\> Enable-NetFirewallRule -DisplayGroup "リモート イベントのログ管理"

 

 

 では、今回は ゲストOS (Linux/CentOS 6)の導入と、 レプリケーションと フェイルオーバーについての備忘録です。

 (参考サイト①:http://www.slideshare.net/NaokiAbe/hyper-v-24568782

 (参考サイト②:http://www.slideshare.net/junichia/hyperv-windows-powershell

 

 おさらいですが、構成はこんなです。

  • Hyper-V Server が 2台、L2SW経由で 1Gbps で接続。
  • 管理用に別途 Hyper-V Manager を用意。 (← 設定は割愛しますが、この Windows Server 2012 R2 に Activi Directory ドメインサービス の役割を追加、Hyper-V Server をそのドメインに参加させました)
  • ゲストに CentOS 6 を載せて、レプリケーション / フェールオーバーの確認をしてみる。(←これが今回の作業)

 

§ 1. 仮想スイッチの設定

 仮想マシンが外部ネットワークに接続するために、まずは仮想スイッチを設定します。 
 (後から作成してもよいのですが、仮想マシン作成中に 「NIC と仮想スイッチの紐付けドウスル?」 って聞かれるので、先に作ってしまいましょう。)

 Hyper-V Manager (の左側ペイン)から HV001 を選択、右クリックして 「仮想スイッチマネージャ」 を起動します。 (もしくは 右側 「操作」 ペインの仮想スイッチマネージャをクリック)

 

 仮想スイッチマネージャーが起動します。

 「どの種類の仮想スイッチを作成しますか」 で 「外部」 を選択し、「仮想スイッチの作成」 をクリックします。

 

 新しい仮想スイッチのプロパティを設定していきます。

 今回は、名前を 「VSW-001_HV001」 としました。 (HV002 側には 「VSW-001_HV002」 を作成)

 接続先の種類で 「外部ネットワーク」 を選択します。 プルダウンリストから NIC ( 今回はハード側のNIC が 1枚なので、プルダウン選択肢も 1つです) を選択。 

 「適用」ボタンをクリックして仮想スイッチを作成します。

 ネットワーク切断の警告が出ますが、 「はい」 で続行。

 

 仮想スイッチが作成されました。

 

 HV002 側にも同様に 仮想スイッチを作成しておきます。

 

 

§ 2. 仮想マシンの作成 と OSインストール

§2-1. 仮想マシンの作成

 次は仮想マシンの作成です。

 Hyper-V Manager の左側ペインで HV001 を選択、右クリックして 「新規」 > 「仮想マシン」 を選択します。 (右側の操作ペイン、もしくは 上部の「操作」メニューからでも)

 

 仮想マシンの新規作成ウィザードが起動します。 「次へ」 で先に進みます。

 

 仮想マシンの名前と保存場所を設定します。  今回は名前を 「CentOS6_001」 とします。 (保存場所のパスは特に変更せず)

 

 仮想マシンの世代を設定します。 今回は第一世代で。 (第二世代に対応するOSは  technet に記載があります)

 

 メモリの割り当てを行います。 今回は、起動メモリ 512MB、「この仮想マシンに動的メモリを使用します」 にチェックを入れて、「次へ」。

 

 ネットワークの設定です。 先ほど作成した仮想スイッチ 「VSW-001_HV001」 をプルダウンから選択。

 

 仮想ハードディスクの設定です。 今回は 「仮想ハードディスクを作成する」 (デフォルトのまま)で、サイズを 128GB -> 32GB に変更。

 

 インストールオプションの選択。 今回は 「後でオペレーティングシステムをインストールする」 を選択して、「次へ」。

 

 「完了」を押して仮想マシンを作成します。

 

 HV001 上に仮想マシンができました!

 

 ここで、仮想マシンのMACアドレスを固定に変更しておきます。 (規定値では動的 MACアドレス)

 今回は、仮想マシンをレプリケーションするために、MACアドレスを固定にします。
 カーネル 2.6.1.3 以降の Linux は デバイス管理に udev (wikipedia) を使用しているため、MACアドレスが変わると違うデバイスとして認識されて(これまで eth0 だったのが eth 1 とか) ネットワークが使用できなくなる為、仮想マシンのMACアドレスを固定します。

 

  • 仮想マシンを右クリック > 「設定」 を選択します。
    ポップアップした設定画面 左ペインの 「ネットワークアダプター」 > 「高度な機能」を選択、「MAC アドレス」 を 「静的」 にチェックを入れます。

 【MACアドレスの固定について】
 今回は、仮想スイッチが動的に提供するMACアドレスの範囲内から、最初の 10個 を固定用に使うこととしました。(00:15:5D:0A:E6:00 ~ 09 までの 10個)
 ので、↓ 仮想スイッチマネージャで、このMACを除外(00:15:5D:0A:E6:10 から提供開始)にしています。

 MACアドレスは本来一意であることが期待されており、特に同一サブネット内でMACアドレスが重複すると正常に通信できません。
 仮想環境の場合、特に同系統のハイパーバイザを複数使用する場合は、 仮想マシンに提供される MAC アドレスが重複する可能性を考慮する必要があります。
 今回のような小規模な仮想環境であればあまり気にする必要もありませんが、ある程度規模が大きくなる場合、MACアドレスを自動で提供する or 固定にする(払い出し管理やベンダコードをどうするか) 、といった検討が必要ですね。。

 

 

§ 2-2. OSインストール

 作成した仮想マシンに OS (今回は CentOS 6 (minimal))  をインストールします。
 (CentOS のインストーラーのダウンロードは こちら から。 今回は 「CentOS-6.7-x86_64-minimal.iso」 です)

 

 ダウンロードした *.iso を Hyper-V Server (HV001)から参照できる場所におきます。 (ローカルフォルダか共有フォルダ)
 今回は HV001 のローカルフォルダ( C:\99.Work\ )に設置。
(HV001 にはブラウザーがないので、別のPCで *iso をダウンロード、USBメモリ経由で HV001 にコピーしました。今回はやってませんが、共有フォルダ(CIFS)に *.iso を置いて、リモート参照も可能です)

PS C:\> mkdir C:\99.Work
PS C:\> cp D:\CentOS-6.7-x86_64-minimal.iso C:\99.Work

 

 仮想マシンの DVDドライブに、 .iso ファイルをマウントします。
Hyper-V Manager で仮想マシン(CnetOS6_001)を右クリックして、「設定」 を選択。

 

 設定画面 左ペインの ハードウェアから、 IDEコントローラー1 > DVDドライブ を選択します。 右ペインに DVDドライブ の設定が出るので、メディアの 「イメージファイル」 を選択。

 参照ボタンをクリックし、<HV001のIP> -> ローカルディスク > 99.Work と辿っていき、.iso を選択して 「開く」 をクリックします。

 

 仮想マシンの DVDドライブに CentOS6 の .iso ファイルがマウントされました。

 「OK」 を押して画面を閉じます。

 

 Hyper-V Manager 内の CentOS6_001 を右クリック > 接続 をします。

 

 仮想マシンを起動します。 (画面 左上の 起動ボタン(緑色)を押すか、 操作 > 起動 をクリック)

 

 仮想マシンが(DVDから)起動しますので、 CentOS をインストールします。 (インストールについては割愛します)

 OS のインストールが終わったら、IPアドレス等の設定を実施しておきます。(こちらについても詳細は割愛しますが、だいたいこんな設定です -> 以前の備忘録(Linuxサーバ初期設定))

 

 

§ 3. レプリケーション

 HV001 上の 仮想マシン(CentOS6_001) を HV002にレプリケーションしてみます。

 レプリケーションを行うには、① Hyper-V Server 側を設定、② 仮想マシン毎にレプリケーションを設定、 が必要になります。

 

§ 3-1. Hyper-V Server 側の設定

 Hyper-V Manager で 「HV001」 を選択、右クリックして 「Hyper-V の設定」 を起動します。 (下図では HV002 を選択してますが、HV001 / 002 ともに同じ設定が必要になるので、どちらからでも構いません)

 

 Hyper-V の設定画面 左側ペインで 「サーバー」 > 「レプリケーションの構成」 を選択します。
 右側ペインに 「レプリケーションの構成」 が出ますでの、「レプリカサーバーとしてこのコンピュータを有効にする」 にチェックを入れます。
 続いて、「認証とポート」 から 「Kerberos を使用する」 にチェックを入れます。 (認証は必須。 Kerberos と 証明書の併用も可能)

 画面下方の 「承認と記憶域」 は 「認証されたすべてのサーバーからのレプリケーションを許可する」 にします。 (ファイルの格納パスも規定値)

 「適用」 をクリックして設定完了です。

 

 適用したら次のようなポップアップが。。。

 Windows Firewall に穴をあけないとです。(すでに許可している場合でも、このメッセージは表示されます)  

 

 Hyper-V Server (HV001 / HV002 )の Windows Firewall で tcp/80 を許可する設定します。 (リモートからの設定が面倒なので、それぞれの ローカルコンソールから設定) 

 変更操作は PowerShell のコマンドレットで行います。 まずは  cmd.exe を PowerShell に。

C:\> powershell
Windows PowerShell
Copyright (C) 2014 Microsoft Corporation. All rights reserved.

PS c:\> 

 

 現在の Windows Firewall の受信規則を確認。

PS c:\> Get-NetFirewallRule -Direction Inbound

<大量に出力があります>

 

 Hyper-V レプリカに関する設定の確認。

PS c:\> Get-NetFirewallRule -Direction Inbound -Description *レプリカ*


Name                  : VIRT-HVRHTTPL-In-TCP-NoScope
DisplayName           : Hyper-V レプリカ HTTP リスナー (TCP 受信)
Description           : レプリケーションの HTTP 接続を受信する Hyper-V レプリカ
                         リスナーの受信規則です。[TCP]
DisplayGroup          : Hyper-V レプリカ HTTP
Group                 : @%systemroot%\system32\vmms.exe,-251
Enabled               : False
Profile               : Any
Platform              : {}
Direction             : Inbound
Action                : Allow
EdgeTraversalPolicy   : Block
LooseSourceMapping    : False
LocalOnlyMapping      : False
Owner                 :
PrimaryStatus         : OK
Status                : 規則は、ストアから正常に解析されました。 (65536)
EnforcementStatus     : NotApplicable
PolicyStoreSource     : PersistentStore
PolicyStoreSourceType : Local

Name                  : VIRT-HVRHTTPSL-In-TCP-NoScope
DisplayName           : Hyper-V レプリカ HTTPS リスナー (TCP 受信)
Description           : レプリケーションの HTTPS 接続を受信する Hyper-V レプリ
                        カ リスナーの受信規則です。[TCP]
DisplayGroup          : Hyper-V レプリカ HTTPS
Group                 : @%systemroot%\system32\vmms.exe,-253
Enabled               : False
Profile               : Any
Platform              : {}
Direction             : Inbound
Action                : Allow
EdgeTraversalPolicy   : Block
LooseSourceMapping    : False
LocalOnlyMapping      : False
Owner                 :
PrimaryStatus         : OK
Status                : 規則は、ストアから正常に解析されました。 (65536)
EnforcementStatus     : NotApplicable
PolicyStoreSource     : PersistentStore
PolicyStoreSourceType : Local

PS C:\>

 

 HTTPリスナー が false (無効) になっているので、True (有効) にします。  (サーバー証明書を使用するのであれば、HTTPS も true に)

PS C:\> Set-NetFirewallRule -Name "VIRT-HVRHTTPL-In-TCP-NoScope" -Enable True

 

 Hyper-V Server 2台(HV001 / HV002) ともに、上記の設定を行います。

 

 

§ 3-2. 仮想マシン側の設定

 次に、 Hyver-V Manager からHV001 上の CentOS6_001 を選び、右クリック > 「レプリケーションを有効にする」 を選択します。

 

 レプリケーション ウィザードが開始されます。

 

 レプリカサーバーの指定。  「HV002」 を指定して、「次へ」。

 

 接続パラメータの指定。 ここは特に変更せず 「次へ」。

 

 レプリケーション VHD の選択。 ここも規定値のまま 「次へ」。

 

 レプリケーションの頻度。 とりあえず規定値の 「5分」にしておきます。 (30秒、5分、15分、の選択が可能)

 

 追加の回復ポイント。 こちらも規定値(最新のだけ)にしておきます。

 

 初期レプリケーションの方法。 ネットワーク経由ですぐに。

 

 「完了」をクリックしてウィザード終了です。

 

 レプリケーションが正常に有効になりました!

 

 初期コピーが完了後、HV002 上に オフ状態の CentOS6_001 が現れます。

 (検証環境の問題かもしれませんが) 作成されたレプリカ仮想マシンにはネットワークアダプタが接続されていませんでしたので、手動で接続を行っています。

 なお、MACアドレスはレプリカ元と同じ静的になってました。

 

 

 レプリケーションの状況は、仮想マシンを右クリック > 「レプリケーション」 > 「レプリケーションの正常性の表示」 で確認できます。

 

 

§ 4. フェールオーバー

 Hyper-V では 3種類のフェールオーバーがあります。

フェールオーバーの種類 説明 操作するサーバー
テストフェールオーバー

実際にフェールオーバーさせることなく、レプリカ仮想マシンの動作確認が行える。 (規定ではネットワークに未接続)

 レプリカサーバー
計画フェールオーバー

 仮想マシンをプライマリサイトからレプリカサイトに計画的に移動する機能。 

完全なレプリケートが行えるが、移動する仮想マシンは Power OFF にする必要がある。

 プライマリサーバー
フェールオーバー

プライマリサイトの障害時に使用。

強制的にレプリカ側の仮想マシンを回復ポイントから起動する。

 レプリカサーバー

 

§ 4-1. テストフェールオーバー

 レプリカサーバー上に一時的な仮想マシンが (指定した回復ポイントから Power OFF の状態で) 作成されます。 
 PowerON することで、実際にフェールオーバーさせることなく、レプリカ仮想マシンの稼働確認が行えます。   

 ※ 規定ではネットワーク接続はなし(スタンドアローン)。
 ※ テストフェールオーバーを終了すると、一時仮想マシンは削除されます。

 

 HV002 上の CentOS6_001 を右クリック > 「レプリケーション」 > 「テストフェールオーバー」 を選択。

 

 テストフェールオーバーをクリック。

 

 HV002 上に 「CentOS6_001 – テスト」 の名称で仮想マシンが作成されます。

 

 起動してみます。

 

 ネットワークアダプターが接続されていない事を除き、元の仮想マシンと同一です。(のはず)

 

 このテスト仮想マシンで、例えば仮想マシンが開始・一時停止・停止できることや、アプリケーションの起動・稼働確認等が行えます。
(IPアドレスが Duplicate しないように再設定すれば、実際にネットワークを接続してのテストもできます)

 テストが終了したら、HV002 上の CentOS6_001 を右クリック > 「レプリケーション」 > 「テストフェールオーバーの中止」 を選択。

 「テストフェールオーバーの中止」 をクリックすると、一時仮想マシンが削除されます。

 

 

§ 4-2.  計画フェールオーバー

 仮想マシンを計画的にレプリカサイトに移動させる機能です。

 完全なレプリカを作成できますが、仮想マシンを停止する必要があります。

 

 停止済みのプライマリサイトの仮想マシン (今回であれば HV001 上の CentOS6_001) を右クリック > 「レプリケーション」 > 「計画フェールオーバー」 を選択します。

 

 フェールオーバーをクリックします。
 (規定では 「フェールオーバー後に仮想マシンを起動」 するにチェックが入ってますが、外してももちろん構いません。 その場合は後で手動起動。  「フェールオーバー後に・・・反転する」 も、規定ではチェックなしですが、ここで有効にしてもよいですし、あとからでも有効にできます)

 

 前提条件が満たされていれば、下記のように各フェーズが成功して、フェールオーバーが完了します。

 

 HV002 上でレプリカ仮想マシンが稼働します。

 レプリカ仮想マシンの作成時にネットワークを接続していますが、念のため、仮想マシンのネットワーク接続については、もう一度確認したほうがよいでしょう。

 

 

 今回はフェールオーバー実行時にレプリケーションを反転させましたので、レプリカ起動時とともに HV002 から HV001 にレプリケーションが行われています。

 

 HV001 側に戻すには、HV002 上の仮想マシンを停止(シャットダウン)、右クリック > 「レプリケーション」 > 「計画フェールオーバー」 を実行します。

 

 

§ 4-3. フェールオーバー (とフェールバック)

 フェールオーバーは、仮想マシンを強制的にレプリカサーバーに移す機能です。

 プライマリサイトの障害を前提に稼働させる機能ですので、まずはプライマリの仮想マシンを(障害のつもりで)停止して、試してみます。(プライマリ仮想マシンの起動中にフェールオーバーさせたらどうなるかは、この後で試してみたいと思います。)

 

 

  プライマリサイト、レプリカサイトの仮想マシンともに停止状態になっている事を確認し、レプリカサイト(HV002)上の仮想マシンを右クリック >  「レプリケーション」 > 「フェールオーバー」 を選択。

 

 回復ポイントをプルダウンから選択し、「フェールオーバー」 をクリック。

 

 レプリカ側(今回であれば HV002上 )で仮想マシンが稼働しました。 

 回復ポイントが作成されたタイミング次第ですが、「計画フェールオーバー」 や 仮想マシンの移動(ライブマイグレーション) とは違い、最新の状態ではない可能性がありますので、注意が必要ですね。
 ・・・とはいっても、どうしようもないですが。。。

 

 ここで、仮想マシンのレプリケーションの状態を見てみる(右クリック > 「レプリケーション」 > 「レプリケーションの正常性の表示」)と、 フェールオーバー前と変わっていない(HV001 -> HV002 へレプリケーションが継続されている) ことがわかります。

  • HV002 上の仮想マシン(CentOS6_001)で確認したところ。

 

  • HV001 上の仮想マシンで確認したところ。

 

 これだとまずいので、(HV001 が障害から復旧したことを前提に) レプリケーションの方向を 反転(HV002 から HV001 に複製)させます。

 

  • HV002 上の仮想マシンを右クリック > 「レプリケーション」 > 「レプリケーションの反転」 を選択。

 

 ウィザードが開始されます。 指示にしたがってレプリケーションを反転(HV002 から HV001 に向けてレプリケート)します。

 

 レプリカサーバには 「HV001 」 を。

 

 これで、プライマリサイトがひっくり返った以外は、元通りになりました。

 

 最後にフェールバック(プライマリサイトを HV001 に戻す)です。
 (このままでもいいんですが・・・)

  「計画フェールオーバー」 、「フェールオーバー」 のどちらでもフェールバックできますが、仮想マシンの同期などを考慮すると、「計画フェールオーバー」 で戻してあげるのがいいはず。
 (これまでのと被るので、操作記録はなしです)

 

 

【HV001 上の仮想マシンが起動している状態で、フェールオーバーを実行してみました】

 最後に。
 操作間違いや、実際にこういった類の障害が発生しないとも限りませんので、プライマリ仮想マシン(HV001)が起動している状態で、フェールオーバーを行うとどうなるのか、試してみました。

 結論から言うと、フェールオーバー実行 > プライマリサイトの仮想マシンが(自動で)一時停止し、HV001 -> HV002 のレプリカも停止しました。

  • HV001 上の仮想マシン: (自動で)一時停止
  • HV002 上の仮想マシン: 稼働
  • レプリケーション: 停止

 なのですが、おそらく、自動停止するまでの時間 = レプリケーション間隔(今回だと 5分)、のように見受けられます。
 HV001 上の仮想マシンが自動停止するまでの間、IP アドレス/MACアドレスが Duplicate になってしまうので、通信が混乱します(するはず)。
 ですので、プライマリ側は やはり事前に停止しておくのが無難ですね。。。 (実際の障害ではそんな余地もないかもしれませんが)

 この検証ですが、一回目は上記のような状況だったのですが、次に同じことをしたところ、下記のように電源OFFしろと怒られました。。。

 

 では、 HV001 のLANケーブルを抜いて、HV002 にフェールオーバーさせてから、HV001 が復帰(LANケーブルを挿す)したらどうなるだろう、と思って試したところ、

 最初の検証と同じ状態になりました。(HV001 上の仮想マシンが自動で一時停止、レプリケーションも停止)

 ちゃんと整合性とるような仕組みが実装されるようです。。。

 

 

 以上で、今回の備忘録は終了です。
 無料でここまでできるとは、Hyper-V のレプリカ機能、かなりイイですね。 別サブネットでもレプリカ動かせるそうなので(今回は検証してませんが)DRにもってこいかも。

 Hyper-V には、今回試してみたレプリケーション以外にも、ライブマイグレーション(仮想マシンが起動した状態で、他の Hyper-V Server に移動する) もできますので、レプリケーションとの併用も気になるところです。 こちらについては、また別の機会にでも備忘録したいと思います。