OpenStack調査メモ
参考URL
Memcached
そもそもMemcachedとは?
第1回 memcachedの基本:memcachedを知り尽くす|gihyo.jp … 技術評論社
データをキャッシュする。メモリを利用。
Webアプリなどで一時的なデータを格納される。停止するとデータは消える。
OpenStackの各コンポーネントも利用している。
通常コントローラでmemcachedサーバが動く
openstackではoslo.cache が管理。
複数の Memcached サーバーの使用時に全プロジェクト間で一貫性を保証。以下は 3 ノードの設定例。
Memcached_servers = controller1:11211,controller2:11211,controller3:11211
デフォルトで controller1 がキャッシュサービスを処理。
そのホストが停止している場合、 controller2 または controller3 がサービスを実施
https://docs.openstack.org/ja/ha-guide/environment-memcached.html
DB
冗長化する方法
Galera Cluster を使用
Galera Cluster は、MySQL と InnoDB ストレージエンジンをベース
同期型のマルチマスターデータベースクラスター
最低3ホスト必要
OpenStack Docs: データベース (Galera クラスター) の高可用性
https://docs.openstack.org/ja/ha-guide/shared-database-manage.html
以下3パターンのデプロイ方法があり。
①OpenStack各サービスに利用するDBを複数設定?
②HAProxy使いActive/Active
③HAProxy使いActive/Passive
デッドロック問題に対応
http://lists.openstack.org/pipermail/openstack-dev/2014-May/035264.html
http://www.joinfu.com/2015/01/understanding-reservations-concurrency-locking-in-nova/
VMwaer NSXのハンズオンラボメモ(HOL-1703-SDC-1- JA 論理スイッチ)
メモ
・ホストサーバで論理スイッチ(以後LS)構成済みでも、分散仮想スイッチ(以後vDS)のポートグループに仮想マシン(以後VM)を接続しただけなら、NSXなし環境と同じ動き。
vDSアップリンク経由で外部ホストと通信可能。
・LSに接続されたVMが外部ホストへ通信する時は、VTEPトンネルを経由し外部との境界に接続されたホストサーバ経由で外部ホストと通信する。
・LS作成の設定項目は以下の通り。



・LS毎にL2セグメントが分かれる(セグメントID=VNI)
・レプリケーションモードは3つあり。
・"IP検出有効化"が有効な場合、ARP通信が最適化される。
VMのARP要求に対しホストサーバが既知の情報から応答
・VMをLSに接続する設定項目は以下の通り
・この時点でLS名が付与されたポートグループがvDS上に作成される。
vSphere Client画面では確認できず。更新が遅い?Webクライアントで確認できる。




・この時点でweb1,2間の通信可能。動作しているホストサーバが異なる為、通信はVTEPトンネル経由で行われる。
・作成したLSにはアップリンクがない為、外部ホストとは通信できない。
・VMが接続されるポートグループは、自動的に変更される。
・アップリンク接続の設定項目は以下の通り。





・論理スイッチのアップリンクを既作成済みのEdge Service Gateway(以後ESG)に接続。
※Perimeter-Gateway-01
・この時点でweb1,2に以下変更をすれば外部NWと接続可能。
IPアドレスを172.16.155.0/24
DGWを172.16.155.1
・NATはされない。
・ESGは外部NWのRouterとルーティング情報を交換している。
・今回新たに作成したESGダウンリンクNW(172.16.155.0/24)も外部NWのRouterに経路情報が伝播され通信が可能になる。
・既存のESGの接続は以下の通り。

・”Uplink-RegionA01-vDS-MGMT”は分散仮想スイッチのアップリンクポートグループ
VMwaer NSXのハンズオンラボメモ(HOL-1703-SDC-1- JA NSX Manager インストールと設定)
メモ
事前に分散仮想スイッチ環境が必要
NSXマネージャー、コントローラは管理NWに接続
NSXコントローラは3台以上の奇数構成が推奨(冗長化の仕組み的に)
論理スイッチを作成する=VXLANを利用
論理スイッチは従来の仮想スイッチとは別物
論理スイッチ利用する為の設定画面は以下画像の通り
※マネージャ、コントローラセットアップ後の手順
















