IDCF Tech-Blog

読者です 読者をやめる 読者になる 読者になる

IDCF Tech-Blog

クラウド・ビッグデータ・データセンターを提供するIDCフロンティアの公式エンジニアブログ

IDCFクラウドのGPU搭載仮想マシンを使い始める手順~CUDAインストール編~

2016年11月25日、IDCFクラウドに新しいリージョンが追加され、あわせて「GPU BOOSTタイプ Tesla M40」がリリースされました。 www.idcf.jp

ディープラーニング等、通常のCPUでは計算性能が足りなくなるシーンでの利用を想定したGPU搭載仮想マシンです。本記事では、GPUを使い始めるための手順について紹介いたします。

f:id:kkamiyakenshiroh:20161207155756p:plain

1. GPUコンピューティング

GPUコンピューティングとは

主に3DCGなどの画像処理を行うデバイスであるGPUを、計算分野で利用することをGPUコンピューティングといいます。 昨今の「ディープラーニング(深層学習)」「ビッグデータ」「IoT」「AI(人工知能)」「機械学習」など注目ワードには、GPUコンピューティングが密に関係しています。

なぜGPUを利用するのか

CPUとGPUは、それぞれ下記の特徴をもちます。

  • CPU:数コア~数10コアを持ち、逐次処理が得意
  • GPU:数百コア~数千コアを持ち、並列処理が得意

このそれぞれの特徴を活かして、逐次処理をCPU、並列処理をGPUに割り当てることで、CPU単体よりも圧倒的な速度で演算することができます。

2. IDCFクラウド GPU BOOSTタイプの特長

大容量GPUメモリ搭載のGPUを採用

「GPU BOOSTタイプ Tesla M40」は名前の通りNVIDIA Tesla M40 (24GBメモリ版)を搭載しています。ディープラーニングなどのGPUを用いた計算では、GPUメモリ容量がボトルネックになりやすいため、Tesla M40の中でもGPUメモリが多い24GB版を採用しています。

専有タイプで他仮想マシンからの性能影響無し

GPU BOOSTタイプは1物理サーバーに1台だけ仮想マシンが稼働する占有タイプとして提供しているため、共有環境で発生しうる、他の仮想マシンからの負荷による影響を受けず、物理サーバーの全性能を使う事が出来ます。

IDCFクラウドの通常の仮想マシンと同じ操作で利用可能

GPU BOOSTタイプは通常の仮想マシンと全く同じ操作で作成・削除などが実施できます。また課金についても上限金額ありの従量課金となっております。ただし、ハードウェア占有タイプである事と、GPUを仮想マシンに直接認識させているため、以下の制限があります。

  • 仮想マシンが起動した状態でのボリュームのスナップショットの取得ができません
  • 物理サーバーが故障などで停止した場合の別サーバーへのフェイルオーバー機能はありません

3. GPUを利用するためのCUDAライブラリの導入方法

Tesla M40などのNVIDIA社製GPUを用いて計算を行うためには、GPUのドライバと計算を行うためのCUDAライブラリを導入する必要があります。本記事では、IDCFテンプレート「CentOS 7.2 64bit」仮想マシンを前提に、CUDAライブラリのインストール手順を解説いたします。

GPU BOOSTタイプの仮想マシンの作成

GPU BOOSTタイプは現時点では「東日本リージョン2(jp-east-2)」でのみ提供しています。そこで、仮想マシンを作成するためにIDCFクラウドのポータルから東日本リージョン2のコンピューティングを選択します。

f:id:anikundesu:20161201114304p:plain

次に、仮想マシン一覧画面から「仮想マシン作成」をクリックします。

f:id:anikundesu:20161201114340p:plain

仮想マシン作成画面で、ゾーンを「weber」もしくは「lux」を選択し、次の「マシンタイプ」で「GPU」タブをクリックします。するとマシンタイプ一覧に「gpu.7XLM40」が表示されるので、選択します。

f:id:anikundesu:20161201114521p:plain

以後は通常の仮想マシンと同じように設定します。ここではテンプレートとして「CentOS 7.2 64bit」を利用して、設定を確認の上で作成を実行します。

CUDAインストール用のレポジトリRPM取得とインストール

NVIDIA社のCUDA Toolkit配布サイトから、次の図のようにOS等を選択します。そして図内の「rpm (network)」をクリックし、RPMをダウンロードします。

f:id:anikundesu:20161129201908p:plain

ダウンロードしたRPMをGPU BOOSTタイプの仮想マシンにアップロードし、以下のコマンドでインストールを行います。

$ sudo rpm -i cuda-repo-rhel7-8.0.44-1.x86_64.rpm
警告: cuda-repo-rhel7-8.0.44-1.x86_64.rpm: ヘッダー V3 RSA/SHA512 Signature、鍵 ID 7fa2af80: NOKEY
(以下省略)

CUDAライブラリのインストール

CUDAおよびNVIDIAドライバを配布するレポジトリ情報が登録されたので、次はCUDAのインストールを行います。

$ sudo yum clean all
読み込んだプラグイン:fastestmirror, remove-with-leaves, show-leaves
リポジトリーを清掃しています: base cuda epel extras updates
Cleaning up everything
Cleaning up list of fastest mirrors

$ sudo yum install cuda
(以下省略、大量のパッケージが導入されます)

万一、パッケージのダウンロードやインストールが一部失敗するようなことが発生した場合は、yum clean allから再インストールをもう一度実行します。インストールが無事に完了したら、仮想マシンのOS再起動を実行します。

GPUが認識された事の確認

NVIDIAドライバが導入され、正常に認識されると、nvidia-smiコマンドでGPUのステータスが確認できます。

# nvidia-smi
Tue Nov 22 15:00:36 2016       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.48                 Driver Version: 367.48                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla M40 24GB      Off  | 0000:03:00.0     Off |                    0 |
| N/A   39C    P0    60W / 250W |      0MiB / 22939MiB |    100%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

なお、正常にGPUが認識されていない場合は、以下のようなエラーが表示されます。

