元RX-7乗りの適当な日々 このページをアンテナに追加 RSSフィード Twitter

RX-7(FD3S)WRX STI関連のキーワードで検索されて来られた方へ。
右サイドのカテゴリ『』をクリックすると関連する項目だけが表示されます。
日々の写真は『Flickr』で公開しています。

2013/06/17

by adwriter

カメのぬいぐるみが勝手に笑い出した話


奇妙な体験だったが、なんとなく忘れたくない出来事だったのでブログに残す。

ちょうど1年前に祖母が亡くなりました。今日は祖母の命日です。

ちなみに、そのお通夜・お葬式の帰り道に、台風で足止めをくらって、新幹線ホテルに泊まるはめになったことは、僕の中でまだ記憶に新しい。



本題に入ろう。

今から書く話は全て事実にもとづいた話です。


うちには出産のお祝いで頂いたカメさんのぬいぐるみがある。

このぬいぐるみは、お腹のあたりにボタンがあって、ボタンを押すと笑い声を発する仕様になっている。


6/15の1時と2時の間くらいだっただろうか。

僕は書斎で作業をしていたんだけど、急にどこかから笑い声が聞こえた気がした。

外は雨だったけど、蒸し暑くて、ちょっと窓を開けていたので、最初は外で誰かが笑っているのかなぁと思ってた。


が、それから1時間くらいたった後で、もう一度笑い声が聞こえたところで、ハッとする。

これ、カメさんのぬいぐるみの声じゃね?と。


尚、カメさんのぬいぐるみはリビングにあって、妻と息子は書斎の隣の寝室で寝ていた。

誤作動かな?と思ったのと、深夜にあまり考えると怖くなりそうという本能的な防御機構で、その時はあまり気にはしていなかった。



6/15の23時過ぎだっただろうか。僕と妻はLDKにいた。

2人がいる前で再びカメさんのぬいぐるみの笑い声がして、僕は妻と目を合わせた。

「そういえば昨日の夜もこんな事があったんだよねー。誤作動かなぁ。」

と言いながら、妻が怖がりであることを知っている僕は、これ以上この話題はやめよう、と思って流す事にした。


そして6/16の1時25分頃だったと思う。書斎で作業していると、再びリビングからカメさんのぬいぐるみの笑い声が聞こえた。

妻と息子は既に隣の寝室で寝ており、やはりリビングは無人である。

いよいよ気持ち悪くホラー感を感じると同時に、何が起こっているのかを知りたくなって、ぬいぐるみを分解してみようかと思い立つ。


しかし、ぬいぐるみ内の機械を取り出すには、生地を破らないとアクセスできないようになっていて、普段、割と息子が気に入って遊んでくれているのと、もらいものってこともあって、傷はつけたくないなぁ、というジレンマがあり、躊躇していた。(縫ってしまえば、いいっちゃいいんですけどね)


そういえば、6/17、つまりその日の翌日は祖母の命日だったなぁ、と。

僕は遠方なので参加できなかったんだけど、僕の父母は一周忌に行っていた。

窓の外は大雨だったんだけど、そういえば1年前も台風が来ていて、大雨だったことを思い出した。

1年前のことを思い出していると、ひょっとしてばあちゃんが遊びに来てくれたのかなぁとか考え始める。

ちなみに、この1日前の6/15は確か祖父の命日でもあったりする。1日に2回笑い声がしたのは、じいちゃんも遊びに来ていたのかもしれない。


深夜に大雨って、なんかそういう雰囲気あるよなぁ、とか思う。

雨が上がる頃には、きっとじいちゃんとばあちゃんは帰ってしまうんじゃないかな。そんな気がした。

そんなことを考えていたら、カメさんのぬいぐるみを分解してみようという気持ちもすっかり失せてしまった。



Facebookでこの出来事を書いたら、電池を抜いてみたらいいとか、カメラを仕掛けてみようとコメントをもらったけど、僕の中では↑のままの解釈ってことでいいかなぁと思ってる。妻も「そうなのかもね。」と言っていた。


とすると、遊びに来てくれたばあちゃんとじいちゃんは、何かを知らせたかったのだろうか。

それとも遊びに来てくれたことを伝えたかったのだろうか。


妻は、カメさんの笑い声だったんだから、

