IDCF Tech-Blog

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

IDCF Tech-Blog

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

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されます。

利用明細&ビリングAPIでIDCFクラウドの利用状況を把握しよう

IDCFクラウド API

使いたいときに使いたいだけリソースを使用できるのはクラウドの魅力ですが、無駄なく効率的に利用するためには利用状況を把握しておく必要があります。今回はIDCFクラウドの利用状況を把握するために、利用明細とビリングAPIを活用する方法をご紹介します。

利用明細を見てみよう

まずは利用明細を見てみましょう。https://console.idcfcloud.com/billing/からみることができます。 (下図のように右上のアイコンから「ビリング」を選んでも良いです。)

f:id:asasaki:20160823144700p:plain

利用明細では下図のように、各月の明細を確認することができます。 今月分については昨日までの値が反映されており、今月どのくらい使っているか確認できます。

f:id:asasaki:20160823144813p:plain

各項目をクリックするとスペックや個数など詳細な情報をみることができます。

f:id:asasaki:20160823145058p:plain

CSV形式の利用明細を活用する

各仮想マシン毎の明細を確認したい、集計方法を変えたいといった場合はCSV形式の利用明細が便利です。 CSV形式の利用明細は右上のボタンからダウンロードできます。

f:id:asasaki:20160823145329p:plain

ExcelやGoogleスプレッドシートへ貼り付ける扱いやすくなります。

f:id:asasaki:20160823145559p:plain

CSV形式の利用明細はポータル画面上よりも詳細です。ポータル画面上では表示されないリソースの表示名や作成・削除日の情報も含まれています。

CSVの各列の意味は以下の通りです。

明細画面のエクスポートCSVの各項目の意味を教えて下さい | IDCFクラウド

列名 説明
Region jp-east リージョン
ServiceName Cloud Computing サービス名(IDCFクラウド、オブジェクトストレージなど)
ZoneName newton ゾーン名
Category VirtualMachine リソースのカテゴリー(仮想マシン、ボリューム、IPアドレスなど)
Menu light.S1 商品名(仮想マシンのスペック、トラフィックの種類など)
ResourceDisplayName vm01 リソースの表示名
StartDate 2016-08-01 リソース使用量の算出開始日
EndDate 2016-08-01 リソース使用量の算出終了日
Usage 39.05944442749 リソースの使用量
Allocated 216 リソースの確保時間。単位は時間
Running 39.05944442749 仮想マシンの起動時間(CategoryがVirtualMachine以外の場合は0)
Stopped 176.94055557251 仮想マシンの停止時間(CategoryがVirtualMachine以外の場合は0)
Amount 15 税抜き請求額
Tax 1 消費税
Net 16 税込み請求額

ピボットテーブルなどで集計すると利用状況がよりわかりやすくなります。 下図はGoogleスプレッドシートのピボットテーブルで、ポータル画面と同様の表示になるようリージョン(Region)、サービス(ServiceName)、カテゴリー(Category)ごとに税抜き請求額(Amount)を合計したものです。

f:id:asasaki:20160823150258p:plain

ビリングAPI+Googleスプレッドシートで日々のリソース利用の変化を把握する

ビリングAPIで利用明細を取得する

ここまで、利用明細から各月の利用状況を把握できることをみてきました。 本項ではもう一歩踏み込んで月内でのリソース使用量・課金額の変化を調べてみましょう。

利用明細に記載されている値は月初〜月末(今月分は昨日)までの合計使用量・課金額であるため、それだけをみても月内の変化はわかりません。しかし、今月分の利用明細に昨日までの値が反映されていることから、毎日利用明細を取得すれば値の変化からリソース使用量・課金額の変化がわかります。

しかし、毎日利用明細をダウンロードしてExcel等に読み込ませるのは大変です。このように定期的なタスクがある場合はAPIを使って自動化できると便利です。IDCFクラウドには利用明細を取得するためのビリングAPIがあるので、これを使ってみましょう。

ビリングAPIを使うと、次のように指定した月の利用明細をJSON形式で取得することができます(シグネチャの生成方法などの詳細はドキュメント)を参照してください。)。レスポンスのdataの配列の中にCSV形式の利用明細の行に対応するオブジェクトが入っています。

$ curl -n https://your.idcfcloud.com/api/v1/billings/2016-04 \
  -G \
  -d format=json \
  -H "X-IDCF-APIKEY: SrE5Ceeb1Q9MPl0yM0qbd3D3_CCpLWqnbcruMBj2WyK03Q6r0l6YJhIdCsYUmB7VM8AFttoqsxc3FxQrsAh8VQ" \
  -H "X-IDCF-Expires: 1437142261" \
  -H "X-IDCF-Signature: EenNFoNxnYEQVGW279XcQ+tBgwFPpMmTkDZQvKryIZg="
{
  "meta": {
    "account_id": 71000090048,
    "billing_period_start_at": "2016-04-01",
    "billing_period_end_at": "2016-04-30",
    "invoice_no": "B7112834501",
    "taxable_amount": 43608,
    "tax": 3484,
    "total": 47092,
    "updated_at": "2016-04-07T10:03:00+0900"
  },
  "data": [
    {
      "Allocated": 42.0,
      "Amount": 42,
      "Category": "example",
      "Enddate": "2016-02-01",
      "Menu": "highio.5XL128",
      "Net": 42,
      "Region": "jp-east",
      "ResourceDisplayName": "ROOT-2622",
      "Running": 42.0,
      "ServiceName": "Cloud Computing",
      "StartDate": "2016-02-01",
      "Stopped": 42.0,
      "Tax": 42,
      "Usage": 42.0,
      "ZoneName": "tesla"
    }
  ]
}