# nvidia-smi 
modprobe: FATAL: Module nvidia not found.
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

再起動後も上記のエラーが表示された場合、もう一度OS再起動をすると認識される場合があります。

以上でGPUを利用するためのCUDAライブラリの導入が完了しました。ディープラーニングで利用するためには、下記のような各種フレームワークを導入する必要があります。

フレームワークの導入に関しては、今後の記事で紹介していきたいと思います。

まとめ

  • ディープラーニングするにはGPUコンピューティングによる強力な計算リソースが必要
  • IDCFクラウドなら、GPU「NVIDIA Tesla M40」搭載の仮想マシンを利用可能
  • CUDAのインストール・フレームワークの導入だけですぐ使える

IDCFクラウド「GPU BOOSTタイプ Tesla M40」のパワーを、ぜひ体験してみてください!

AerospikeをIDCFクラウドで動かすとこんなに良い件

IDCFクラウド クラウド Aerospike

こんにちは、エバンジェリストの藤城(@tafujish)です。

以前にAerospikeのMeetupで登壇させてもらったときに、ブログ書く書く言って長らく書けていなかったのですが、金杉がお試し記事を書いてくれました。

blog.idcf.jp

Aerospikeって何という方はそちらを読んでいただき、ここではAerospikeをIDCFクラウド上で使うのがなぜ適しているのかやベストプラクティスを紹介したいと思います。

なぜ、AerospikeをIDCFクラウド上で動かすのか

1) オールフラッシュストレージ

Aerospikeのデータの格納方法として、超高速にトランザクション処理できるがデータは揮発な「インメモリ」と、データをディスクに格納することで不揮発な「パーシステンス」の両方が利用できます。
その一方で、そもそもAerospikeは高速なトランザクションが得意で、なおかつSSDに最適化されていますので「パーシステンス」でも十分高速です。

IDCFクラウドは、オールフラッシュストレージを採用していますので、ディスクI/Oとしても高速です。そのため、「パーシステンス」で利用したとしても、高速な処理かつデータは不揮発で利用可能です。

2) 高速なCPU/メモリ

Aerospikeの処理にはディスクI/OだけでなくCPUとメモリがもちろん使用されます。Aerospikeの特徴として、スケールアップすることでAerospikeの処理性能を引き上げることができます。

もちろんIDCFクラウドはCPUとメモリの処理速度としても高速です。高性能な仮想化ハイパーバイザーとリソースの最適配置により高性能かつ安定した性能を提供していますので、Aerospikeの高性能を活かすことが可能です。

3) 高帯域の内部ネットワーク

ディスクI/O、CPU、メモリが高速になってくると、ボトルネックがネットワーク帯域になってきます。実際にAerpspikeをオンプレミスで利用しているユーザーの話でも1GbpsのNICがボトルネックになるという話がありました。

IDCFクラウドでは、通常の仮想マシンであれば2Gbps、専有タイプの仮想マシン(3XL128や5XL128)であれば5GbpsのNIC帯域が利用できネットワークボトルネックを回避可能です。

4) マルチキャスト対応

Aerospikeの特徴のひとつとして自律的な動作があります。Aerospikeの各ノードが自動構成されクラスタが組まれ、故障時の切り離しや、クラスタへ戻したときのデータ再配置も自動で行われます。通常、この各ノード間のやりとりはマルチキャスト通信が利用されています。

IDCFクラウドのネットワークでは、マルチキャスト通信が利用可能です。そのためAerospikeのクラスタは、ノードを起動するだけで、自動でクラスタが構築されスケールアウトしていくことが可能なため、簡単に運用することができます。

Aerospike on IDCFクラウドのベストプラクティス

それでは、実際にIDCFクラウド上でAerospikeを動かすときに性能を最大限活用するためのベストプラクティスを紹介します。

●リージョン/ゾーン

高速なディスクI/Oが利用できるため、オールフラッシュストレージを採用しているゾーンを利用してください。
具体的には、東日本リージョンのradian、newtonゾーン。
西日本リージョンのaugusta、monsteraゾーン。
またはこれらより新しいゾーンでオールフラッシュが利用可能です。これらのゾーン上で、仮想マシンを作成すると、そのストレージは特別な操作不要ですべてフラッシュとなります。

最新の対応状況は次のページで確認できます。
https://www.idcf.jp/cloud/spec/region_zone.html

同じゾーン内でAerospikeの仮想マシンを作成すると、同じネットワークに属しマルチキャストにより自動でクラスタが構成されます。

●ネットワークインターフェース

通常、仮想マシンを作成するだけで、高いパケット処理性能・高帯域なNICが提供されます。
RSSに対応しているためRPS/RFSの設定も不要ですのでそのままお使いください。

ただし、ISOからOSをインストールした場合は、その限りではないのでご注意ください。一応、確認方法ですが、

$ ethtool -i eth0
driver: vmxnet3
~以下、略~

driverがvmxnet3になっていればそのままご利用ください。
もし、e1000となっている場合は、テンプレートをエクスポート/インポートしNICを再設定するかRPS/RFSの設定を入れてください。

●DATAディスクのウォームアップ

作成されたDATAディスクは、シンプロビジョニングで作られただけなので使用領域を事前に確保して、オーバーヘッドを減らしておきます。例えば、次のように構築前にゼロデータでディスク容量一杯まで埋めておきます。

