MapDをAWS上で試してみた

MapDとは

https://www.mapd.com/
地図データを扱うことに長けたデータベース製品であり、データを可視化するVisual Analytics Platformを持つ。
データベースの検索から地図上への表示までがとても高速なのが売り。
Enterprise Edition(有償)とCommunity Edition(無償)があり、どちらもAMIが提供されているため、AWS環境があれば簡単に触ることができる。
今回はCommunity EditionのAMIを試してみる。
ちなみに、AMIには既にデモデータが入っているため、どれだけ高速にデータを可視化できるのか試すことができる。

インスタンス作成上限の制限緩和申請

MapD Community EditionのAMIは次の3つのインスタンスタイプでしか作成できない。

  • p2.xlarge
  • p2.8xlarge
  • p2.16xlarge

しかし、これらのタイプのインスタンスの作成上限はデフォルトで0になっているようで、このままではインスタンスを作成できない。
そのため、AWSコンソールにログインし、EC2サービスを開いて、左上にある”制限”という項目から、今回利用したいインスタンスの上限制限を緩和する申請を出さなければならない。
私の場合は申請してから1日後にインスタンスを作成できるようになった。

費用

Community Editionの費用

インスタンスタイプ 1時間当たりの費用
p2.xlarge $1.542
p2.8xlarge $12.336
p2.16xlarge $24.672

2017年10月時点

導入手順

インスタンスの作成

  1. AWSコンソールにログインし、EC2サービスを開く
  2. インスタンスの作成をクリックし、左側のペインからAWS Marketplaceを開く
  3. AWS Marketplace 製品の検索にMapDと入力し、Community Editionを選択する
  4. インスタンスタイプはp2.xlargeを選択した
  5. ネットワークは必要に応じて設定し、ストレージはデフォルトのままとした
  6. セキュリティグループはデフォルトの設定に加えてHTTPSを通すように設定した

ElasticIPとパブリックDNS

  1. ElasticIPを使ってインスタンスにグローバルIPを割り当てる
  2. パブリックDNSが表示されればok
  3. されない人は、VPCの設定から、DNS解決とDNSホスト名を「はい」に設定する

早速触ってみる

https://<public_dns>:8443

上記のURLにアクセスすると、次のような画面になります。
(安全な接続ではありませんというエラーが出ても無視して進む)
image.png

ここでPASSWORDにインスタンスIDを入力するとログインできます。
ログイン後の画面はこんな感じ
image.png

デモデータはニューヨークのタクシー情報のようです。
画面をスクロールすると、右側の表示がリアルタイムに切り替わっていく。
(右上にデータ件数が表示されているのですが、この件数をほぼリアルタイムで可視化できる!)
右側の棒グラフをクリックすると、そのデータだけ地図上に表示できたりします。
image.png

まとめ

  • MapDの立ち上げは、ものの15分ぐらいでできた
  • デモデータも入っているし、可視化まで簡単にできるので、どの程度の性能なのか見たい人にオススメ

続きを読む

個人的Auroraの良い資料まとめ

ここ1ヶ月ほどAuroraの資料をかき集めていたのですが、数ヶ月後にはそのURLとか忘れてしまいそうなのでそのメモです。対象の資料はある程度まとまった情報があるものです。

公式・非公式含めオープンにされている情報ではある程度(自分では)かき集めたと思っておりますが、何か良記事が他にもあれば教えて欲しい。

(Slide)
Amazon Aurora (Blackbelt)
https://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-online-seminar-amazon-aurora

Amazon Aurora を使いこなすためのベストプラクティス
https://www.slideshare.net/AmazonWebServicesJapan/auroraamazon-aurora

re:invent2014
https://www.slideshare.net/AmazonWebServices/sdd415-new-launch-amazon-aurora-amazons-new-relational-database-engine-aws-reinvent-2014

re:invent2016
https://www.slideshare.net/AmazonWebServices/aws-reinvent-2016-deep-dive-on-amazon-aurora-dat303