最後まで笑えるような人生にしなさい。

って伝えたかったんじゃない?って言ってて、それが腑に落ちた僕はそう解釈することにした。


ちなみに、今は6/17の21時なんですが、↑以降、カメさんが勝手に笑い出す現象は起こっていない。

2013/06/12

by andreas.hopf

Linux/Mac/Windowsでハードウェア構成に関する情報を調べる


サーバ/クライアントPC問わず、今使っているマシンのハードウェア構成がどのようなものかをOS上で確認したくなることもあるでしょう。

そんな時にお手軽に調べられる方法を、たまーにググったりするので、Linux/Mac OS X/Windowsの3つのOSの場合の調べ方をここに残しておきます。


Linux

Linuxでハードウェア構成に関する情報を調べる - id:rx7(@namikawa)の技術メモ - 技術日記ここで書いていました(^^)

Linuxでは、dmidecodeコマンドを使います。

BIOSの情報とか、マシンの各種システム情報(シリアルナンバー等の各種メタ情報、CPU、メモリ、その他デバイス情報とか)が取得できます。

CentOS/RHELとかだと"kernel-utils"パッケージがインストールされていれば使えます。


ちょっと長いですが、以下のような感じです。

# dmidecode

# dmidecode 2.11
SMBIOS 2.7 present.
87 structures occupying 3996 bytes.
Table at 0x7F1FE018.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
        Vendor: FUJITSU // American Megatrends Inc.
        Version: V4.6.5.3 R2.4.0 for D3032-A1x
        Release Date: 08/10/2012
        Address: 0xF0000
        Runtime Size: 64 kB
        ROM Size: 8192 kB
        Characteristics:
                PCI is supported
                BIOS is upgradeable
                BIOS shadowing is allowed
                Boot from CD is supported
                Selectable boot is supported
                EDD is supported
                Print screen service is supported (int 5h)
                Serial services are supported (int 14h)
                Printer services are supported (int 17h)
                ACPI is supported
                USB legacy is supported
                BIOS boot specification is supported
                Targeted content distribution is supported
                UEFI is supported
        BIOS Revision: 2.4
        Firmware Revision: 6.53

Handle 0x0001, DMI type 1, 27 bytes
System Information
        Manufacturer: FUJITSU
        Product Name: PRIMERGY RX200 S7
        Version: GS03
        Serial Number: MAAQ00XXXX
        UUID: XXXXXXXX-BAE4-E111-8607-F80FXXXXXXXX
        Wake-up Type: Power Switch
        SKU Number: S26361-XXXX-Vxxx
        Family: SERVER

Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
        Manufacturer: FUJITSU
        Product Name: D3032-A1
        Version: S26361-D3032-A100 WGS02 GS02
        Serial Number: 5556W01001GXXXXXXXXXXXX
        Asset Tag:
        Features:
                Board is a hosting board
                Board is replaceable
        Location In Chassis:
        Chassis Handle: 0x0003
        Type: Motherboard
        Contained Object Handles: 0

Handle 0x0003, DMI type 3, 22 bytes
Chassis Information
        Manufacturer: FUJITSU
        Type: Rack Mount Chassis
        Lock: Not Present
        Version: RX200S7R1
        Serial Number: MAAQ00XXXX
        Asset Tag: System Asset Tag
        Boot-up State: Safe
        Power Supply State: Safe
        Thermal State: Safe
        Security Status: None
        OEM Information: 0x00000000
        Height: 1 U
        Number Of Power Cords: Unspecified
        Contained Elements: 0
        SKU Number: S26361-XXXX-Vxxx

