タイガー!タイガー!じれったいぞー!(SE編)

AS400, Java, JavaEE, JSF等の開発、習慣など。日々の気づきをまとめたブログ(備忘録)

【Docker1.7】Nginxコンテナ生成+起動テスト

前回のブログで構築したVagrant(CentOS7.1)をホストOSにして、Nginxコンテナを生成・起動してみたいと思います。

tigertaizo.hatenablog.com

vagrantユーザをdockerグループに所属させる

vagrantをdockerグループに加えることで、vagrantユーザーがdockerコマンドを実行できるようになります。

$ sudo docker images
Get http:///var/run/docker.sock/v1.19/images/json: dial unix /var/run/docker.sock: no such file
 or directory. Are you trying to connect to a TLS-enabled daemon without TLS?
 
$ sudo groupadd docker
$ sudo usermod -g docker vagrant
$ sudo /bin/systemctl restart docker.service
 
$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

Docker HubからNginx(Offical) Dockerイメージを取得

  • Dockerイメージとは、OS環境とアプリケーションを含んだイメージで、これからDockerコンテナの上で仮想的に起動させるものになります。
  • Docker Hubとは、Dockerイメージを共有するためのWebサービス
  • まずは、DockerHubサービスにある、OfficalなNginxイメージを取得してみました(docker pullコマンドを使用)。
$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

$ sudo docker pull nginx
latest: Pulling from docker.io/nginx
e2a4fb18da48: Pull complete
58016a5acc80: Pull complete
657abfa43d82: Pull complete
dcb2fe003d16: Pull complete
c79a417d7c6f: Pull complete
abb90243122c: Pull complete
d6137c9e2964: Pull complete
85e566ddc7ef: Pull complete
69f100eb42b5: Pull complete
cd720b803060: Pull complete
7cc81e9a118a: Pull complete
5c82215b03d1: Pull complete
docker.io/nginx:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:44e64351e39e67b07799a1ce448cef33aaa88daedbbb5f427fac4eeafe3e148f
Status: Downloaded newer image for docker.io/nginx:latest

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker.io/nginx     latest              5c82215b03d1        4 days ago          132.8 MB

なお、Dockerイメージの取得については、下記のサイトが参考になりました。

thinkit.co.jp

Case1: nginx基本起動

  • 次に、先に取得したnginxイメージをdokcerコンテナの上で起動させてみます。
  • 起動させるdockerコンテナは、名前を付けたほうがいいようなので、起動時に定義します(--name)。
  • オプションdを付けることで、コンテナをバックグランドで実行させます。
  • さらに、ホストOS側のポートと、Dockerコンテナ側のポート番号の紐づけが必要なため、オプションpで80番通しを結び付けます。
$ sudo docker run -d --name nginxTest -p 80:80 nginx
8782411bcb5a89d7429e39af6e44d48809ad5a4b9667bc45a2e1382187c5ee4f
Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.

「Usage of loopback devices is~」という警告がでいますが、よくわかっていません(今回はスルー)。
WindowsPCからブラウザで、「http://192.168.33.10/」へアクセスすると、下記のとおり、nginxが起動できていることを確認できました!

f:id:no14141:20151018161848j:plain

Case2: nginx起動(設定ファイル、htmlドキュメント、ログをホスト側と共有する)

  • nginx基本起動では、自分で作成したhtmlを公開できないので、docker run実行時に、ホストOSとコンテナOSとでヴォリューム共有させます。

その前に、設定ファイル、htmlドキュメント、ログを格納するディレクトリをホストOS上に作成しておきます。さらに、Case1のDockerコンテナにあるファイルをホスト側にコピーさせました。

$ sudo mkdir /opt/nginxTest
$ sudo mkdir /opt/nginxTest/html
$ sudo mkdir /opt/nginxTest/conf
$ sudo mkdir /opt/nginxTest/logs

$ sudo docker cp nginxTest:/etc/nginx/nginx.conf /opt/nginxTest/conf/
$ sudo docker cp nginxTest:/usr/share/nginx/html/index.html /opt/nginxTest/html/
$ sudo docker cp nginxTest:/usr/share/nginx/html/50x.html /opt/nginxTest/html/

さらに、自分で作成したhtmlファイルをホスト側に設置しておきます。

  • /opt/nginxTest/html/test01.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>テスト1</title>
</head>
<body>
<h1>テスト1</h1>
<p>...from DockerTest2</p>
</body>
</html>

さあ、docker runで起動させます。ヴォリューム共有は、オプションvで。今回は、ポートも変更してみました!