Amazon Aurora Performance Assessment
(資料に出てくるMySQLに比べて最大5倍の性能は以下の条件で出たパフォーマンス)
https://d0.awsstatic.com/product-marketing/Aurora/RDS_Aurora_Performance_Assessment_Benchmarking_v1-2.pdf

Amazon Aurora (MySQL-compatible edition) Deep Dive (AWS summit tokyo 2017)
https://d0.awsstatic.com/events/jp/2017/summit/slide/D3T1-6.pdf

Announcing Amazon Aurora with PostgreSQL Compatibility
https://www.slideshare.net/AmazonWebServices/announcing-amazon-aurora-with-postgresql-compatibility-january-2017-aws-online-tech-talks

Amazon Aurora with PostgreSQL Compatibilityを評価して
https://s3-ap-northeast-1.amazonaws.com/20170705-awssolutiondays-dbday-sessiondoc/awsdbday-keynote-SRA+OSS+Inc.pdf

(white paper)
Getting Started with Amazon Aurora
https://d0.awsstatic.com/whitepapers/getting-started-with-amazon-aurora.pdf

Amazon Auroraへのデータベースの移行
https://d0.awsstatic.com/International/ja_JP/Whitepapers/Migrating%20your%20databases%20to%20Amazon%20Aurora.pdf

Best Practices for Migrating MySQL Databases to Amazon Aurora
https://d0.awsstatic.com/whitepapers/RDS/Best-Practices-for-Migrating-MySQL-Databases-to-Amazon-Aurora.pdf

Oracle Database から Aurora & Redshift に移行するための実践ガイド
https://d0.awsstatic.com/events/jp/2017/summit/slide/D3T2-2.pdf

percona社Marco Tusa氏
http://www.tusacentral.net/joomla/index.php/mysql-blogs/175-aws-aurora-benchmarking-blast-or-splash.html
https://www.percona.com/blog/2016/05/26/aws-aurora-benchmarking-part-2/

Szymon Komendera (Auroraの中の人?)
http://blog.symedia.pl/search/label/Amazon%20Aurora

(事例)
株式会社レコチョクによる Amazon Aurora 活用事例
https://aws.amazon.com/jp/solutions/case-studies/recochoku-aurora/

ゲオを支えるDB基盤の歴史と未来~OracleからAuroraへ~
https://d0.awsstatic.com/events/jp/2017/summit/slide/D2T4-5.pdf
http://dev.classmethod.jp/cloud/aws/report-db-history-and-future-from-oracle-to-aurora-geo/

(おまけ)
Amazon CTOが公開したCloud上のデーターベースとしてのAuroraに関する解説資料
http://www.allthingsdistributed.com/2017/05/amazon-aurora-design-considerations.html
Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases
http://www.allthingsdistributed.com/files/p1041-verbitski.pdf

アンチAuroraが垣間見えるpercona記事
https://www.percona.com/blog/2017/08/22/mysql-high-availability-landscape-2017-adults/
The MySQL High Availability Landscape in 2017 (The Adults)

続きを読む

[2017夏版] AWS Start-up ゼミ参考資料リンク集をマークダウンに起こしました

TL;DR

こんにちは。AWSリハビリ中のnntsuguです。

[AWS Start-up ゼミ] よくある課題を一気に解説!〜御社の技術レベルがアップする 2017 夏期講習〜

先日参加させていただいたAWS Stat-upゼミ、講師のSA塚田さんの資料がとても良かった。
AWS上でサービスを構築運用する上での勘所がユースケースベースで整理されていて、モヤモヤしていた部分がかなりスッキリししました。

資料内にある参考資料や動画へのLink、とても勉強になるのですが、

  • PDFやSlideShareだとスマホから参照しづらい
  • 未読管理をしやすくするため

マークアップに起こしました。

毎朝ジムで走りながら参考資料の動画を見て聞いています。とても捗ります。