Handle 0x0004, DMI type 4, 42 bytes
Processor Information
        Socket Designation: CPU1
        Type: Central Processor
        Family: Xeon
        Manufacturer: Intel
        ID: D7 06 02 00 FF FB EB BF
        Signature: Type 0, Family 6, Model 45, Stepping 7
        Flags:
                FPU (Floating-point unit on-chip)
                VME (Virtual mode extension)
                DE (Debugging extension)
                PSE (Page size extension)
                TSC (Time stamp counter)
                MSR (Model specific registers)
                PAE (Physical address extension)
                MCE (Machine check exception)
                CX8 (CMPXCHG8 instruction supported)
                APIC (On-chip APIC hardware supported)
                SEP (Fast system call)
                MTRR (Memory type range registers)
                PGE (Page global enable)
                MCA (Machine check architecture)
                CMOV (Conditional move instruction supported)
                PAT (Page attribute table)
                PSE-36 (36-bit page size extension)
                CLFSH (CLFLUSH instruction supported)
                DS (Debug store)
                ACPI (ACPI supported)
                MMX (MMX technology supported)
                FXSR (FXSAVE and FXSTOR instructions supported)
                SSE (Streaming SIMD extensions)
                SSE2 (Streaming SIMD extensions 2)
                SS (Self-snoop)
                HTT (Multi-threading)
                TM (Thermal monitor supported)
                PBE (Pending break enabled)
        Version: Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz
        Voltage: 0.9 V
        External Clock: 100 MHz
        Max Speed: 4000 MHz
        Current Speed: 2200 MHz
        Status: Populated, Enabled
        Upgrade: Socket LGA2011
        L1 Cache Handle: 0x0005
        L2 Cache Handle: 0x0006
        L3 Cache Handle: 0x0007
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified
        Core Count: 8
        Core Enabled: 8
        Thread Count: 16
        Characteristics:
                64-bit capable
                Multi-Core
                Hardware Thread
                Execute Protection
                Enhanced Virtualization
                Power/Performance Control


・・・・・以下、長すぎるので省略・・・・・

ちなみに、dmidecodeコマンドはオプション無しで実行すると、全ての情報を出力しますが、"-s"オプションや"-t"オプションを利用すると必要な情報だけを絞り込んで出力することも可能です。

例えば「dmidecode -t memory」を実行すればメモリデバイスの情報のみが出力されます。

以下は参考までにコマンドヘルプの情報と、、、

# dmidecode --help
Usage: dmidecode [OPTIONS]
Options are:
 -d, --dev-mem FILE     Read memory from device FILE (default: /dev/mem)
 -h, --help             Display this help text and exit
 -q, --quiet            Less verbose output
 -s, --string KEYWORD   Only display the value of the given DMI string
 -t, --type TYPE        Only display the entries of given type
 -u, --dump             Do not decode the entries
     --dump-bin FILE    Dump the DMI data to a binary file
     --from-dump FILE   Read the DMI data from a binary file
 -V, --version          Display the version and exit

manの一部を。(-s, -tオプションの詳細)

-s, --string KEYWORD
    Only display the value of the DMI string identified by KEYWORD.  KEYWORD  must  be  a  keyword
    from  the  following  list: bios-vendor, bios-version, bios-release-date, system-manufacturer,
    system-product-name,  system-version,  system-serial-number,  system-uuid,  baseboard-manufac-
    turer,  baseboard-product-name,  baseboard-version,  baseboard-serial-number, baseboard-asset-
    tag,  chassis-manufacturer,  chassis-type,  chassis-version,  chassis-serial-number,  chassis-
    asset-tag,  processor-family,  processor-manufacturer, processor-version, processor-frequency.
    Each keyword corresponds to a given DMI type and a given offset within this entry  type.   Not
    all  strings  may  be meaningful or even defined on all systems. Some keywords may return more
    than one result on some systems (e.g.  processor-version on  a  multi-processor  system).   If
    KEYWORD  is  not  provided or not valid, a list of all valid keywords is printed and dmidecode
    exits with an error.  This option cannot be used more than once.

-t, --type TYPE
    Only display the entries of type TYPE. TYPE can be either a DMI type number, or a  comma-sepa-
    rated  list  of  type  numbers, or a keyword from the following list: bios, system, baseboard,
    chassis, processor, memory, cache, connector, slot. Refer to the DMI TYPES section  below  for
    details.   If  this  option  is  used more than once, the set of displayed entries will be the
    union of all the given types.  If TYPE is not provided or not valid, a list of all valid  key-
    words is printed and dmidecode exits with an error.

Mac OS X

Mac OS Xでは、system_profilerコマンドを使います。

Linuxのdmidecodeコマンドと比べて、多くの情報が取得できる印象です。