$ sudo docker run -d --name nginxTest2 -v /opt/nginxTest/html:/usr/share/nginx/html -v /opt/nginxTest/conf/nginx.conf:/etc/nginx/nginx.conf -v /opt/nginxTest/logs:/var/log/nginx/ -p 8001:80 nginx

f2f8592d06d476fde93ad235d9fb13799a77734d31148e5893b89697cefadd7b
Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.

いい感じです!  ホストOS側のディレクトリに新しいファイルを追加しても、ただちにdockerコンテナのnginxからアクセス可能になります。

f:id:no14141:20151018172239j:plain

アクセスした後、ログファイルも念のため、確認しましたが、きちんとホストOS側のファイルにログが吐き出されているようです!
(ただし、タイムスタンプが標準時間になっていますが・・・)

$ cat /opt/nginxTest/logs/access.log
192.168.33.1 - - [18/Oct/2015:09:24:40 +0000] "GET /test01.html HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0" "-"
192.168.33.1 - - [18/Oct/2015:09:32:46 +0000] "GET /test01.html HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0" "-"
192.168.33.1 - - [18/Oct/2015:09:33:41 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0" "-"
追記:Dockerコンテナのタイムゾーンについて

qiita.com

上記を参考にさせてもらって、コンテナ生成時に、タイムゾーンをホストOS側と共有させたところ、うまくいきました!

$ sudo docker run -d --name nginxTest2 \
 -v /opt/nginxTest/html:/usr/share/nginx/html \
 -v /opt/nginxTest/conf/nginx.conf:/etc/nginx/nginx.conf \
 -v /opt/nginxTest/logs:/var/log/nginx \
 -v /etc/localtime:/etc/localtime \
 -p 8001:80 nginx

Dockerコンテナの操作

  • 最後に、Dockerコンテナを管理するコマンドをまとめまて、今回は終わります。

起動中のDockerコンテナ確認(docker ps)

$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                         NAMES
8782411bcb5a        nginx               "nginx -g 'daemon of   50 minutes ago      Up 50 minutes       0.0.0.0:80->80/tcp, 443/tcp   nginxTest

すべてのDockerコンテナ確認(docker ps -a)

$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                         NAMES
8782411bcb5a        nginx               "nginx -g 'daemon of   51 minutes ago      Up 51 minutes       443/tcp, 0.0.0.0:80->80/tcp   nginxTest

まだ、1つしか作っていませんでした。。。

Dockerコンテナ停止(docker stop)

  • コンテナを実行中から停止中にする命令です。
  • docker runコマンド実行時にしていたコンテナ名を指定すれば、楽チンですね。
  • ちなみにDockerコンテナを起動中のまま、ホストOSを再起動したら、コンテナは終了します(当然ですね!)。
$ sudo docker stop nginxTest
nginxTest

Dockerコンテナ開始(docker start)

  • 一度停止状態にしたコンテナを再度、開始する命令です。
  • ホストOS再起動後に、この命令を実行することになるのでしょう。
  • docker runで定義したオプションは、startオプションでは不要です(ポート番号やヴォリューム共有などの再定義は不要)。
$ sudo docker start nginxTest
nginxTest

Dockerコンテナ強制終了(docker kill)

  • 実行中のDockerコンテナを強制終了させる方法です。
  • docker stop で停止できない場合に使うのでしょうか。
$ sudo docker kill nginxTest
nginxTest

Dockerコンテナの削除(docker rm)

  • 不要なDockerコンテナを削除します。
  • ただし、DockerイメージやDockerfileがあれば、いつでもコンテナを生成できる状態にあるでしょう。
$ sudo docker rm nginxTest
nginxTest

$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

【Docker1.7】CentOS7(vagrant)へインストール

概要

  • ちまたで話題のDockerをマスタすべく、ローカルWindowsPCで動作検証しました。詳しくないので、ひとつずつ、じっくりと・・・。
  • 検証の結果、イントラネット内のクリティカルではない「WWW Server」として複数公開するケースなどで、実用できるのではないかと思っています。
  • ひとつずつ結果をまとめていこうと思います。

セットアップ手順

ベースとなるホストOS環境は、ほとんどzabbix検証のときと同じ環境です。

1. Vangrant構築

> vagrant box add centOS71min https://github.com/holms/vagrant-centos7-box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box

> mkdir C:\vagrant\hosts\centos71_docker
> cd C:\vagrant\hosts\centos71_docker

> vagrant init centOS71min
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

仮想マシンIPアドレス設定

  • 作成されたVagrantfileを編集します。メモ帳などで開き、1行のコメント行を有効にします。
  # using a specific IP.
  # config.vm.network "private_network", ip: "192.168.33.10"  <<< 有効化(#を削除する)

起動

C:\vagrant\hosts\centos71_docker>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centOS71min'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: centos71_docker_default_1445140865540_31304
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default: Warning: Connection timeout. Retrying...
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default:
    default: Guest Additions Version: 4.3.26
    default: VirtualBox Version: 5.0
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => C:/vagrant/hosts/centos71_docker

C:\vagrant\hosts\centos71_docker>

2. Server接続(192.168.33.10)

  • Tera Termを使ってSSHログインします。
host: 192.168.33.10
port: 22
user: vagrant
pass: vagrant

3. タイムゾーン設定・確認

# timedatectl set-timezone Asia/Tokyo
# timedatectl
      Local time: Sun 2015-10-18 13:02:55 JST
  Universal time: Sun 2015-10-18 04:02:55 UTC
        RTC time: Sun 2015-10-18 04:02:55
        Timezone: Asia/Tokyo (JST, +0900)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

4. 日本語化

# yum -y install ibus-kkc vlgothic-*
:
Installed:
  ibus-kkc.x86_64 0:1.5.18-5.el7
  vlgothic-fonts.noarch 0:20130607-2.el7
  vlgothic-p-fonts.noarch 0:20130607-2.el7
:
# localectl set-locale LANG=ja_JP.UTF-8
# source /etc/locale.conf
# echo $LANG
ja_JP.UTF-8

5. Sudo設定

  • root権限をvagrantユーザーに全て与えます(毎回要求されるパスワード認証は無し)。
# visudo
:
vagrant    ALL=(ALL)       NOPASSWD:ALL   <<< 最終行に追記する。(119行目)

6.各種パッケージのアップデート/vimのインストール

$ sudo yum -y update
$ sudo yum -y install vim

7.SELinuxのdisabled

$ sudo vim /etc/selinux/config
  • すでに「SELINUX=disabled」になっていました。

8. ファイアウォール無効化

検証用のため、無効にしました。

$ systemctl list-unit-files | grep firewall
firewalld.service                           enabled
# sudo systemctl disable firewalld.service
rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'
rm '/etc/systemd/system/basic.target.wants/firewalld.service'
$ systemctl list-unit-files | grep firewall
firewalld.service                           disabled

9. Dockerインストール

$ sudo yum -y install docker
:
インストール:
  docker.x86_64 0:1.7.1-115.el7

依存性関連をインストールしました:
  audit-libs-python.x86_64 0:2.4.1-5.el7
  checkpolicy.x86_64 0:2.1.12-6.el7
  docker-selinux.x86_64 0:1.7.1-115.el7
  libcgroup.x86_64 0:0.41-8.el7
  libsemanage-python.x86_64 0:2.1.10-16.el7
  policycoreutils-python.x86_64 0:2.2.5-15.el7
  python-IPy.noarch 0:0.75-6.el7
  setools-libs.x86_64 0:3.3.7-46.el7

完了しました!

$ docker -v
Docker version 1.7.1, build 446ad9b/1.7.1

10. Docker自動起動設定

$ sudo systemctl enable docker.service

これで、Dockerを試せる環境が整いました。これをホストOSとして、コンテナを構築しようと思います!

【AS400】デフォルト・ゲートウェイの変更

AS400セットアップ後、なかなか変更にならなそうなデフォルトゲートウェイの変更方法を記しておきます。

IBM iのVersionは、V7R1になります。

変更方法

  • 例として、現在、「172.16.1.1」のデフォゲを、「172.16.1.254」へ変更する操作になります。

(1) 現状のルーティング・テーブルの確認

CFGTCPメニューを呼び出します。

CFGTCP [実行]

TCP/IP構成メニュー

メニュー番号2の「TCP/IP 経路の処理」を選択。

 CFGTCP                          TCP/IP の構成                                  
                                                          システム :   SYSTEMNAME
 次の中から1つを選択してください。                                             
                                                                                
      1. TCP/IP インターフェースの処理                                          
      2. TCP/IP 経路の処理                                                      
      3. TCP/IP 属性の変更                                                      
      4. TCP/IP ポート制約事項の処理                                            
      5. TCP/IP リモート・システム情報の処理                                    
                                                                                
     10. TCP/IP ホスト・テーブル項目の処理                                      
     11. TCP/IP ホスト・テーブルの組み合わせ                                    
     12. TCP/IP ドメイン情報の変更                                              
                                                                                
     20. TCP/IP 適用業務の構成                                                  
     21. 関連テーブルの構成                                                     
     22. POINT-TO-POINT TCP/IP の構成                                           
                                                                                
                                                                                
 選択項目またはコマンド                                                         
 ===> 2                                                                    
                                                                                
 F3= 終了   F4= プロンプト   F9=コマンド の複写   F12= 取り消し                    

下記が、現状のルーティング・テーブルで、*DFTROUTEの経路がデフォルトゲートウェイとなります。

                               TCP/IP 経路の処理           
                                                          システム :   SYSTEMNAME
 オプションを入力して,実行キーを押してください。   
   1= 追加   2= 変更   4= 除去   5= 表示        
                                                        
                                                                
 OPT   経路宛先        サブネット・マスク       ネクスト・ホップ         優先 インターフェース
    
  -   ---------------  ---------------  ---------------                  
      *DFTROUTE        *NONE            172.16.1.1        172.16.1.10 



               
                                                                            
                                                                         
                                                                         
                                                                        終わり 
 F3= 終了        F5= 最新表示   F6= リストの印刷   F11=TYPE OF SERVICE の表示
 F12= 取り消し   F17= 先頭      F18= 最後       

(2) 新しいデフォルトゲートウェイの登録

まず、新しいデフォゲのルートを追加します。OPT1で、経路宛先、サブネットマスク、ネクストホップを入力し、実行キーで次に進みます。

                               TCP/IP 経路の処理                                
                                                          システム :   SYSTEMNAME
 オプションを入力して,実行キーを押してください。                               
   1= 追加   2= 変更   4= 除去   5= 表示                                        
                                                                                
                                                                                
 OPT   経路宛先        サブネット・マスク       ネクスト・ホップ         優先 インターフェース         
  1   *DFTROUTE        *NONE            172.16.1.254                  
  -   ---------------  ---------------  ---------------         
      *DFTROUTE        *NONE            172.16.1.1       172.16.1.10             






                 
                                      
                                                                                
                                                                        終わり  
 F3= 終了        F5= 最新表示   F6= リストの印刷   F11=TYPE OF SERVICE の表示   
 F12= 取り消し   F17= 先頭      F18= 最後     

有線バインド・インターフェースに、対象のインタフェースのIPアドレスを入力し、実行キー打鍵で登録となります。

                         TCP/IP 経路の追加  (ADDTCPRTE)                         
                                                                                
  選択項目を入力して,実行キーを押してください。                                
                                                                                
  経路宛先  . . . . . . . . . . . > *DFTROUTE                                   
                                                                                
  サブネット・マスク  . . . . . . > *NONE                                       
 TYPE OF SERVICE  . . . . . . . .   *NORMAL       *MINDELAY, *MAXTHRPUT...      
  ネクスト・ホップ  . . . . . . . > '172.16.1.254'                              
                                                                                
  優先 バインド・インターフェース  . . . . .   '172.16.1.10' <<<<<<<<<<<<<<<<<<<(入力)
  最大送信単位  . . . . . . . . .   *IFC          576-16388, *IFC               
  経路メトリック  . . . . . . . .   1             1-16                          
  経路再配分  . . . . . . . . . .   *NO           *NO, *YES                     
  重複経路優先順位  . . . . . . .   *MEDIUM       1-10, *MEDIUM, *HIGH, *LOW    
  テキスト ' 記述 ' . . . . . . .   *BLANK                                      
                                                                                
                                                                                
                                                                                
                                                                                
                                                                         終り   
 F3= 終了    F4=プロンプト   F5= 最新表示    F12= 取り消し                         
 F13= この画面の使用法                    F24= キーの続き

これで新しい経路(DFTROUTE)が追加されました!

                               TCP/IP 経路の処理                                
                                                          システム :   SYSTEMNAME
 オプションを入力して,実行キーを押してください。                               
   1= 追加   2= 変更   4= 除去   5= 表示                                        
                                                                                
                                                                                
 OPT   経路宛先        サブネット・マスク       ネクスト・ホップ         優先 インターフェース         

  -   ---------------  ---------------  ---------------              
      *DFTROUTE        *NONE            172.16.1.1       172.16.1.10             
      *DFTROUTE        *NONE            172.16.1.254     172.16.1.10             






                


                                                                        終わり  
 F3= 終了        F5= 最新表示   F6= リストの印刷   F11=TYPE OF SERVICE の表示   
 F12= 取り消し   F17= 先頭      F18= 最後                                       
 TCP/IP  経路  は正常に追加された。  

(3) 旧デフォルトゲートウェイの削除

最後に、元々のデフォルトゲートを削除します。削除対象のルートに、OPT4を入力し、実行キーで進みます。

                               TCP/IP 経路の処理                                
                                                          システム :   SYSTEMNAME
 オプションを入力して,実行キーを押してください。                               
   1= 追加   2= 変更   4= 除去   5= 表示                                        
                                                                                
                                                                                
 OPT   経路宛先        サブネット・マスク       ネクスト・ホップ         優先 インターフェース    
     
  -   ---------------  ---------------  ---------------                     
  4   *DFTROUTE        *NONE            172.16.1.1       172.16.1.10             
      *DFTROUTE        *NONE            172.16.1.254     172.16.1.10            






        
           
                                                                        終わり
 F3= 終了        F5= 最新表示   F6= リストの印刷   F11=TYPE OF SERVICE の表示 
 F12= 取り消し   F17= 先頭      F18= 最後 

削除の最終確認です。間違いなければ、実行キーで、削除処理を実施します。

                            TCP/IP 経路の除去の確認                             
                                                          システム :   *SYSTEMNAME
 「 4= 除去」の選択項目が正しい場合には,実行キーを押してください。             
 選択項目を変更するためには, F12 キーを押して戻ってください。                  
                                                                                
                                                                                
                                                                                
 OPT   経路宛先        サブネット・マスク       ネクスト・ホップ         優先 インターフェース         
  4   *DFTROUTE        *NONE            172.16.1.1       172.16.1.10             
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                        終わり  
 F11=TYPE OF SERVICE の表示   F12= 取り消し 

無事、デフォゲが1つだけとなり、変更されていることがわかるかと思います!

                               TCP/IP 経路の処理                                
                                                          システム :   SYSTEMNAME 
 オプションを入力して,実行キーを押してください。                               
   1= 追加   2= 変更   4= 除去   5= 表示                                        
                                                                                
                                                                                
 OPT   経路宛先        サブネット・マスク       ネクスト・ホップ         優先 インターフェース         
                                                                                
      *DFTROUTE        *NONE            172.16.1.254     172.16.1.10             
          
                                                                                
                                                                                
                                                                                
                                                                        終わり  
 F3= 終了        F5= 最新表示   F6= リストの印刷   F11=TYPE OF SERVICE の表示   
 F12= 取り消し   F17= 先頭      F18= 最後                                       
 TCP/IP  経路  は正常に除去された。

(4) ping試験

変更後は、AS400より他のネットワークへのPing試験を忘れずに実施しましょう!

PING '172.22.0.1' [実行]

ネットワーク・スループット調査

久しぶりの投稿になってしまいました。。。

最近は、ほとんどプログラミングが出来ておらず、インフラ系の仕事がメインになっております。 その中で、新たに学んだことを、備忘録として記しておきたいと思っております。

今回は、iperfを使って、ネットワークのスループットを計測する機会があったので、まとめます。

そもそも、スループットとは何かということで、次のような意味になります。

スループットとは、単位時間あたりの処理能力。コンピュータが単位時間内に処理できる命令の数や、通信回線の単位時間あたりの実効転送量などを意味する。後者の場合、末端同士の実質的な通信速度(理論値からプロトコルのオーバーヘッド等を差し引いた実効速度)の意味で使われる。(IT用語辞典-eWordより)

コンピュータやネットワーク機器などの性能を評価する指標でもあるとのこと。 この数値が高ければ高いほど、体感速度もアップするというわけか。

同僚からは、iperfが便利!と教えていただいたので、早速使ってみました。 その前に、iperfについては、こちらのサイトで学ばさせていただきました。

www.ccna-navi.com

qiita.com

準備

  • Serverとクライアントが必要なので、PC2台を準備します(今回は、両方Windows10でテスト)
  • PCそれぞれに、iperfソフトウェアをダウンロードし、「C:\tools」に配備しました。

Server側の操作

  • IPアドレス:172.16.10.1
  • Serverとして起動させるために、オプションsを付けてiperfを実行させます。
  • 実行後、Windowsなので、セキュリティ許可の要求が出現しますので、アクセスを許可します。

f:id:no14141:20150926145649j:plain

コマンド結果

C:\WINDOWS\system32>cd c:\tools

c:\tools>iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 64.0 KByte (default)
------------------------------------------------------------
[256] local 172.16.10.1 port 5001 connected with 172.16.10.2 port 61635
[ ID] Interval       Transfer     Bandwidth
[256]  0.0-10.0 sec   849 MBytes   713 Mbits/sec

Client側の操作

  • IPアドレス:172.16.10.2
  • Clientとしてiperf Serverへアクセスします。オプションcの後にIPアドレスを指定して通信を開始します。
  • 1秒間隔で測定結果を表示させるため、オプションiを1秒として実行します。
  • 結果は、同一ハブ上でのテストのため、10秒の平均が 712Mbits/secという結果になりました。
  • 念のため、ServerとClientを入れ替えてみて、テストして比較した方がいいようです(上り/下り)。

コマンド結果

C:\WINDOWS\system32>cd c:\tools

c:\tools>iperf -c 172.16.10.1 -i 1
------------------------------------------------------------
Client connecting to 172.16.10.1, TCP port 5001
TCP window size: 64.0 KByte (default)
------------------------------------------------------------
[236] local 172.16.10.2 port 61635 connected with 172.16.10.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[236]  0.0- 1.0 sec  83.6 MBytes   701 Mbits/sec
[236]  1.0- 2.0 sec  84.5 MBytes   709 Mbits/sec
[236]  2.0- 3.0 sec  84.7 MBytes   710 Mbits/sec
[236]  3.0- 4.0 sec  85.2 MBytes   715 Mbits/sec
[236]  4.0- 5.0 sec  85.2 MBytes   715 Mbits/sec
[236]  5.0- 6.0 sec  85.2 MBytes   714 Mbits/sec
[236]  6.0- 7.0 sec  85.3 MBytes   716 Mbits/sec
[236]  7.0- 8.0 sec  85.2 MBytes   715 Mbits/sec
[236]  8.0- 9.0 sec  85.2 MBytes   715 Mbits/sec
[236]  9.0-10.0 sec  85.4 MBytes   716 Mbits/sec
[236]  0.0-10.0 sec   849 MBytes   712 Mbits/sec

まとめ

  • スループットを測定できるToolとして、iperfは大変便利!
  • ネットワーク内で2ポイントで調査できるので、その間に低速ハブなどが存在するかどうかも、このツールで見極めることができそうです。

【Zabbix2.4】CentOS7(vagrant)へインストール

ネットワーク上にあるServerやネットワーク機器の死活監視などを行うため、Zabbixという統合監視ソフトウェアが人気のようです。

Zabbixでは、次の監視が可能になるとのことです。

  1. 稼動監視
  2. リソース監視
  3. アプリケーション監視

私もセットアップしたいと思い、とりあえず、vagrant環境のCentOS7へインストールしてみました!

セットアップ手順

1. Vangrant構築

> vagrant box add centOS71min https://github.com/holms/vagrant-centos7-box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box

> mkdir C:\vagrant\hosts\centos71_zabbix24

> cd C:\vagrant\hosts\centos71_zabbix24


> vagrant init centOS71min
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

仮想マシンIPアドレス設定

  • 作成されたVagrantfileを編集します。メモ帳などで開き、1行のコメント行を有効にします。
  # using a specific IP.
  # config.vm.network "private_network", ip: "192.168.33.10"  <<< 有効化(#を削除する)

起動

> vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centOS71min'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: centos71_zabbix24_default_1434
_83258
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes..
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default: Warning: Connection timeout. Retrying...
    default:
    default: Vagrant insecure key detected. Vagrant will automatically
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if its present...
    default: Key inserted! Disconnecting and reconnecting using new SSH
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => C:/vagrant/hosts/centos71_zabbix24

c:\vagrant\hosts\centos71_zabbix24>

2. Server接続(127.0.0.1

  • Tera Termを使ってSSHログインします。
host: 127.0.0.1
port: 2222
user: vagrant
pass: vagrant

3. タイムゾーン設定・確認

# timedatectl set-timezone Asia/Tokyo
# timedatectl
      Local time: Sun 2015-06-14 19:51:49 JST
  Universal time: Sun 2015-06-14 10:51:49 UTC
        RTC time: Sun 2015-06-14 10:51:48
        Timezone: Asia/Tokyo (JST, +0900)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

4.各種パッケージのアップデート

# yum -y update

5.SELinuxのdisabled

# vi /etc/selinux/config
  • すでに「SELINUX=disabled」になっていました。

6. ファイアウォール無効化

# systemctl list-unit-files | grep firewall
firewalld.service                           enabled
# systemctl disable firewalld.service
rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'
rm '/etc/systemd/system/basic.target.wants/firewalld.service'
# systemctl list-unit-files | grep firewall
firewalld.service                           disabled

7. Zabbix SIAのリポジトリ登録

# yum install http://repo.zabbix.com/zabbix/2.4/rhel/7/x86_64/zabbix-release-2.4-1.el7.noarch.rpm

8. Zabbix関連のパッケージインストール

# yum install zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese zabbix-agent
:
Installed:
  zabbix-agent.x86_64 0:2.4.5-1.el7
  zabbix-server-mysql.x86_64 0:2.4.5-1.el7
  zabbix-web-japanese.noarch 0:2.4.5-1.el7
  zabbix-web-mysql.noarch 0:2.4.5-1.el7

Dependency Installed:
  OpenIPMI-libs.x86_64 0:2.0.19-11.el7
  OpenIPMI-modalias.x86_64 0:2.0.19-11.el7
  apr.x86_64 0:1.4.8-3.el7
  apr-util.x86_64 0:1.5.2-6.el7
  dejavu-fonts-common.noarch 0:2.33-6.el7
  dejavu-sans-fonts.noarch 0:2.33-6.el7
  fontpackages-filesystem.noarch 0:1.44-8.el7
  fping.x86_64 0:3.10-1.el7
  freetype.x86_64 0:2.4.11-10.el7_1.1
  httpd.x86_64 0:2.4.6-31.el7.centos
  httpd-tools.x86_64 0:2.4.6-31.el7.centos
  iksemel.x86_64 0:1.4-2.el7.centos
  libX11.x86_64 0:1.6.0-2.1.el7
  libX11-common.noarch 0:1.6.0-2.1.el7
  libXau.x86_64 0:1.0.8-2.1.el7
  libXpm.x86_64 0:3.5.10-5.1.el7
  libjpeg-turbo.x86_64 0:1.2.90-5.el7
  libpng.x86_64 2:1.5.13-5.el7
  libtool-ltdl.x86_64 0:2.4.2-20.el7
  libxcb.x86_64 0:1.9-5.el7
  libxslt.x86_64 0:1.1.28-5.el7
  libzip.x86_64 0:0.10.1-8.el7
  lm_sensors-libs.x86_64 0:3.3.4-11.el7
  mailcap.noarch 0:2.1.41-2.el7
  mariadb-libs.x86_64 1:5.5.41-2.el7_0
  net-snmp.x86_64 1:5.7.2-20.el7
  net-snmp-agent-libs.x86_64 1:5.7.2-20.el7
  net-snmp-libs.x86_64 1:5.7.2-20.el7
  perl-Data-Dumper.x86_64 0:2.145-3.el7
  php.x86_64 0:5.4.16-23.el7_0.3
  php-bcmath.x86_64 0:5.4.16-23.el7_0.3
  php-cli.x86_64 0:5.4.16-23.el7_0.3
  php-common.x86_64 0:5.4.16-23.el7_0.3
  php-gd.x86_64 0:5.4.16-23.el7_0.3
  php-mbstring.x86_64 0:5.4.16-23.el7_0.3
  php-mysql.x86_64 0:5.4.16-23.el7_0.3
  php-pdo.x86_64 0:5.4.16-23.el7_0.3
  php-xml.x86_64 0:5.4.16-23.el7_0.3
  t1lib.x86_64 0:5.1.2-14.el7
  unixODBC.x86_64 0:2.3.1-10.el7
  vlgothic-p-fonts.noarch 0:20130607-2.el7
  zabbix.x86_64 0:2.4.5-1.el7
  zabbix-server.x86_64 0:2.4.5-1.el7
  zabbix-web.noarch 0:2.4.5-1.el7

9. MariaDBのインストール

# yum install mariadb-server
:
Installed:
  mariadb-server.x86_64 1:5.5.41-2.el7_0

Dependency Installed:
  mariadb.x86_64 1:5.5.41-2.el7_0
  perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7
  perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7
  perl-DBD-MySQL.x86_64 0:4.023-5.el7
  perl-DBI.x86_64 0:1.627-4.el7
  perl-IO-Compress.noarch 0:2.061-2.el7
  perl-Net-Daemon.noarch 0:0.48-5.el7
  perl-PlRPC.noarch 0:0.2020-14.el7

10. MariaDB用の設定

# vi /etc/my.cnf.d/server.cnf

[mysqld]
character-set-server = utf8
collation-server     = utf8_general_ci
skip-character-set-client-handshake
innodb_file_per_table


# systemctl start mariadb
# systemctl enable mariadb
ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service'


# mysql -uroot
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.41-MariaDB MariaDB Server

Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database zabbix;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix' ;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit
Bye


# mysql -uroot zabbix < /usr/share/doc/zabbix-server-mysql-2.4.5/create/schema.sql
# mysql -uroot zabbix < /usr/share/doc/zabbix-server-mysql-2.4.5/create/images.sql
# mysql -uroot zabbix < /usr/share/doc/zabbix-server-mysql-2.4.5/create/data.sql

11. Zabbix設定ファイル更新

# vi /etc/zabbix/zabbix_server.conf

DBPassword=zabbix

12. ZabbixのWebインターフェース用設定ファイル更新

# vi /etc/httpd/conf.d/zabbix.conf

php_value date.timezone Asia/Tokyo

13. 各種デーモン起動

# systemctl start zabbix-server
Job for zabbix-server.service failed. See 'systemctl status zabbix-server.service' and 'journalctl -xn' for details.

失敗しました!

こちらのサイトを参考にさせてもらいました。

# rpm -Uvh https://kojipkgs.fedoraproject.org/packages/trousers/0.3.11.2/3.fc20/x86_64/trousers-0.3.11.2-3.fc20.x86_64.rpm
Retrieving https://kojipkgs.fedoraproject.org/packages/trousers/0.3.11.2/3.fc20/x86_64/trousers-0.3.11.2-3.fc20.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:trousers-0.3.11.2-3.fc20         ################################# [ 50%]
Cleaning up / removing...
   2:trousers-0.3.11.2-3.el7          ################################# [100%]

# systemctl restart zabbix-server


# systemctl start zabbix-agent
# systemctl start httpd

# systemctl enable zabbix-server
# systemctl enable zabbix-agent
# systemctl enable httpd

14. Webコンソールへアクセス

  • Version2.4の導入前に、2.2を入れたためにキャッシュが残っていたので、画面は「Welcome to Zabbix 2.2」となっていますw

f:id:no14141:20150702124316j:plain

f:id:no14141:20150702124324j:plain

f:id:no14141:20150702124331j:plain

f:id:no14141:20150702124339j:plain

f:id:no14141:20150702124348j:plain

f:id:no14141:20150702124354j:plain

これでセットアップは完了です!

http://192.168.33.10/zabbix/ へアクセスできるようになりました!!!


参考にさせていただいたサイト

TNKの気になること: ZabbixをCentOS 7にインストール

qiita.comCentOS7にZabbix2.2をインストール - Qiita

【AS400】RPGLE-数値日付の妥当性チェック

タイトルの件、やはり便利な命令が用意されていました。   これまでは、DSで年、月、日に分けて、閏年判定を交えて、オリジナル関数で処理させていましたが、TEST命令を使えば簡単に判定できることがわかりました。

サンプルはこちらです。

サンプルPGM

D MAIN            PR                  EXTPGM('SAMPLE37')    
D                                8P 0                       
D MAIN            PI                                        
D  P@YYMD                        8P 0                       
D*                                                          
 /FREE                                                      
     DSPLY P@YYMD;                                          
                                                            
    // 8桁日付                                             
     TEST(DE) *ISO P@YYMD;                                  
     IF %ERROR();                                           
         DSPLY ' パラメータ日付NG! ';                    
     ELSE;                                                  
         DSPLY ' パラメータ日付OK! ';                    
     ENDIF;                                                 
                                                            
    // 6桁日付                                             
     TEST(DE) *YMD P@YYMD;                                  
     IF %ERROR();                                           
         DSPLY ' パラメータ日付NG! ';   
     ELSE;                                 
         DSPLY ' パラメータ日付OK! ';   
     ENDIF;                                
                                           
     *INLR = *ON;                          
     RETURN;                               
 /END-FREE                                 

実行結果

> CALL PGM(TIGEROBJ/SAMPLE37) PARM(X'000150228F')   
  DSPLY    150228                                   
  DSPLY   パラメータ日付OK!                      
  DSPLY   パラメータ日付OK!                      
> CALL PGM(TIGEROBJ/SAMPLE37) PARM(X'020150229F')   
  DSPLY  20150229                                   
  DSPLY   パラメータ日付NG!                      
  DSPLY   パラメータ日付NG!                      
> CALL PGM(TIGEROBJ/SAMPLE37) PARM(X'000160229F') 
  DSPLY    160229                                 
  DSPLY   パラメータ日付OK!                    
  DSPLY   パラメータ日付OK!                    

【Excel】表Aのキーが表Bのキーに存在する場合、表Aの隣に表Bのレコードを出力する方法

タイトルにて、何を言いたいのか、うまく伝わらないような気がしてなりませんが、 ようするに、2つの表をキーでつないで、EXCEL上で並べてみたい! ただそれだけです。

ACCESSやらVBAなどを使わないで手軽にやる方法を調べました。

昔からあるVLOOKUP関数ですね。

すぐ忘れるので、備忘録としてここに残したいと思います。

f:id:no14141:20150629124436j:plain

今回、わかりやすく、表Aと表Bを同一上のシートに表現してあります。

表A=A2:C16

表B=H2:J8

※両方の表とも、キーを1列目としています。値に意味はありません。

D2の式

=VLOOKUP(A2,$H$2:$J$8,1,FALSE)

E2の式

=VLOOKUP(A2,$H$2:$J$8,2,FALSE)

F2の式

=VLOOKUP(A2,$H$2:$J$8,3,FALSE)

「#N/A」の結果は、表Bに存在していないという意味になります(Not Available)。