参考資料は主にBlack Beltの資料&動画アーカイブ、AWS Summit/Dev Dayの資料で構成されています。

ユーザ動向を分析したい

CI/CDをちゃんとしたい

コンテナを使いたい

運用監視ちゃんとしたい

システム負荷下げたい

(モバイルアプリの)Growth Hackしたい

コスト下げたい

  • AWS Black Belt Online Seminar資料&動画

    • クラウドのためのアーキテクチャ設計-ベストプラクティス-(資料|動画)
    • Auto Scaling (資料 | 動画)
    • Amazon EC2 Spot Instances (資料 | 動画)
    • サーバーレスによるアーキテクチャパターンのご紹介 (資料 | 動画)
  • AWS Summit/Dev Day講演資料 (2016 | 2017)
    • AWS のコスト最適化入門 (2017)(資料 | 動画)
    • [インティメート・マージャー様] AWS Summit 2017 講演資料 Amazon ECS と SpotFleet を活用した低コストでスケーラブルなジョ
      ブワーカーシステム(資料 | 動画)
    • AWS Well-Architected フレームワークによるクラウド ベスト プラク
      ティス (2017) (資料 | 動画)

その他

IPOとBuy Out、デューデリジェンス

続きを読む

【AWS】ELB+Gitlabの構築・設定(Google認証付き)

目的

AWSでGitlabを構築するにあたり、ELBでHTTPSを受け付け、後段EC2のGitlabサーバにて処理。
それを実現するためのGitlab設定方法をまとめる。
併せて、Gitlabでoogle認証を行う場合の設定も記載。

全体概要はこんな感じ

  • ELBには「https://xxx」で通常443ポート開放
  • https://xxx/gitlab/」でアクセスした場合はGitlabサーバに「http://xxx/gitlab」で送る。
  • 他に「https://xxx/app1/」とした場合は別のサーバへ振り分けるイメージ

スクリーンショット 2017-08-06 16.51.02.png

やらないこと

  • ELB、EC2などのAWSの設定
  • 公式に載っているGitlabのインストール手順
  • google認証を行うためのgoogle側の設定

前提

Gitlabのバージョン:GitLab Community Edition 9.3.6
標準のgitlabのインストールを実行済み
公式インストール手順(CentOS6)
※AWSLinuxでも同様

gitlabへSSH通信は行わない。PushなどはHTTPSでの認証とする。

1. ELBとGitlabの連携

1-1. gitlab.rbの編集

==[ELBの連携まで]==
#cd /etc/gitlab/gitlab.rb
#diff gitlab.rb gitlab.rb.org

13,14c13
< external_url 'https://xxx/gitlab'
---
> external_url 'http://xxx'
807c806
< nginx['listen_port'] = 80
---
> # nginx['listen_port'] = nil
811c810
< nginx['listen_https'] = false #https通信の無効化
---
> # nginx['listen_https'] = nil
817c816
<  nginx['proxy_set_headers'] = {
---
> # nginx['proxy_set_headers'] = {
821c820
<   "X-Forwarded-Proto" => "https",
---
> #  "X-Forwarded-Proto" => "https",
825c824
<  }
---
> # }

1-2. 再起動

gitlab-ctl reconfigure
gitlab-ctl start

1-3. ELB連携のポイント

gitlab.rbのみ編集し、reconfigureで反映するため一番きれいな方法だと思います。
直接nginx.conf等修正するとreconfigure時に上書きされるので。

ブラウザからの画面表示(リンクやPOSTのパス)はHTTPSにする必要がありつつ、
gitlabサーバ自体をHTTPで処理させるのが面倒でした。

2. GitlabでGoogle認証を設定する場合

2-1. gitlab.rbの編集

==[GoogleAuthまで]==
#cd /etc/gitlab/gitlab.rb
#diff gitlab.rb gitlab.rb.org