$ system_profiler
Hardware:

    Hardware Overview:

      Model Name: MacBook Air
      Model Identifier: MacBookAir3,1
      Processor Name: Intel Core 2 Duo
      Processor Speed: 1.4 GHz
      Number of Processors: 1
      Total Number of Cores: 2
      L2 Cache: 3 MB
      Memory: 4 GB
      Bus Speed: 800 MHz
      Boot ROM Version: MBA31.0061.B01
      SMC Version (system): 1.67f10
      Serial Number (system): C02DXXXXXXXX
      Hardware UUID: XXXXXXXX-2D7A-5461-8807-1A8CXXXXXXXX

・・・・・一部省略・・・・・

Graphics/Displays:
    NVIDIA GeForce 320M:
      Chipset Model: NVIDIA GeForce 320M
      Type: GPU
      Bus: PCI
      VRAM (Total): 256 MB
      Vendor: NVIDIA (0x10de)
      Device ID: 0x08a2
      Revision ID: 0x00a2
      ROM Revision: 3571
      Displays:
        Color LCD:
          Resolution: 1366 x 768
          Pixel Depth: 32-Bit Color (ARGB8888)
          Main Display: Yes
          Mirror: Off
          Online: Yes
          Built-In: Yes
          Connection Type: DisplayPort
        Display Connector:
          Status: No Display Connected
Memory:
    Memory Slots:
      ECC: Disabled
        BANK 0/DIMM0:
          Size: 2 GB
          Type: DDR3
          Speed: 1067 MHz
          Status: OK
          Manufacturer: 0x80CE
          Part Number: 0x4D34373142353237334348302D5946382020
          Serial Number: 0x00000000
        BANK 1/DIMM0:
          Size: 2 GB
          Type: DDR3
          Speed: 1067 MHz
          Status: OK
          Manufacturer: 0x80CE
          Part Number: 0x4D34373142353237334348302D5946382020
          Serial Number: 0x00000000

・・・・・以下、長すぎるので省略・・・・・

こちらもdmidecode同様、何もオプションを付けずに実行すると、全ての情報が出力されますが、"-detailLevel"のオプション指定や、DataTypeを指定することで必要な情報のみ出力することが可能です。(詳細は以下ヘルプ参照)

system_profiler -listDataTypes」を実行すると、指定可能なDataTypeの一覧が出力されます。


例えば、ディスクまわりの情報が見たいときなどは、、、

$ system_profiler SPSerialATADataType
Serial-ATA:

    NVidia MCP89 AHCI:

      Vendor: NVidia
      Product: MCP89 AHCI
      Link Speed: 3 Gigabit
      Negotiated Link Speed: 3 Gigabit
      Description: AHCI Version 1.30 Supported

        APPLE SSD TS064C:

          Capacity: 60.67 GB (60,666,413,056 bytes)
          Model: APPLE SSD TS064C                        
          Revision: CJAA0201
          Serial Number:         Y0MAXXXXXXXX
          Native Command Queuing: No
          Removable Media: No
          Detachable Drive: No
          BSD Name: disk0
          Medium Type: Solid State
          TRIM Support: Yes
          Partition Map Type: GPT (GUID Partition Table)
          S.M.A.R.T. status: Verified
          Volumes:
              Capacity: 209.7 MB (209,715,200 bytes)
              Writable: Yes
              BSD Name: disk0s1
            Macintosh HD:
              Capacity: 60.32 GB (60,322,439,168 bytes)
              Available: 24.43 GB (24,429,600,768 bytes)
              Writable: Yes
              File System: Journaled HFS+
              BSD Name: disk0s2
              Mount Point: /

こんな感じで指定してやると確認できるわけですね。


ヘルプも参考までに以下に貼っておきます。

$ system_profiler --help
Usage: system_profiler [-listDataTypes]
       system_profiler [-xml] [-detailLevel n]
       system_profiler [-xml] [dataType1 ... dataTypeN]

  -detailLevel n    specifies the level of detail for the report
                      mini = short report (contains no identifying or personal information)
                      basic = basic hardware and network information
                      full = all available information

  -listDataTypes    lists all the available datatypes

  -xml              generates xml output instead of plain text
                    if redirected to a file with the extension ".spx"
                    the file can be opened in System Profiler.app