考察
・VTEP NWではVXLANヘッダ分パケットのサイズが大きくなるのでMTUは1600Byteに設定
・VTEP用IPを設定するVMkernelポートグループは自動的に作成された。(ウィザードでは分散仮想スイッチを指定)
・セグメントID=VNI(vxlanのID識別子)
・トランスポートゾーン=VXLAN通信範囲
Amazon Lexをやってみた
参考URL
Amazon Lex (音声やテキストを使用した会話型インターフェイスを構築) | AWS
Amazon Alexaの基礎知識 | Developers.IO
Alexaを支える技術Amazon Lexが開発者に開放された | TechCrunch Japan
Amazon Lexとは?
・Amazon Deep Learning技術による自然言語解析、音声認識機能
音声認識サービスであるAlexaのベース技術
・Webサービスとして利用可能
開発者は実装が大変な自然言語解析、音声認識部分はLexに任せればOK
会話の目的を実現するビジネスロジックを実装すれば、会話を入出力にするアプリを作れる。
機能概要
・目的のある会話から目的を実現する機能
以下が基本動作
①会話から発言者の目的を認識
②目的実現に必要な情報が不足してる場合は、発言者から聞き出す。
③収集した情報を元に目的を実現
目的のない会話ができるMicrosoftりんなのような機能ではない。
基本的には人工無脳的なもの。会話認識にAI技術を活用。
・AWS Lambdaサービスとの連携
会話で得た情報を利用し事前作成済みプログラム(Lambda関数)を実行できる。
連携機能がビルトインされており容易に実装可能
①他システム連携によりダイナミックな会話が可能。
②目的実現まで自動化が可能
・メッセージングアプリFaceBook Messenger、Slack、Twilioとの連携
ChatBotとしての利用可能。
Botに実現したい目的を伝えれば、必要な情報をヒヤリングし目的を実現してくれる。
連携機能がビルトインされており容易に実装可能
メッセージングアプリと連携したChatBot技術の重要性について
ChatBot技術は情報発信、マーケティング手段として注目されてる。
ASCII.jp:AIをビジネスの味方にする「Microsoft Bot Framework」とは
【理由】
スマホアプリはあまり利用されてない。
LINEなどのメッセージングアプリの利用者は伸びてる。
→ChatBotはメッセージングアプリ経由で情報発信・マーケティングが可能な為、注目されている。
実現可能な会話の例
例1)
質問者: 明日の天気は?
回答者: 何県何市の天気ですか?
→「天気を知る」を目的と認識し、実現に必要な情報を聞き出す。
質問者: 〜県〜市です。
回答者: 雨です。
→回答前に、天気予報サービスから情報を得て回答
例2)
※歯科医院の予約の会話
患者: ホワイトニングの予約をしたい
受付: 何日が希望ですか?
患者: 明日
受付: 明日はNGです。明後日の10時からはいかがでしょうか?30分かかります。
→予約管理システムと連携して、予約可能な時間を提案
患者: OKです。
受付: では明後日10時から30分で予約しますが、よろしいでしょうか?
→確認
患者: OKです。
受付: 予約しました。
→予約管理システムに登録し目的実現
類似技術
・MicroSoft Bot Framework(LUIS)
・IBM Watson
・Google Assistant
・Apple Siri
・FaceBook Wit.ai
などなど。違いはよく調べきれてません。考察としては、、、、
Lexは2017/5/3時点で日本語未対応
上記技術は基本的にAPI公開されており、プロバイダが異なってもサービス間連携は可能。
例) FaceBook Bot機能が、Amazon Lambda機能と連携する等
→LexのLambda連携はAmazon独自の強みでない。連携がビルトインの為、実装が容易である点は強み。
AWS、Alexaを強化するボットフレームワーク「Amazon Lex」をローンチ - THE BRIDGE(ザ・ブリッジ)
→Amazonが今後、最大のクラウドプロバイダである点を生かしシステム間連携(コネクタ)で差別化を測るかも。
利用料金
料金 - Amazon Lex | AWS
利用料金説明。最初の一年間は無料利用枠あり。
前置きが長くなったが、まずはやってみる!
メモ
ビルトインで以下のサンプル設定があり、これを使うと簡易動作検証は容易
・BookTrip 旅行予約の会話
・OrderFlowers 花購入の会話
・ScheduleAppointment 歯医者治療予約の会話
実用するにはlambda連携は必須。
AWSコンソールにチャットインターフェースがあり、動作試験が可能。
しかしAWSコンソールは未対応機能あり(レスポンスカード等)。
未対応機能はFaceBook Messenger等で動作確認する必要あり。
歯医者治療予約Botの作成・動作確認(lambda連携なし)
Bot作成

Bot設定

Bot動作確認(AWSコンソール)