221c220
< gitlab_rails['omniauth_enabled'] = true
---
> # gitlab_rails['omniauth_enabled'] = false
223d221
< gitlab_rails['omniauth_allow_single_sign_on'] = ['google_oauth2']
230,239c228,235
< gitlab_rails['omniauth_external_providers'] = ['google_oauth2']
< gitlab_rails['omniauth_providers'] = [
<   {
<     "name" => "google_oauth2",
<     "app_id" => "各自のapp-id",
<     "app_secret" => "各自のシークレット",
<     "args" => { "access_type" => "offline", "approval_prompt" => "",
<     "hd" =>  "許容ドメイン(hoge.com)" }
<   }
< ]
---
> # gitlab_rails['omniauth_providers'] = [
> #   {
> #     "name" => "google_oauth2",
> #     "app_id" => "YOUR APP ID",
> #     "app_secret" => "YOUR APP SECRET",
> #     "args" => { "access_type" => "offline", "approval_prompt" => "" }
> #   }
> # ]

2-2. 再起動

gitlab-ctl reconfigure
gitlab-ctl start

2-3. google認証のポイント

特定のドメインのみ許可したい場合は、hdオプションを利用することです。
google認証側で特定ドメインのみ対応してくれます。
特定ドメインが不要であればオプション外せば大丈夫なはずです。

おまけ

Gitlab, Redmine, Jenkinsなど利用しますが、どれも/配下やHttps->Httpの切り替え方法が異なるので、
いちいち調べるのが面倒。なんかいい方法ないかなぁ。

参考

似たような対応として下記の記事を参考にさせて頂きましたが、Reconfigureをすると、
設定が変更されてしまうためメンテナンスする際に面倒なため、/etc/gitlab/gitlab.rbのみで対応できる方法を書きました。
http://qiita.com/morozumi_h/items/128d3254fd2eb4671966

続きを読む

[localstack] ローカル環境にAWSサービスのモックを作り開発をする

AtlassianのLocalStackを使ってみてなんとなく理解するまでのお話 の通りなのですが本家のgithubを見るとこんな感じになってたので現行どうするかを備忘録としてメモします。

 
 スクリーンショット 2017-08-02 16.33.49.png

Atrasian/localstack -> localstack/localstack に変更になってます。

前提

  • Mac(macOS Sierra)
  • Docker Commnity Edition (Version: 7.06.0-ce-mac19)

  • dockerコマンドがコンソール上で実行可能であること

  • AWS CLIの設定が完了していること

イメージの準備

pull
docker pull localstack/localstack

起動

run
docker run -it -p 4567-4582:4567-4582 -p 8080:8080 localstack/localstack

起動させたらコンソールは放置

確認

ブラウザを立ち上げ

http://localhost:8080/

へアクセス

こんな画面が立ち上がってれば安心して大丈夫

エンドポイント

githubから転記してきましたが、変わってる可能性があるので必ず本家で確認して下さい。
https://github.com/localstack/localstack

サービス名 エンドポイントURL
API Gateway http://localhost:4567
Kinesis http://localhost:4568
DynamoDB http://localhost:4569
DynamoDB Streams http://localhost:4570
Elasticsearch http://localhost:4571
S3 http://localhost:4572
Firehose http://localhost:4573
Lambda http://localhost:4574
SNS http://localhost:4575
SQS http://localhost:4576
Redshift http://localhost:4577
ES (Elasticsearch Service) http://localhost:4578
SES http://localhost:4579
Route53 http://localhost:4580
CloudFormation http://localhost:4581
CloudWatch http://localhost:4582

AWS CLI

CLIコマンドを発行する場合
--endpoint-url で上記のエンドポイントを指定して使用します。
デフォルトのリージョンをconfigで指定していない場合、コマンドで--region を指定する必要があります。

サンプル(SQS)
aws sqs create-queue 
        --queue-name 'SAMPLE' 
        --region ap-northeast-1 
        --endpoint-url http://localhost:4576 
        --profile $myProfile