Examples:

  system_profiler
     Generates a text report with the standard detail level.

  system_profiler -detailLevel mini
     Generates a short report without identifying/personal information.

  system_profiler -listDataTypes
     Shows a list of the available data types.

  system_profiler SPSoftwareDataType SPNetworkDataType
     Generates a text report containing only software and network data.

  system_profiler -xml >MySystem.spx
     Creates a XML file which can be opened by System Profiler.app

Windows

ビデオチップの種類やビデオメモリ容量を調べたくなった場合(Windows) - 元RX-7乗りの適当な日々ここで書いていました(^^)

Windows OSでは、[Windows]キー + [R]を押して、「ファイル名を指定して実行」のウインドウで、dxdiagと入力するとDirectX診断ツールといったユーティリティが起動し、このソフトから様々なデバイス情報を確認することができます。(コントロールパネルのシステム情報より詳細に取得できてるんじゃないかな。)


http://farm4.static.flickr.com/3056/2800511110_db11029959_o.png

http://farm4.static.flickr.com/3049/2799663943_996475a98e_o.png

こちらは、GUIでの操作ということもあって、特に説明は要らないですねw


追記

コメントにて、「msinfo32.exe」を教えていただきました(↑同様「ファイル名を指定して実行」から実行)。確かにコチラのほうが情報量が多く確認できますね。ありがとうございました!



こんな感じで、各種3つのOSから簡単にシステム情報を確認する方法を書き残してみました。

もっと細かく見たいときやスクリプト等で必要な情報を綺麗に取りだしたい時などは、別途ツールをインストールすればよいのですが、まずはお手軽にチェックする方法を、ってことで(^^;)

それでは! =͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́


2013/06/05

「AWS Summit Tokyo 2013」 1日目の講演メモ #awssummit


今日は午後から、表題のカンファレンスに行ってきました。

f:id:rx7:20130606014630p:image:w480


久しぶりに行くAWS系のビッグカンファレンス。AWSの中の方(ソリューションアーキテクト)が話してくれる「上級者向け」と題されるテクノロジーセッション3つに参加して、メモ書きをとったのでここに残しておきます。

(個人的には、3つ目の大谷さんの話が面白かったです。)


ハイブリッド構成を支えるAWSテクノロジー

  • AWS荒木さん
    • プリンシパルソリューションアーキテクト
    • @

なぜハイブリッド環境なのか
  • 既存のアセットを最大限に活かして、AWSのメリットを享受する
  • 開発での利用パターン(dev,stgで使っている)
    • データをどう持ち運ぶか
  • ディザスタリカバリでの利用パターン
    • データをどうやって同期するか
  • 複数のシステムがハイブリッドでやりとり
    • 監視・制御を複数プラットフォームで
    • システム間連携をどうするか
  • 1システムをハイブリッドで利用する

ハイブリッドシステムへの移行に考える事
  • インフラ
  • データ: 移行とバックアップ
  • 運用

VPCシステム構築のために (はまりやすいポイント)
  • ネットワーク分割のプラクティス
    • ログインする必要の無いELB、RDS、Elasticacheのサブネット
      • 目的(アプリ)別には分けずに、/22や/24など、わかりやすく大きめのネットワークを指定する
    • ログインする必要のあるEC2は目的別に
  • AWSのAPI使用には、インターネット接続が必要
  • AWS内のホスト名は、内部DNSを使った名前で接続

AWS Direct Connect
  • AWSとDC、オフィス、コロケーション環境を専用線で接続
    • 一番大きいメリットは、ネットワーク経路を自分たちでコントロールできること
  • CloudHubとしてのVPCも

ファイルコピー
  • S3へ
    • ファイル転送高速化のために
      • バケットのリージョンを確認する
      • 数十MBを超える場合はマルチパート化
      • 並列転送
      • 数十TPSを超えるならキー名を分散化
        • S3は長時間、使用を続けていると、リソースの単位使用量を制限される場合がある
        • キーの頭3文字を変えるだけで、スピードは変わる
    • 無駄なオペレーションは使わない
      • LISTとかもリソース使う
  • インスタンスへ
    • 任意のプロトコルやアプリケーションを利用可
    • 転送高速化プログラムも
      • Tsunami-UDP
      • Aspera
      • Skeed