$ sudo dd if=/dev/zero of=/dev/sdb bs=1M
dd: writing `/dev/sdb': デバイスに空き領域がありません
819201+0 records in
819200+0 records out
858993459200 bytes (859 GB) copied, 2078.7 s, 413 MB/s

2つ目のDATAディスクがあれば/dev/sdcといったように、利用するデバイスすべてに実施してください。

●ストレージエンジンの設定

Aerospikeの設定(標準で/etc/aerospike/aerospike.conf )にてストレージエンジンの設定をパーシステンスにする際、大きく2パターンあります。

storage-engine device { 
    file /aero/test.dat 
    filesize 64G 
}

こちらの設定では、ファイルシステム上にAerospikeのデータファイルを置くので取り回しが簡単です。
一方、複数のデバイスを並列に扱うことができ、かつファイルシステムをバイパスすることで性能をスケールさせることができる設定もあります。

storage-engine device { 
    device /dev/sdb 
    device /dev/sdc 
    write-block-size 1024K 
}

IDCFクラウドでは、ストレージの種類がひとつだけなので、shadow device(device /dev/sdb /dev/sdcと一行で書く)として階層を設ける必要はありません。接続されているデバイス(DATAディスク)を行を分けて書いてください。

インメモリとパーシステンスのベンチマーク

最後にベンチマークをして、インメモリ(揮発)とパーシステンス(不揮発)の性能差を確認しましょう。

Aerospikeのサーバーは、IDCFクラウドのnewtonゾーン(オールフラッシュ)にて、Standard.X16(4コア/16GBmem)のCentOS6.7にて構築。サーバーとは別のマシンからベンチマークを実行。ベンチマークはAerospikeのCクライアント標準のものを利用し、次のとおり実行しています。結果はAMC上のスループットの値です。

・./benchmarks -h <IP Address> -k 4000000 -o S:2048 -w RU,50 -z 64

Aerospikeサーバーを1台のシングル構成と、3台でクラスタ構成でのベンチマーク結果が次の通りです。

f:id:tafujish:20161116210720p:plain

もちろんの結果ですが、パーシステンスよりインメモリの方がより高速な結果でした。ただ、ここで言いたいのは、インメモリとパーシステンスとの性能差が小さいことです。オールフラッシュが活き、パーシステンスでも十分に高速なので、データが消えるインメモリをわざわざ使わなくても良いのではないでしょうか。

一点補足しておくと、シングル構成と3ノードクラスタ構成で、スコアにほぼ差が出ていないですが、クラスタ構成によりデータレプリケーションが生じるのでその分のオーバーヘッドがあるため台数分の性能になっていません。4台以上にノードを増設していくと、スコアもどんどん上がっていきます。このあたりのスケール性能は、次のAerospikeのMeetupで話させていただいた通りです。

www.slideshare.net

まとめ

Aerospikeはその高性能かつ簡単にスケールできることがメリットのNoSQL DBですが、IDCFクラウドの構成や性能と相性がよいです。また、IDCFクラウドのオールフラッシュストレージの基盤を活用できるのでパーシステンスでの高性能に利用することが可能です。
Aerospikeの事例紹介やEnterprise版の紹介なども可能ですので、これからAerospikeを検討するという場合も、IDCFまでお問い合わせください

ITpro EXPO 2016出展体験談!

みなさま、はじめまして!!IDCフロンティア営業の竹本と申します。

今回は、当社が出展しました10月19日〜21日に開催されたITpro EXPO 2016のイベントレポをしたいと思います🙆

ぜひぜひ最後までお付き合いくださいませ。


ITpro EXPO 2016は、約350社が出展し 各社のビジネスチャンスがせめぎあう、一大イベントとなっております!

当社は代表取締役石田による講演とブース出展にて参加させていただきました🙊

今後のITインフラとしての世界観

テーマは「AI/ディープラーニング時代に求められる新プラットフォーム「Data Centric Cloud」とは」です。 f:id:lovepokopoko:20161104104734j:plain

IDCフロンティアが目指すデータ集積地構想について講演させていただきました!

講演資料は次のURLよりダウンロードいただけますので、ぜひご覧ください😉

https://www.idcf.jp/service/pdf/20161019_LectureDocument.pdf

IDCFクラウドブース

コーポレートカラーのブルーをふんだんに使用しスタイリッシュな空間となっております。

ロゴのMORIOもインパクト大!目立っております!

f:id:lovepokopoko:20161108133609j:plain

展示させていただいた中で目玉企画はこの3つ🌀

  • GPU先行情報

  • プライベートクラウド実物お披露目

  • データセンターVR 見学体験


■GPU先行情報

こちらは11月25日に提供開始予定のGPU搭載のコンピューティング基盤です。

www.idcf.jp

IDCFクラウド上で動かせるGPUタイプのマシンは初期費用0円、1時間400円でご利用可能となっております👍

もちろんハードウェアの管理はIDCフロンティアが行いますので、使いたい!と思い立ったらすぐにご利用いただけます。

GPU自体はNVIDIA社のTesla M40を採用、そしてメモリは24GBとハイスペックで大容量な処理も可能です👌

また、来年の春にはPascalアーキテクチャのGPUもリリースしていく予定です!

クラウド型のGPUサーバーは第一歩で、今後はGPU搭載のベアメタルサーバー、さらにGPUサーバーフル搭載のプライベートシステムや超冷却サーバーラックも提供していきますので、ぜひご期待ください😁

これが噂のGPU アクセラレータ!意外とおしゃれなルックスです。

f:id:lovepokopoko:20161104103149j:plain

IDCFクラウドブースはAIや、ディープラーニング、セキュリティなどなど… ホットなワードが沢山あり、多くの方にご来場いただきました!

またブース内ステージでは、NVIDIA社による講演も行いましたが、 立ち見がでるほどの満員御礼でございました👏

f:id:lovepokopoko:20161104102318j:plain

■プライベートクラウド実物お披露目

IDCFクラウドの運用技術とノウハウを大結集した新・プライベートクラウド!

こちらは国内初のVMware Virtual SANにオールフラッシュストレージを採用した、お客さま専有のクラウド環境であります!

従来のものとは異なり、専用のストレージが不要なため、ホストを追加することによってリニアな拡張ができます🙆

また、I/O性能もこれまでと比べグーンと伸びたので、もうパフォーマンス不足には悩まされません!

なんと!ブースでは実際にラックを展示してみました。

f:id:lovepokopoko:20161104103448j:plain

クラウドサービスはその名の通り雲の中にあるようで、実物を見たり触れたりすることができないサービスです。

そのためクラウド化に不安を抱えていてなかなか進めない、という方も多くいらっしゃいますね。

そこで、少しでもクラウドをリアルに感じでもらおうと、今回は見て触れていただけるブースにしました💪

■データセンターVR 見学体験

IDCフロンティアの北九州データセンター バーチャルツアーです!

侮るなかれ、、、こちらとってもリアルにデータセンターを感じることが出来ます👀

f:id:lovepokopoko:20161104103642j:plain 普段はなかなか入ることができないデータセンターですが、最新鋭かつ特殊な設備をVR動画でご覧いただきました。

入館のサークルゲートまでリアルに再現しております🎶

VR体験コーナーは連日長蛇の列でなんと3日間で延べ1000人もの方が体験され、まるでその場にいるような臨場感を味わっていただきました(^o^)v

お手持ちのスマートフォンのYouTubeアプリで再生いただくと、簡易版を視聴いただくこともできますので、ぜひお試しください!

余談ですが、こちらの動画のナレーションは私が担当させて頂いております🙊

youtu.be

今回VRでご覧いただいたデータセンターはこちらです。 www.idcf.jp


編集後記 f:id:santaniguchi:20161108194750j:plain IDCフロンティアのスタッフとエコアライアンスパートナーの方々とで力を合わせて作り上げました💪

実は、、こういった展示会に出展するのはIDCフロンティア史上初の試みでした。

満を持して挑んだ3日間。なんと5,000名を越える方が当社ブースに立ち寄っていただき、心の底から感謝の気持ちでいっぱいです🙏

最後にはみんな笑顔がほころび、こんな素敵な写真が撮れました!

f:id:lovepokopoko:20161107134409j:plain

このイベントを契機に多くの方にIDCフロンティアを知ってもらえたのではないでしょうか。

そして来場していただいた方、この記事を読んでくださっている方、 すべての皆様と一緒にお仕事ができれば嬉しいです⤴

それではまた。

最近話題のセキュリティスキャナ Vulsと、Vulsのmeetup Vuls祭り Vol.1のご紹介

こんにちは。Vuls Slackチームに参加している井上です。
IDCFクラウド アンバサダー プログラムでMORIO Dojo ( https://www.idcf.jp/cloud/dojo/ ) にも参加しています(まだ白帯ですね)。

今回、GitHub trending総合で一時的に1位になったこともある、話題の脆弱性スキャナ「Vuls」について、ご紹介の機会をいただきました。

  • Vulsのテスト環境を、MORIO Dojoの縁もあり、IDCFに提供いただきました。ありがとうございます!

  • そのご縁もあり、こちらに寄稿させていただくことになりました。

実機での操作やコードは今回はありませんが、しばらくお付き合いいただければ幸いです。

そもそもVulsって何?

脆弱性スキャナに分類されるプログラムです。表記上は、”Vuls”(大文字始まり)が本プロジェクトの名前で、”vuls”(すべて小文字)はプログラムを示しています。細かいことなので、あまり気にしなくても良いと思います。
同様なものとして、OpenVASがあげられます。
https://github.com/future-architect/vuls/
VulsでスキャンしたデータをWEBで見ることが出来る、VulsRepoというものもあります。
https://github.com/usiusi360/vulsrepo/

Vulsの優れた点は以下の通りです。

  • エージェントレス
    SSH(鍵認証)を利用して通信します。
  • アップデートの必要性だけではなく、影響度が分かる
    アプリケーションなどの兼ね合いでアップデートが難しいサーバーの場合、現在のバージョンではどのような脆弱性が残っているのか、影響度はどのくらいであるのかなどの情報をもとに、アップデートを検討します。この判断の補助が出来ます。

概要

Vulsは、サーバーに導入されているパッケージやプログラムをチェックし、NVD/JVNの脆弱性情報と突き合せることで脅威度を「目に見える形」で示すことが出来る、OSSのソフトウェアです。

  • 導入済みのパッケージに対し、aptitude chagelogやyum update --changelog、yum plugin security、pkg auditなどを用いて、現状残存する脆弱性のCVE IDを取得します

  • また、CPE(Common Platform Enumeration)を利用することで、パッケージ以外のソフトウェアの脆弱性も確認可能です CPE:https://www.ipa.go.jp/security/vuln/CPE.html

  • 取得したCVE IDをもとに、NVD/JVNの情報と突き合せ、各CVE IDの概要や影響度情報を得ます。その結果を JSONファイルとして保存します。 JVNについては、JPCERT/CC 戸田様の資料が詳しいです: http://www.slideshare.net/jpcert_securecoding/ss-66412794

  • 保存されたJSONファイルを、WEBブラウザで見ることが出来ます。 スキャンタイミング毎の結果の比較や、ピボットテーブルのように表示しての分析などが可能です。VulsRepoを利用します

f:id:kkamiyakenshiroh:20161028182824j:plain 図:Vulsの動作概要 (https://github.com/future-architect/vuls/blob/master/README.ja.md https://github.com/future-architect/vuls/blob/master/README.ja.md )

f:id:kkamiyakenshiroh:20161028182836j:plain 図: VulsRepo: WEBアクセスで、現在の脆弱性残存状況が分かる(画面はヒートマップ表示)

インストール

詳細はGitHubサイトのREADME.ja.mdをご覧ください。

①Vulsを導入します

・Go言語で書かれているため、Goを入れます

・Vulsを使うユーザを作り、sshなどの設定を行います

・VulsをGitHubから落として、インストールします

②Vulsのスキャン結果を見る
・VulsRepoを入れます

・httpdなどのwebサービスを用意します

・VulsRepoをダウンロードし、DocumentRoot配下など、コンテンツディレクトリに配置します

③おわり
Vulsはスキャン用ユーザ配下に配置できるため、もしも不要になった場合やお試しで使った後は、ユーザのhomeディレクトリを削除することで、きれいさっぱり消去することが出来ます。

導入や削除は難しく無いため、気軽に試すことが出来ると思います。

初めてのmeetup、Vuls祭り Vol.1

9/26に、Vulsjpとしては初めてのミートアップ「Vuls祭り Vol.1」が開催されました。

vuls-jp.connpass.com

当初は50名規模想定でしたが早々に参加枠が埋まったため、最終的には100名まで規模を拡大して実施しました。想定よりも多くの方に興味を持っていただいていたようでした。

今回は、Vuls祭り Vol.1 のダイジェストをお伝えさせていただきます。 (各発表で利用されたスライドは、Vuls祭りのページから閲覧可能です。)

どのような雰囲気だったか

個人的には「Vulsを使っている方が来る」と思っていたのですが、大半の方が「まだVulsは利用していないが、興味がある」という感じでした。

各セッションを見ると、他のサービスと連携させるとどうなるのか、どうやったら使いやすくできるのか、そもそもセキュリティ面でどうなのか、という内容でした。これから使い始める人にとって、Vuls単体ではなく、周辺の既存サービスと連携をさせる点で、有用な内容だったように思えます。

セッションサマリ

各セッションについて、すごく簡単にまとめました。興味のある方は、Vuls祭りのサイトから資料をご確認ください。

基調講演:Vuls概要、これまでとこれからの話
  • 2016/04/01にVulsを公開したところ、ドイツやスロバキアなどでも話題になった。
  • 今後は以下をサポートしていきたい
    ・他のツールとも統合したい
     OWASP dependency-check(https://www.owasp.org/)
     WordPress (https://wpscan.org/)
     Lynis (https://cisofy.com/lynis/)
    ・JPCERT/CCのAlert
    ・ローカルスキャン モード
    ・バイナリパッケージ化
    ・IDCFクラウドでの、テスト環境活用
脆弱性情報はこうしてやってくる
  • Vulsが参照しているJVN(Japan Vulnerability Notes)について、情報が登録されるまでの過程のお話し
    ・正確には、JVN iPedia(http://jvndb.jvn.jp)を参照している
  • JVN iPediaは…
    ・JVNに掲載される情報のほか、米国NISTが運営するNVD及び国内ベンダーからの情報を収集している
    ・データの蓄積と検索機能を重視。(JVNは迅速に公開することを重視)
    ・脆弱性が公表されてから一週間程度を目安に公開している
  • JPCERT/CCでは、脆弱性の届け出を受けた後、ベンダーと調整の後に情報を公開している
    ・脆弱性発見、届け出、調整、公開=Vulsで活用
  • これらの情報をVulsでは活用している
Vulsで危険な脆弱性を最速検知!
  • VulsのレポートをWEBブラウザで確認するための VulsRepo の作者
  • Vulsで検査すると、パッケージのchengelogで検知できるため、NVDやCVEで情報が公開される前に検知することが可能
  • Vulsで素早く系値・対応するための運用方法
    ・毎日スキャンし、新しく検知した内容だけをウォッチする
    ・VulsRepoで、検知結果をピボットテーブルのように集計して分析
    PCI/DSS and Vuls -VulsとPCI/DSS-
  • PCI/DSSとは
    ・クレジットカード情報をインターネット経由で取り扱う人がしたがう必要のある、クレジット業界におけるグローバルセキュリティ基準
    ・守らないと、クレジットカード情報の取り扱いが出来なくなるかも
  • Vulsは、PCI/DSSに準拠「し続ける」ために利用可能であり、有用
    ・ただし、Vulsを動かすためには注意すべきセキュリティ的な点がある
    PCI/DSS対応を考慮したVuls設定方法
  • PCI/DSS環境でVulsを使う際に、セキュリティ上で「しなければいけないこと」「してはいけないこと」がある
    ・vulsスキャンユーザの秘密鍵は、対象サーバから削除する
    ・vulsスキャンユーザに与える特権は、制限する
    ・vulsでスキャンしたデータは、権限のある人にしか見えてはいけない
      →need to know basisの原則
  • IDCFが、Vulsの開発環境のスポンサーになっていただいたことの報告
    EC2のVulsスキャンをほんの少し便利にするツールを作った
  • ec2-vuls-confgというツールを作った
    ・Amazon EC2インスタンスタグを見て、設定ファイルを自動で書き換える
  • なぜ作ったのか
    ・オートスケールなどで、インスタンスが常に変わり続けている環境でもスキャンしたい
    ・常にスキャン対象を設定ファイルに書いていく運用は、大変
    ・Amazon Inspectorのように、タグだけを見て自動的にスキャン対象を見つける仕組みが欲しかった
    本番サーバでの実運用 on GCP
  • パッケージ化されていないもの(RPMではないもの)をスキャンする
    ・Vulsのconfig.tomlに cpeNames を記載することで対応が可能
  • phpやnginxやredisなどを、自動的に脆弱性検知することが出来る
  • initScriptによる運用の簡易化が便利
    Vuls x Microsoft Azure
  • Azureで簡単にVulsを試せるように、一発構築コピペを作った
    ・Vuls本体と、VulsRepoがインストールできる
    ・スキャンしやすいような単位で構築される
    VulsとAzureでやってみた
  • Azure Functionsでやってみた
  • Log Analyticsでやってみた
    MackerelとVuls
  • mackerel-agentが定期的にVuls scanをして、結果をMackerelに送るようにした
    ZabbixアプライアンスをVulsしてみた話
  • 資料ありませんでした
    Vuls x DeepSecurity
  • DeepSecurity保護下でも残存する、緊急度の高い脆弱性が発見できないかを試した
    ・VulsとDeepSecurityを組み合わせることで、対象の環境における緊急度の高い脆弱性がわかる
    ・Vulsと他のセキュリティ製品の組み合わせも、同じように連携できると考えられる
    ・DeepSecurity APIは、すごく便利
    How to contribute Vuls
  • Vulsは、Pull Request大歓迎!
  • 一緒にコーディングして、OSS contributorになろう!
  • Vulsのドキュメント作成プロジェクトがそろそろはじまります!

まとめ

今後、IDCFクラウド用のコミュニティテンプレートをリリース予定です。

Vulsでスキャンすることで、実環境上の脆弱性状況の把握が簡単になるはずです。楽が出来るところは楽をして、休みを取ったり、他に注力しなければいけないところに力を割けるようになればいいな、と思っています。

株式会社アールワークス ネットワークインテグレーション部 井上圭

ILBを使ってWebサーバーをバランシング!構成事例もご紹介

IDCFクラウド ILB オートスケール

はじめまして!ソリューションアーキテクト部の河合です。

今回は、7月に正式リリースされたサービスILBを使ってWebサーバー3台のバランシングをしてみたいと思います!また、ILBを用いた構成の事例もあわせてご紹介します。

 

 

IDCFクラウドでは、標準提供として仮想ルーターのロードバランサー機能があります。

こちらの機能ではポート単位によるシンプルな負荷分散環境を構築することができますが、より高性能なロードバランサーが欲しい!というケースもありますよね。

たとえば、

・イベントで突発的に増えるアクセスをさばきたい

・同時セッション数が多い

・SSL証明書をロードバランサーで処理したい

などなど。

 

ILBには次の3つの特長があり、こういったお悩みを解決することができます!

1. 最速60秒でロードバランサーがオートスケール

2. SSL証明書のターミネーションが可能

3. 標準提供のロードバランサーと比べて約10倍の性能 

詳しい性能については、ILBのサービスサイトをご覧ください。

では、さっそくILBを使って分散環境を構築してみましょう!

 

ILBを用いた負荷分散環境の構築

今回はWebサーバー3台をバランシングします。構成は次の通りです。

 

f:id:skawai488:20161020144905p:plain

 

この構成図のようにILBは仮想ルーターと独立して動くので、すでに仮想ルータ―を使っている場合も影響なく導入することができます。また、Webサーバー側でデフォルトゲートウェイの設定変更も必要なく、シームレスに接続することが可能です。

 

バランシングの対象となるWebサーバー3台ですが、今回はIDCFクラウドの標準提供テンプレート「AppTemplate CentOS 6.5 64-bit」を使って構築しています。

AppTemplateを使うとLAMP環境が簡単に構築できるので、こういったサービスを試す環境を構築する際などに便利ですね!詳しい作成方法はこちらをご参照ください。

 

それではILBの設定を行っていきましょう。まずはIDCFクラウドのコンソール画面からILBを選択し、有効化されていない場合はポップアップが表示されるので「有効にする」をクリックします。

f:id:skawai488:20161020163608p:plain

 

ILBの設定画面が表示されるので、右上の「ILB作成」をクリックしてロードバランサーを作成します。 

f:id:skawai488:20161020164036p:plain

 

ここから設定に入ります。ILBを作成するネットワークを選択し、任意のFQDNを記入します。ILBはDNSラウンドロビンでActive/Activeの冗長構成を実現しているので、外部からのアクセス先はIPアドレスではなくFQDNとなります。

f:id:skawai488:20161020170434p:plain

 

続いて、Configurationを設定します。

まず「プロトコル」と「ポート番号」を設定して「+」をクリックします(下図①)。これは外部とILB間の通信に対する設定です。今回はプロトコルをHTTP、ポート番号を80としています。

するとHTTPの設定項目が開くので、次に バランシング対象の仮想マシンを指定します。

指定方法として「仮想マシンを指定」をクリック(下図②)し、対象の仮想マシンを選択します。右側の「+」をクリック(下図③)すると設定が追加されます。

今回はWeb-1、Web-2、Web-3を選択しました。

f:id:skawai488:20161020174115p:plain

ここで2点補足です。

1)「IPアドレスを入力」ではグローバルIPが対象となります

2)仮想マシンを選択する際に「ポート番号」の項目がありますが、これはILBと仮想マシン間の通信で使用されます

 

また、ILBではさらに詳細な設定もできます!

指定した仮想マシン一覧の右下に「詳細設定」というボタンがあり、クリックすると詳細な設定項目が表示されます。

最初の項目「バックエンドプロトコル」では、ILBと仮想マシン間の通信プロトコルを設定することができます。

f:id:skawai488:20161020180107p:plain

今回はすべてデフォルトの値で構築しますが、このようにバランシングの方法からSorryサーバーの指定まで、環境や目的に合わせてカスタマイズすることができます。標準提供のロードバランサ―よりも機能が充実していますよね!

必要な設定項目を入力し、ページ下部の「確認画面へ」をクリックして作成します。ILBのステータスが「Running」になったら作成完了です!

f:id:skawai488:20161020182025p:plain

 

では、指定したFQDNをブラウザのアドレスバーに入力して動作を確認してみましょう。

f:id:skawai488:20161020201309p:plain

バランシング先として指定している仮想マシンWeb-1のページが表示され、アクセス可能なことが確認できました。

続いてブラウザのリロードをすることでWeb-1、Web-2、Web-3のページが切り替わることも確認してみましょう。

f:id:skawai488:20161020201336p:plain

作成したILBがしっかり動作していますね!以上でILBを用いた負荷分散環境の構築は終了です。正式サービス時は、最後にDNSの設定でサービス用ドメインとILBのFQDNをCNAMEしましょう。

今回の構成で仮想ルーターとILBを同時に利用していますが、仮想マシン側の設定は特に必要ありません。デフォルトゲートウェイは従来通り仮想ルータ―を向いています。通信の流れは以下のようになります。

・外部からILB宛ての通信は戻りの通信もILB経由

・仮想マシンから外部への通信は仮想ルータ―経由

 

また、オプションとして「Firewallグループ」を指定することもできます。これは外部からILBの通信に対して、通信の許可/拒否を制御できる機能です。ロードバランサ―の作成時に設定することもできますし、作成後のILBに追加で設定することも可能です。

 

ILBを用いた事例紹介

 冒頭でご紹介した通りILBはサーバーのトラフィック量に応じて自動でスケールするサービスなので、ゲームなど急なイベントでアクセス増が見込まれるシステムの構成に最適です!そこで、今回はゲーム会社の事例をご紹介したいと思います。

某ゲーム会社構成例

f:id:skawai488:20161025162429p:plain

こちらはネイティブアプリで、DAU50万を想定した環境です。この構成ではフロントのWebサーバー100台をILBでバランシングしており、Photonのroomサーバー100台以上の接続もILBを通して通信しています。ILBの最大性能は30,000tps*1ですので、ボトルネックにならず負荷分散を実現しています。また、SSL終端もしているので仮想マシン側の負荷が軽減されています。

同時に、アプリの配信にはIDCFクラウドのコンテンツキャッシュを利用することで、サーバー負荷と帯域逼迫への対策も行っています。

 

おわりに

ここまでILBを用いた負荷分散環境の構築と事例をご紹介してきました。現構成の設定に影響なく導入できて設定もとても簡単でしたね!SSL終端ができたりヘルスチェックをカスタマイズできるなど、ユーザーの利用用途に合わせた使い方ができるのも魅力のひとつですので、ぜひこの機能性を試してみてはいかがでしょう?

ここまでお付き合いいただき、ありがとうございました!

*1:計測ツール:Apach Bench 2.3 / リクエスト回数:100,000回 / 同時コネクション数:2,000 / ファイルサイズ:32KB

IDCFクラウドにGitHub Enterpriseをインストールしてみた

こんにちは!ソリューションアーキテクト部の神谷です。

以前Aerospikeの記事を書いた金杉と同じ部署で働いています。
私からも、皆様に本ブログにてIDCFクラウドの魅力をお伝えしていきます!
今回は、IDCFクラウド連携サービスの一つであるGitHub Enterpriseを、IDCFクラウド上で動かしていきます。

www.idcf.jp

GitHub Enterpriseについて

GitHubは今や開発者にとってなくてはならないサービスとなっていますね。
ソースコードを管理するだけでなく、Issuesによる課題管理やPullRequestを使ったコードレビューなど、ソフトウェア開発の効率を上げるための機能が多く用意されています。

そんな非常に便利なツールであるGitHubですが、WebサービスのGitHub.comと企業向けのオンプレミスなGitHub Enterpriseが用意されています。

企業向けのGitHub Enterpriseは、WebサービスのGitHub.comに比べ以下のような利点があります。

  • 社内でソースコードを管理できる
  • 土台となるサーバーを自社で管理できる
  • GitHub.comのメンテナンスやサーバーダウンなどに左右されない

そのため、以下のケースでは、GitHub Enterpriseが適しています。

  • セキュリティポリシーの観点から、社外にソースコードを置けない
  • 定期的にリリースするソフトウェアなどがあり、メンテナンス時間をコントロールしたい

通常GitHub Enterpriseのインストールには、VMware、Xen、KVMなどのハイパーバイザーを用意する必要がありますが、
IDCFクラウドでは仮想マシンを立ててインストールするだけで使うことができます! お手軽ですね。

IDCFクラウドへインストール

それでは実際のインストール手順を紹介していきます。

1.GitHub Enterprise(評価版)のダウンロード

今回は、45日間無料で使えるGitHub Enterpriseの評価版をインストールしていきます。 以下のサイトから評価版のダウンロード申し込みを行ってください。

http://www.macnica.net/github/download.html/

申し込み完了後、GitHub Enterprise評価版の案内に従い、以下の2つのファイルをダウンロードしてください。

  • GitHub Enterprise Virtual Appliance(OVA)
  • GitHub Enterprise ライセンスファイル

f:id:kkamiyakenshiroh:20161007220817p:plain

2.テンプレートの作成

先ほどダウンロードしたOVAファイルを使用して、IDCFクラウド上にテンプレートを作成していきます。
それではまず、IDCFクラウドにログインします。左のメニューの「テンプレート」に入り、右上の「テンプレート作成」ボタンを押してください。 f:id:kkamiyakenshiroh:20161007222603p:plain

その後、以下の項目に沿ってテンプレートを作成していきます。

項目
テンプレート名 任意の名前
説明 任意の説明文
URL OVA保存先のURL
ゾーン newton(任意)
ハイパーバイザー VMware
OSタイプ Other Linux 64bit
フォーマット OVA
エクスポート 有効
パスワードリセット 有効
ダイナミックスケール 有効
ルートディスクコントローラ scsi
NICアダプタ Vmxnet3
キーボード Japanese
3.GitHub Enterpriseの仮想マシン作成

次に、作成したテンプレートを使って仮想マシンを作成していきます。 該当のテンプレートを選択し、「仮想マシン作成画面へ」をクリックしてください。 f:id:kkamiyakenshiroh:20161007222600p:plain

以下が作成する仮想マシンのスペックです。今回はお試しなので、最小構成のhighmem.M16(2CPU メモリ16GB)で構築します。
(GitHub Enterpriseのハードウェア要件など、詳しくはこちら

項目
ゾーン newton(作成したテンプレートと同じゾーン)
マシンタイプ highmem.M16
イメージ 作成したGitHub Enterpriseのテンプレート
ボリューム・データディスク 100GB
SSH Key 作成
仮想マシン台数 1台
ネットワークインターフェース そのまま
詳細情報・仮想マシン 任意の仮想マシン名
詳細情報・プライベートIPアドレス 自動設定

作成が完了したら、仮想マシンへ接続するため「IPアドレス」の設定をする必要があります。 以下の2つのポートに、ポートフォワードとファイアウォールの設定をしてください。

ポート番号 用途
443 GitHub Enterpriseを利用する際に必要
8443 サーバーのセットアップ時に必要
4.GitHub Enterpriseのインストール

いよいよGitHub Enterpriseのインストールをしていきます!
ブラウザで以下のURLにアクセスすると、「Install GitHub Enterprise」という画面が表示されます。
https://[サーバーのIPアドレス]:8443/setup/start

「License me」をクリックして、手順1でダウンロードしたライセンスファイルをアップロードします。
そしてパスワードの設定をしたら、「Finish Installation」をクリックします。

f:id:kkamiyakenshiroh:20161007220823p:plain  

「Choose installation type」では、「New Install」を選択します。

f:id:kkamiyakenshiroh:20161007220826p:plain

その後、「Setting」画面に遷移します。 パスワードの設定など完了したら、「Save settings」をクリックしてください。 f:id:kkamiyakenshiroh:20161010204735p:plain

すると、GitHub Enterpriseのインストールが始まります! f:id:kkamiyakenshiroh:20161007220831p:plain

完了したら、「Visit your instance」をクリックしてください。
利用開始まであと一歩です!
最後に、管理者アカウントを設定し「Create an account」をクリックします。 f:id:kkamiyakenshiroh:20161010205919p:plain

そして、ついに...! f:id:kkamiyakenshiroh:20161010210118p:plain

新しいリポジトリの作成画面が表示されました!
これでGitHub Enterpriseのインストール&初期設定が完了です!
ちなみにここまで約30分、意外と簡単にインストールできましたね!

まとめ

  • GitHub Enterpriseは企業向けのオンプレミスなGitHub
  • IDCFクラウドでは仮想マシンを立ててインストールするだけで使える
  • 最小構成なら構築時間約30分

どうでしたか?普段GitHub.comをお使いの皆様も、試しに使ってみてはいかがでしょうか。 今回はGitHub Enterpriseのインストールのみで少しボリュームが少なめでしたが、今後はGitHub Enterpriseのバックアップやディスク追加の手法、監視設定などもお伝えしていきたいと思いますので、ご期待ください!

プライベートコネクト経由でYBIにデータをimport/exportする

TreasureData クラウド

※2016年10月1日より、サービス名称が「Yahoo!ビッグデータインサイト」から「トレジャーデータサービス by IDCF」に変更となっております。

はじめに

Yahoo!ビッグデータインサイト(以下YBI)を用いて、大量のデータを容易に分析することができますが、重要なデータをインターネット上でやりとりしたくない、そもそもインターネット接続なんてさせていない、みたいなケースがしばしばあるかと思っています。

データを扱う上でセキュリティは無視できないもの、切っても切り離せない永遠の課題です。 IDCFクラウド(オンプレでも可)ではプライベートコネクトを用いて、プライベートなネットワーク上でYBIに対してデータのimport/exportを行なうことが可能です。 (プライベートコネクトというのは、プライベートでセキュアなネットワーク、いわゆるVPNと考えてください)

f:id:inoueissei:20160920112423p:plain

プライベートコネクト側の設定

プライベートコネクト側の設定はいたって簡単です。3分くらいで終わります。 まず、プライベートコネクトのコンソール画面でYahoo!ビッグデータインサイトの接続を選択し、 f:id:inoueissei:20160920145908p:plain

任意のネットワークアドレス、プライベートIPを設定します。 つまりユーザー側で好きなプライベートIPの指定が可能です。 f:id:inoueissei:20160920112524p:plain この例の設定では、YBIのAPIに対して192.168.20.1で、YBIのコンソールに対して192.168.20.2でアクセスできるようになります。

YBIではAPIエンドポイントに対してデータのimportを行います。以上でimport用の設定は完了です。

次にexport用の設定です。 exportはユーザーマシン(FTP、MySQL、APIサーバーなど)に解析データをexportする機能です。

"Result Export先Host"部分にexport先のマシンのプライベートIPアドレスを入力し、 を押すとexport用のFQDNが自動でアサインされます。 f:id:inoueissei:20160920112600p:plain この例では192.168.1.1のFTPサーバーと192.168.10.1のMySQLサーバーをexport先に登録する形になります。

以上でプライベートコネクト側の設定は完了です。

実際の利用方法

YBIのアカウント作成、マシン側のtd(CLIツール)、td-agentインストールまでは完了しているとします。 YBIの基本的な使い方はこちらを参考にしてください。

td コマンドを使用する際に、URL部分に先ほどのAPI用のプライベートIPを指定します。 (通常はybi.api.idcfcloud.netの部分) 例えば、下記はプライベートコネクト経由でnginx用のDBにtest というTableを作成しています。

td -e http://192.16.20.1 table:create nginx test

YBI側のコンソールを確認してみると、確かにnginxのDBにtestのTableが作成されています。 (このコンソール画面にも192.168.20.2のプライベートIPでアクセスできます。) f:id:inoueissei:20160920112638p:plain

td-agent側の設定は、/etc/td-agent/td-agent.conf で設定します。

 <source>
  type tail
  format /^(?<remote>[^ ]*) (?<host>[^ ]*) (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)" "(?<forwarder>[^\"]*)")?/
  time_format %d/%b/%Y:%H:%M:%S %z
  path /var/log/nginx/access.log
  pos_file /var/log/td-agent/nginx-access.pos
  tag td.nginx.test
 </source>
<match td.*.*>
  @type tdlog
  apikey 123456789012345678901234567890
  auto_create_table
  buffer_type file
  buffer_path /var/log/td-agent/buffer/td
  endpoint http://192.168.20.1   ###ここをAPIエンドポイントIPにする###
  flush_interval 10s
  <secondary>
    @type file
    path /var/log/td-agent/failed_records
  </secondary>
</match>

上記の例だと、nginxのアクセスログが、td-agentを用いて、192.168.20.1がアサインされているYBIのnginx.testにimportされていきます。当然インターネットは経由しません。

実際はこんな感じでアクセスログのデータが溜まっていきます。 f:id:inoueissei:20160920112710p:plain

YBIではデータを解析した結果を抽出するというResult Exportという機能があります。 プライベートコネクト経由でユーザーマシンにexportする際には、YBIのResult Exportの設定画面で、Hostの部分に 専用のFQDN を入れる必要があります。(※プライベートIPだと期待した動作にはならないので注意してください。)

f:id:inoueissei:20160920112734p:plain

これで適切なSQL文を書いて、実行(Run)すると、192.168.10.1 のMySQLマシンに結果がexportされます。

Copyright © IDC Frontier Inc.