Google Apps ScriptとビリングAPIで利用明細をスプレッドシートに取り込む

ビリングAPIの実行用に新しく仮想マシンを用意しても良いですが、今回はGoogleが提供しているスクリプト環境であるGoogle Apps Scriptを使って実行しGoogleスプレッドシートに利用明細を取り込んでみます。Google Apps ScriptはGoogleの環境上で動くので新しく仮想マシンを用意することなくビリングAPIを実行することができます。さらに、実行されていることがわかるよう実行時にSlackで請求額を通知するようにしてみます。

Google スプレッドシートでデータ取り込み用に新しくスプレッドシートを作成します。(名前は何でもかまいません。)作成したスプレッドシートを開きID(URL https://docs.google.com/spreadsheets/d/*************/edit#gid=0 のアスタリスクの部分)を控えて下さい。

SlackにはIncoming Webhooksという仕組みを使って通知を行います。Slackにログインしている状態でhttps://my.slack.com/services/new/incoming-webhook/にアクセスしメッセージを投稿するチャンネル等の設定を行って生成されるWebhook URLを控えてください。どこから通知が送信されたのかわかりやすいよう名前やアイコンも変えておくとよいでしょう。

次に、https://script.google.comにアクセスします。 空のプロジェクトが既に作成されているので、元からあるコードを消して以下のコードを貼り付けて下さい。 はじめの3行のAPIKEYSECRETSPREADSHEET_IDSLACK_WEBHOOK_URLをIDCFクラウドのAPIキー、シークレットキー(https://console.idcfcloud.com/user/apikeyで確認できます)、控えておいたスプレッドシートのID、SlackのWebhook URLに書き換えてください。

var APIKEY = "IDCFクラウドのAPIキーをいれてください";
var SECRET = "IDCFクラウドのSECRETキーをいれてください";
var SPREADSHEET_ID = "GoogleスプレッドシートのIDをいれてください";
var SLACK_WEBHOOK_URL = "SlackのWebhookのURLをいれてください";

function getThisMonth() {
  var date = new Date();
  return date.getFullYear() + "-" + ("0" + (date.getMonth()+1)).slice(-2);
}

function getToday() {
  var date = new Date();
  var this_month = date.getFullYear() + "-" + ("0" + (date.getMonth()+1)).slice(-2);
  return this_month + "-" + ("0" + date.getDate()).slice(-2);
}

// Billing APIで利用明細を取得
function getUsageData(month) {
  var query_string = "format=json";
  var expiration_seconds = 30;
  
  var date = new Date();
  var endpoint_uri = "/api/v1/billings/" + month;
  var expiration = (Math.floor(date.getTime()/1000) + expiration_seconds).toString();
  var message ="GET" + "\n" + endpoint_uri + "\n" + APIKEY + "\n" + expiration + "\n" + query_string;
  var signature = Utilities.base64Encode((Utilities.computeHmacSha256Signature(message, SECRET)));  
  var url = "https://your.idcfcloud.com" + endpoint_uri + "?" + query_string;
  var params = {
    "headers": {
      "X-IDCF-APIKEY": APIKEY,
      "X-IDCF-Expires": expiration,
      "X-IDCF-Signature": signature
    }
  }
  return JSON.parse(UrlFetchApp.fetch(url, params).getContentText())["data"];
}

// 利用明細に本日の日付を表すDate列を付加してGoogleスプレッドシートに書き込む
function sendUsageDataToSpreadsheet(ss, sheet, data) {
  var this_month = getThisMonth();
  var today = getToday();
  var keys = [
    "Region",
    "ServiceName",
    "ZoneName",
    "Category",
    "Menu",
    "ResourceDisplayName",
    "StartDate",
    "EndDate",
    "Usage",
    "Allocated",
    "Running",
    "Stopped",
    "Amount",
    "Tax",
    "Net"
  ];
  if (!sheet) {
    sheet = ss.insertSheet(this_month, 0);
  }
  if (sheet.getLastRow() == 0) {
    sheet.appendRow(["Date"].concat(keys));
  }
  data.forEach(function(resource) {
    var values = [today].concat(keys.map(function(key) { return resource[key]; }));
    sheet.appendRow(values);
  });
}

// Slackに現在の請求額を投稿する
function postTotalAmountToSlack(webhook_url, data) {
  var total_amount = 0;
  data.forEach(function(resource) {
    total_amount += resource["Amount"];
  });
  var message = "今月分の請求額は現在" + total_amount + "円です";
  var params = {
    "method": "post",
    "payload": 'payload=' + JSON.stringify({"text": message})
  };
  UrlFetchApp.fetch(SLACK_WEBHOOK_URL, params)
}

function main() {
  var this_month = getThisMonth();
  var ss = SpreadsheetApp.openById(SPREADSHEET_ID);
  var sheet = ss.getSheetByName(this_month);
  
  var data = getUsageData(this_month);
  sendUsageDataToSpreadsheet(ss, sheet, data);
  postTotalAmountToSlack(SLACK_WEBHOOK_URL, data);
}

貼り付けると下図のようになります。(キー、IDはご自分の環境の値に書き換えて下さい。)

f:id:asasaki:20160824140432p:plain

適当な名前をつけて保存し、メニューから「実行 > main」を選択して実行します。スプレッドシートの操作と外部サービスへの接続の許可がもとめられたら許可してください。完了するとスプレッドシートの新しいシートに利用明細の内容が入力され、Slackに請求額が通知されます。

最後にトリガーを設定し1日1回実行されるようにします。メニューから「リソース > 現在のプロジェクトのトリガー」からトリガーを追加し、下図のように「日タイマー」で適当な時間に実行するようにしておけばOKです。

f:id:asasaki:20160824140629p:plain

これで自動で毎日今月分の利用明細がスプレッドシートに追記、請求額がSlackで通知されるようになりました!

f:id:asasaki:20160824143936p:plain

利用明細がたまってきたらピボットテーブルなどで集計しグラフを描いてみると、日々の利用状況の変化が一目瞭然となります。 例えば、下図では8/10〜8/18まで仮想マシンは停止中で課金されていないのですが、ボリュームが毎日33-35円程度課金されていることがわかります。8/19以降は仮想マシンも毎日30円程度課金されていることから新しく仮想マシンを作成したか既存の仮想マシンを起動したこともわかります。

f:id:asasaki:20160823155155p:plain

請求額に占める割合が大きいボリュームについてもう少し詳しく見てみましょう。Menu列とUsage列を使うとRoot Disk、Data Diskごとの使用量を見れます。8/10〜8/17まで1日で使用量がData Diskの値が480GB-Hour、Root Diskの値が360GB-Hour増えていることから、24時間で割るとData DiskとRoot Diskがそれぞれ20GB、15GB存在していたことがわかります。その後、Data Diskが不要であったことから削除するとその後は値が増えなくなり課金も止まっています。このように値の変化から無駄を発見し対応していくことで、より効率的にクラウドを使うことができます。

f:id:asasaki:20160823162550p:plain

利用明細をみるときの注意点

最後に利用明細やビリングAPIの結果をみるときに注意点について少し触れておきましょう。

利用明細やビリングAPIはあくまでも課金情報を提供するためのものなので、課金対象外のリソースの使用量が含まれていなかったり、計算方法がサービスにより異なることがあります。

例えば、IDCFサービス間のトラフィックについては課金対象外となるため合計使用量(Usage)には含まれていません。また、多くのリソースでは毎時の使用量を合計した合計使用量を課金に利用していますが、平均使用量を課金に用いるオブジェクトストレージのストレージの料金のような例外もあります。このようなリソースでは合計使用量(Usage)の値も課金に使用される値(オブジェクトストレージの例では平均使用量)になるので注意が必要です。各リソースで使われている単位や請求額の計算方法については各サービスのドキュメントを参照してください。

おわりに

IDCFクラウドの料状況を利用明細とビリングAPIを使って把握する方法をご紹介しました。 コストの削減やリソース管理の効率化にお役にたてば幸いです。

超高速NoSQLデータベースAerospikeを試してみた

IDCFクラウド ビッグデータ Aerospike

お久しぶりです、ソリューションアーキテクト部の金杉です!

今年度から、ソリューションアーキテクト部に新たにエバンジェリストグループができました。いろいろと情報を発信していく他、みなさまのお役に立てるコミュニティテンプレートの公開も順次していこうと思います。本日は、その第一弾、Aerospike Server Community Editionテンプレートの使い所を紹介しますー!

Aerospikeってなに?

社会がビッグデータやIoT革命を起こしている今、アプリケーションはより高品質なデータベースを必要としています。"高品質"には、リアルタイムで的確に答えを出せる速度と、より膨大なデータを処理できるスケーラビリティが求められています。Aerospikeは、そのようなニーズを満たす、速度とスケーラビリティを両立させた高性能なNoSQLデータベースサーバーです。

www.aerospike.jp

今回のブログでは、簡単に以下4点を紹介します!

  1. Aerospikeのすごいところ
  2. IDCFクラウドでAerospike Serverを立ててみる(500円でできるんだぜ)
  3. AMCから確認してみる
  4. C言語のクライアントとベンチマークツールを試してみる
続きを読む
Copyright © IDC Frontier Inc.