ブロックデバイスコピー
  • S3へ
    • AWS Storage Gateway
    • 分割構成が必要な場合
      • キャッシュ型:32TB/Vol
      • 保管型:1TB/Vol
  • インスタンスへ
    • DRBD
    • DRBD Proxy
      • 高遅延や低速度の場合

VM Import/Export
  • vmdkファイルを扱える
    • OSに依存したサービスなので、Windowsインスタンスでしか使えない制約

データベースの同期
  • ファイル、ブロック、VMのコピーでは対応できないアプリケーション
  • 拠点間の距離が離れているときに、現実的な速度で同期できるのか

転送最適化サービスを使った例
  • 以下を考慮すべき
    • データ圧縮
    • 重複排除
    • TCP最適化
    • 伝送路暗号化
  • 上記を実現するマーケットプレイスに登録されているAMI例
    • VloudOpt(オバマ選挙でも利用された
    • Silver Peak

CloudOptの動作イメージ
  • MySQL Master(3306) - CloudOpt(9001) ---(tunnel)--- CloudOpt(9001) - MySQL Slave(3306)
  • CloudOptが通信を最適化してくれる

AWSの提供する運用支援サービス
  • IAMをハイブリッドクラウドで
    • ユーザごとに権限をわけることができる
  • IAM STS (Security Token Service)
    • 一時的(60min〜)なユーザ権限を与える
    • ADやLDAP情報と連携も
  • APN ISVの提供する運用支援サービス
    • マネージメント
      • puppet labs, opscode
    • 監視
    • ログ

VPCによるステージング環境テスト
  • EIP以外の設定は、本番と同様にできる
    • IPアドレス
    • インスタンスタイプ
  • CloudFormation
    • AWS::CloudFormation::Stackを使った分割も可能
    • Outputsにテスト目的情報を出力
  • Route53の重み付け切替
    • 新システムと現行システム間に重み付けの配分が出来る

AWSクラウドはハイブリッド構成への近道

AWSにおける可溶性向上の考え方
  • 各種レイヤーで機能的なサポートが準備されている
  • 足りないものがあれば、SDKによるサービスカスタマイズによる省力化


基幹業務をAWSクラウドで実現する勘所 〜 高可用性システム/バックアップのためのアーキテクチャ設計 〜

  • AWS北迫さん

基幹業務システムとは

システムの安定性
  • 安定性 => 可用性 => 稼働率
  • 可用性・稼働率の向上
    • 冗長化

従来の可用性向上アプローチ
  • ハードウェア
    • 筐体、各種部品、回線、ネットワーク
  • ソフトウェア
    • 負荷分散機能(A/A)、クラスタ機能(A/S)
  • バックアップ

アプローチとしては
  • SPOFの回避
  • 予備機切り替え自動化
  • 稼働率内での一時的なサービス停止は許容
  • 計画停止(は含まないケースも)
  • その結果・・・
    • トータルコストの増加
    • システムの複雑化
    • 障害ポイントの増加
    • システム要件とインフラ構成のサービスレベルのミスマッチ(too muchになりがち

技術が進化して
  • 仮想化によるシステム統合アプローチ
    • システムごと別HWに異動するアプローチ
    • 複雑なクラスタ実装からの脱却、可用性に関する選択肢の増加
    • ただしリソースは有限である

AWSにおける可用性向上の考え方
  • マネージドサービスの活用
  • 予備設備運用からの脱却
  • 大量リソースを活用した可用性の実現
  • DCレベルでの冗長化


  • Networkレイヤーでの冗長化
  • 負荷分散装置
    • ELB
    • LBプロダクト(商用、OSS)による冗長化機能
    • Route53を利用したLBプロダクトの冗長化
      • Route53のヘルスチェック機能を活用
  • サーバインスタンス
    • Stop/Startするだけで別HWへ即時移動
    • マルチAZでより高い可用性の実現
  • インスタンス障害
    • EC2 Status Checkによるインフラレベル障害の自動検知およびオペレーションの自動化
  • HAソフトウェアによる冗長化
    • Heartbeat, pacemaker, DRBD
    • AWS APIを駆使した冗長化
  • ミドルウェア機能による冗長か
    • MySQL Cluster, MHA等
  • RDS
  • EBS
    • 冗長化されたディスク(mirror不要)
    • インスタンス間でのボリュームの付け替え
    • Snapshot機能の利用
  • Snapshot
    • 同一AZ、マルチAZ、マルチRegion間でのsnapshot共有利用
  • S3
    • 物理的に異なる3ヶ所以上のオブジェクト複製
  • マルチAZ
    • 物理的に異なるデータセンターでの運用
    • AZ間は専用線で接続
  • マルチリージョン

AWSによるHAクラスタでの実現
  • シングルAZでのパターン
  • マルチAZでのパターン

AWSによるクラスタ化におけるポイント
  • 複数NICの利用は不要
  • 移動用の仮想IPアドレス指定は、ENI、OS両方で指定が必須
  • VPCの利用によりIPアドレスの固定化
  • EC2インスタンスのSTOP/STARTは同一AZ内での移動
  • EBSはAZ毎に存在
  • VPC SubnetはAZごとにCIDRが異なる

マルチAZでのHAクラスタ
  • 仮想IPの切り替え
    • 内部DNSを利用した接続先Private IPの切り替え
      • AWSに依存しない実装。ただしDNSの運用が必要
    • VPC Subnet Route Tablsの書き換え
      • AWS設定のみで実現可能。ただし構成が多少複雑に
  • データの受け渡し
    • SWデータレプリケーション機能の利用
    • EBS snapshotからの共有

AWSでのバックアップは・・・
  • ポイントは、いかに簡単にS3に格納するか
  • S3におくだけで、ISMSの認定が取れた事例もある
  • クラウドバックアップ
    • AWSに限らず、外部からのバックアップ格納先として
  • AWSデータバックアップ
  • OSS
    • fluentd
    • s3 tools
  • NASアプライアンス
  • GWアプライアンス
  • S3へのデータ転送
    • インターネット越し。SSL通信
    • VPCを使って(VPN)
      • ただしS3はパブリックな領域。VPCで同一のセグメントになるので注意。
    • 専用線Direct Connect (1Gbps/10Gbps)
    • public/private AS
    • AWS Import/Export


AWSクラウドで構築する、ワールドクラスの分散クラウドアーキテクチャ

  • AWS大谷さん
    • エマージングソリューション部 部長
      • 技術駆動でイノベーションを起こす企業様を担当

マルチAZモデル
  • AWS固有のコンセプト
  • AZはAWSでのデータセンター単位
  • リージョン内で同期可能なゾーンを2〜3利用
  • パターン
    • zoneごとにサーバを配置して、ELBからバランス
    • zoneをまたいでデータレプリケーション
  • シングルAZとマルチリージョンの中間。APへのインパクトも小さくおすすめ

マルチリージョンアーキテクチャ
  • 複数のリージョンを使った分散システム
    • AWSのビルディングブロックではカバーしない範囲をカバー
    • 分散システム本来の難しさ
    • フォールトトレラントの維持
  • ユーザエクスペリエンスの向上
    • データの近さを意識してアーキテクティング
      • データローカリティ確保
      • GSLBの利用
        • Route53のレイテンシベースルーティング
  • ディザスタリカバリ
    • AMIやデータのリージョン間コピー
    • AWSの機能をフル活用する
  • 非常に高い可用性
    • マルチAZでの可用性・データ一貫性の維持
      • NASA/NETFLIXでは、3つのリージョンからデータ配信

マルチリージョンでの高可用性のためにおさえたい
  • CAP定理
    • 一貫性、可用性、ネットワーク分断耐性は同時に維持できない
  • 合意プロトコル
    • 正確性、生存性、理論的に適切なパフォーマンスが出せるか
    • リーダー/マスタ選定、分散ロック
    • 複数サーバの中から1サーバだけは書き込む事を保障する
    • Paxos、ZooKeeperとか
  • 耐障害性の維持
    • 地理的には慣れた場合、西海岸/東海岸間では1トランザクション70〜80msecのレイテンシ
    • DC間では非同期のレプリケーション
    • 障害時の復旧の難しさ
    • NASAはGlusterFS使っているが、3リージョンで非同期レプリケーションを使っている(データの一貫性をとるのは難しいが)
    • NETFLIXは、マルチリージョンでCassandra使っている。クオラム+Geo-Replication

マルチリージョンでのデータ一貫性の維持の難しさ
  • CAP定理や合意プロトコルの理解
  • 分散ファイルシステムや分散データベースを用途に応じて利用
  • データ同期方式が非同期であることを意識
  • 耐障害性に対して、あらゆるレベルでのリスクをあらかじめ検討しておくべし
  • ZooKeeperなどのコーディネーションを利用する

マルチリージョンアーキテクチャのポイント
  • 必要になるまで分散させない
    • 必要になるまでマルチリージョンはできるだけ避ける
    • マルチAZをまずは検討する
    • マルチリージョンを使う場合、目的をはっきりさせる
      • ユーザビリティ?非常に高い可用性?バックアップやDR?
  • 物理制約を考慮する(光の速度は超えられない)
    • 分散、分割、非同期コミュニケーション
    • 同期型のコミュニケーションはパフォーマンス劣化がユースケースにあうか

マルチリージョンアーキテクチャの注意点
  • 複合障害の伝搬をどう抑えるか
    • サーキットブレイカーパターン
  • 自動化
    • 素早いロールアウト・ロールバックが必須
    • インフラストラクチャの自動化は必須
    • Chef, Puppet, CloudFormation

テストをどうやってやるか
  • GameDay(本番環境でのテスト)
  • 本番環境でアクティブ/アクティブ構成のテスト
    • 実際の負荷同様でなければ稼働するかどうかわからない
  • Amazon.com: GameDay
  • NETFLIX: Chaos Monkey (OSS)

GameDayは何故できたのか
  • テストを繰り返さないと、どこまでできるかわからない
  • 信頼できないコンポーネントの上で、信頼できるソフトウェアのプラットフォームを構築することが重要という考え方

障害は避けられない、受け入れて日常へ
  • 障害を特別視せずに迅速なリカバリを中心に考える
    • Resilience Engineering
  • GameDayのコア
    • Observe/Orient/Decide/Act
    • プロダクト+人での継続的な訓練
    • 運用主体のカルチャー
  • 技術要素
    • インフラストラクチャの自動化
    • システム、ソフトウェア、オペレーションの全てを本番環境でテスト
    • 障害を受け入れて素早くリカバリー


リカバリーオリエンテッドコンピューティングパターン (ROC)
  • ソフトウェア、ハードウェアは非定期にかつ頻繁に壊れる前提
  • アプリケーションでの障害検出に注力
  • バグの種類には2つある
    • ボーアバグ
      • 再現可能なソフトウェアバグ、本番環境ではレアであるべき
      • Urgent Alert
    • ハイゼンバグ
      • 通常はありえない複数のリクエストや個々に独立した長いオペレーションのパターンの中で発生するバグ、調査しようとすると再現できなかったりするもの
      • restart -> reboot -> re-image -> replace

AWSマルチAZモデル再考
  • AWS固有のコンセプト
  • 現実に今出来る手法
  • 同期式レプリケーションを前提にDCからサービスまで設計
    • S3、RDS、DynamoDBなど
    • データの一貫性を最優先に考えた設計
  • 複数のゾーン間で付加を分散
  • アプリケーション側の開発容易性の確保
    • 分散システム特有の高難度な点をAWSが隠蔽
    • アプリケーション開発者がアプリケーションにフォーカスできるように

まとめ
  • 出来るだけマルチAZを活用
  • データの近さを意識して
  • DRはAWSの機能をフル活用
  • マルチリージョンでのデータ一貫性の維持は難しい
  • 障害は避けられない、受け入れて日常へ
  • 複雑さを排除し、シンプルな構成で運用を


まとめ


Amazon Web Services クラウドデザインパターン 設計ガイド

Amazon Web Services クラウドデザインパターン 設計ガイド


オススメ (一部は、最近読んでいる本とも言う)
Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus) クラウド Amazon EC2/S3のすべて~実践者から学ぶ設計/構築/運用ノウハウ~ [Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ) エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド [24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用 Linux-DB システム構築/運用入門 (DB Magazine SELECTION) キャパシティプランニング ― リソースを最大限に活かすサイト分析・予測・配置 スケーラブルWebサイト 実践ハイパフォーマンスMySQL 第3版 ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE) SQLアンチパターン インターネットのカタチ―もろさが織り成す粘り強い世界― ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化 Linuxの教科書―ホントに読んでほしいroot入門講座 (IDGムックシリーズ)