・会話例
右矢印: ユーザー発言
左矢印: Bot発言
例1)
> I would like to book an appointment < What type of appointment would you like to schedule? > Cleaning < When should I schedule your Cleaning? > Tommorow < At what time on 2017-05-05? > 11:00 a.m < 11:00 is available, should I go ahead and book your appointment? > Yes < ReadyForFulfillment AppointmentType:Cleaning Time:11:00 Date:2017-05-05
例2)
> Book a Cleaning < When should I schedule your Cleaning? > Tommorow < At what time on 2017-05-05? > 11:00 a.m < 11:00 is available, should I go ahead and book your appointment? > Yes < ReadyForFulfillment AppointmentType:Cleaning Time:11:00 Date:2017-05-05
例3)
> Book an appointment < What type of appointment would you like to schedule? > HogeHoge < When should I schedule your HogeHoge? > After 1 day < When should I schedule your HogeHoge? > 1 day later < At what time do you want to schedule the HogeHoge? > am 11:00 < At what time on 2017-05-05? > 11:00 a.m < 11:00 is available, should I go ahead and book your appointment? > Yes < ReadyForFulfillment AppointmentType:HogeHoge Time:11:00 Date:2017-05-05
例4)
> Hello < I didn't understand you, what would you like me to do? > appointment < I didn't understand you, what would you like me to do? > an appointment < What type of appointment would you like to schedule?
例5)
I am appointment I didn't understand you, what would you like me to do? I am an appointment What type of appointment would you like to schedule?
例6)
> Hello < I didn't understand you, what would you like me to do? > I want you to understand me < I didn't understand you, what would you like me to do? > I am sad < Sorry, I'm not able to assist at this time
わかったこと
・デフォルトは一般会話に完全未対応
・目的認識までの会話でAIが活用されてるかは微妙?完全無脳な感じ。
・lambda連携無効な為、実用的ではなし。
歯医者治療予約Botの作成・動作確認(lambra・Slack連携あり)
参考URL
Using Lambda Functions - Amazon Lex
Example Bot: ScheduleAppointment - Amazon Lex
Bot作成

lambda設定
以下URLから設定
https://console.aws.amazon.com/lambda/






lambda連携用Bot設定


Slack設定
以下URLに従い設定
Integrating an Amazon Lex Bot with Slack - Amazon Lex
Step1,2は画面省略する。Step3以降の画面は以下の通り。
Slack App作成

Slack Botユーザー設定





Slack連携用Bot設定
以下URLに従い設定
Step 4: Integrate the Slack Application with the Amazon Lex Bot - Amazon Lex


Slack設定
動作確認(Slack)

レスポンスカードがうまく動かない。。。。。。

もう疲れたので、手入力で会話動作の確認をする。
・会話例
右矢印: ユーザー発言
左矢印: Bot発言
例1)
> Book an appoint < What type of appointment would you like to schedule? > hogehoge < I did not recognize that, can I book you a root canal, cleaning, or whitening? > cleaning < When would you like to schedule your cleaning? < 5-5 (Fri) < 5-8 (Mon) < 5-9 (Tue) < 5-10 (Wed) < 5-11 (Thu) > 5-7 < Our office is not open on the weekends, can you provide a work day? < 5-5 (Fri) < 5-8 (Mon) < 5-9 (Tue) < 5-10 (Wed) < 5-11 (Thu) > 5/8 < What time on 2017-05-08 works for you? We have availabilities at 11:30 a.m., 1:00 p.m. and 4:30 p.m. < What time works best for you? < 11:30 a.m. < 1:00 p.m. < 4:30 p.m. > 12:00 a.m < Our business hours are ten a.m. to five p.m. What time works best for you? < What time works best for you? < 11:30 a.m. < 1:00 p.m. < 4:30 p.m. > 1:00 p.m < 1:00 p.m. is available, should I go ahead and book your cleaning? > No < Okay, I will not schedule an appointment.
lambda関数が入力チェックしており、動作が柔軟になっている。
最後に
lanbda連携動作の仕組みの把握が必要。
今度、以下URLの内容把握に取り組む。
Details of Information Flow - Amazon Lex
サンプル用lambda関数プログラムの中身も確認する。
目的を2つ以上組み合わせると、実用的になりそう。
SlackBotとの会話から簡易なAWSインフラの管理作業(インスタンスデプロイや各種情報取得等)を実行できそう。
API・Web操作を知らなくても、Botに目的伝えれば目的実現をアシストしてくれるのはいいかも。