SDK(nodejs)

サンプル
'use strict';

const AWS = require('aws-sdk');
const endPoint = new AWS.Endpoint('http://localhost:4578');
const region = 'ap-northeast-1';
const s3 = new AWS.S3({ endpoint: endPoint, region: region });

基本的にはエンドポイントに上記URLを指定するだけでAPIをリクエストすることが出来ます。
ElasticSerchはすでに使用可能な状態のElasticSerchが動いています。ESの方はドメイン作成とかのAPI用のモックって感じですね。
開発の際に特にデータ系は何かレスポンスが必要なので地味に使えるツールですね

続きを読む

AWSでWOWZAサーバ構築に使用するAMI

探したのでメモ

Version 4.6.0* released 04/18/2017

Region AMI ID
Asia Pacific (Mumbai) ami-ccc9baa3
EU (London) ami-61c5d105
EU (Ireland) ami-34f1f552
Asia Pacific (Seoul) ami-811fcdef
Asia Pacific (Tokyo) ami-a6a689c1
South America (Sao Paulo) ami-6ddbb901
Canada (Central) ami-82d569e6
Asia Pacific (Singapore) ami-de3a83bd
Asia Pacific (Sydney) ami-8a343de9
EU (Frankfurt) ami-c38d50ac
US East (N. Virginia) ami-4cd0405a
US East (Ohio) ami-9c9fbbf9
US West (N. California) ami-6695b006
US West (Oregon) ami-18fd6078

Version 4.5.0 released 06/29/2016

Region AMI ID
Asia Pacific (Mumbai) ami-6d94fe02
EU (Ireland) ami-91960ce2
Asia Pacific (Singapore) ami-8025f7e3
Asia Pacific (Sydney) ami-c391b9a0
Asia Pacific (Seoul) ami-6577bc0b
EU (Frankfurt) ami-62dc370d
Asia Pacific (Tokyo) ami-8e0ffeef
US East (N. Virginia) ami-969f56fb
US East (Ohio) ami-75356e10
US West (N. California) ami-901c5bf0
South America (Sao Paulo) ami-3952c755
US West (Oregon) ami-8b3ff9eb

Version 4.4.1 released 03/18/2016

Region AMI ID
EU (Ireland) ami-5995102a
Asia Pacific (Singapore) ami-6039f203
Asia Pacific (Sydney) ami-8f0b2bec
Asia Pacific (Seoul) ami-08935a66
EU (Frankfurt) ami-0515f26a
Asia Pacific (Tokyo) ami-a0aaa1ce
US East (N. Virginia) ami-68f7f402
US West (N. California) ami-6a5d2f0a
South America (Sao Paulo) ami-6cd95500
US West (Oregon) ami-cb5db4ab

Version 4.3.0 released 11/05/2015

Region AMI ID
EU (Ireland) ami-c0a77eb3
Asia Pacific (Singapore) ami-4566a126
Asia Pacific (Sydney) ami-51520c32
Asia Pacific (Seoul) ami-269d5348
EU (Frankfurt) ami-b52c3fd9
Asia Pacific (Tokyo) ami-ee183f80
US East (N. Virginia) ami-ae473bc4
US West (N. California) ami-a65639c6
South America (Sao Paulo) ami-b148f3dd
US West (Oregon) ami-86e7f0e7

Version 4.2 released 08/10/2015

Region AMI ID
EU (Ireland) ami-d03f74a7
Asia Pacific (Singapore) ami-7c3b392e
Asia Pacific (Sydney) ami-23c48219
EU (Frankfurt) ami-c81b1ed5
Asia Pacific (Tokyo) ami-0652e506
US East (N. Virginia) ami-1370ad78
US West (N. California) ami-1fb4495b
South America (Sao Paulo) ami-9f77f882
US West (Oregon) ami-b1686481

参考:Wowza Streaming Engine 4: Pro Edition (HVM)

続きを読む