SlideShare a Scribd company logo
2017年6⽉5⽇
アマゾンウェブサービスジャパン 篠原 英治
SolrCloud on Amazon ECS
第20回 Lucene/Solr勉強会 #SolrJP
[改訂第3版] Apache Solr⼊⾨出版記念勉強会 @Yahoo! JAPAN “LODGE”
§ Eiji Shinohara (篠原 英治)
– Twitter: @shinodogg
– Blog: shinodogg.com
§ Amazon Web Services Japan
– from August 2013
§ AWS Solutions Architect
– Market: Startup & AdTech
– Area of Depth: Search Technology
• Amazon CloudSearch
• Amazon Elasticsearch Service
§ Part-Time Graduate Student
– University of Tsukuba
– MBA in International Business w/ @werner : Amazon CTO
改訂第3版 Apache Solr⼊⾨
§ ブログ書きました!
– https://shinodogg.com/?p=7668
Why SolrCloud?
§ SolrCloudじゃないとレガシー
Why SolrCloud?
§ SolrCloud: Availability & Scalability
Why SolrCloud?
§ 分散環境?Split BrainとかQuorumとか…
https://www.slideshare.net/EPAM_Systems_Bulgaria/session-3-tibor-sulyan-distributed-coordination-with-zookeeper
本⽇のAgenda
§ Amazon ECS
§ ZooKeeper
§ SolrCloud
§ SolrCloud on Amazon ECS
Amazon ECS
Amazon EC2 Container Service (ECS) is a highly scalable, high performance
container management service that supports Docker containers and
allows you to easily run applications on a managed cluster of Amazon
EC2 instances.
Amazon EC2 Container Service (ECS) は、⾮常にスケーラブルかつ⾼性能な、
Dockerコンテナをサポートするコンテナ管理サービスで、アプリケーションを簡
単にマネージドなEC2クラスター上で実⾏することができます。
https://aws.amazon.com/ecs/
Amazon ECS
§ たくさんの企業でAmazon ECSが活⽤されている
– ECSの利点に関してはMapboxのブログも是⾮ご覧ください
• We switched to ECS and you won't believe what happened next
• https://www.mapbox.com/blog/switch-to-ecs/
https://www.slideshare.net/shinodogg/aws-summit-san-francisco-2017-werner-vogels
Cluster
Container Instance
Amazon ECSにおけるコンテナ管理の概要図
§ クラスタ管理
– Cluster, Container
Instance, Agent
§ グループ化
– Task Definition,
Task, Container
§ スケジューラ
– Run Task, Service
Agent
Task
Container
Container
Task
Service
Task Definition
Agent
Task
Task Definition
Run Task
⾃前でクラスタ管理すると、、、
Masters
State Data Store
WorkersSchedulers
Load Balancers
冗⻑化・チューニング・運⽤
要件対応・冗⻑化・運⽤
安全な付け外し・デプロイ対応
冗⻑化・チューニング・運⽤
Amazon EC2 Container Service Scheduler
ManagerCluster
Task Definition
Task
Agent
Service: 動的ポートマッピング
Service scheduler
Elastic Load Balancing
Application Load Balancer
Task Definition = app:1
Desired Count = 4
Amazon ECS
32874 32879 32873 32880
Cluster
Service: 追加リソース無しの更新
Service scheduler
Task Definition = app:2
Desired Count = 4
Minimum Healthy Percent = 50
Maximum Percent = 100
Elastic Load Balancing
Application Load Balancer
ClusterAmazon ECS
Service: 追加リソース無しの更新
Service scheduler
Elastic Load Balancing
Application Load Balancer
Task Definition = app:2
Desired Count = 4
Minimum Healthy Percent = 50
Maximum Percent = 100
ClusterAmazon ECS
Service: 追加リソース無しの更新
Service scheduler
Elastic Load Balancing
Application Load Balancer
Task Definition = app:2
Desired Count = 4
Minimum Healthy Percent = 50
Maximum Percent = 100
ClusterAmazon ECS
Service: 追加リソース無しの更新
Service scheduler
Elastic Load Balancing
Application Load Balancer
Task Definition = app:2
Desired Count = 4
Minimum Healthy Percent = 50
Maximum Percent = 100
ClusterAmazon ECS
Service: 追加リソース無しの更新
Service scheduler
Elastic Load Balancing
Application Load Balancer
Task Definition = app:2
Desired Count = 4
Minimum Healthy Percent = 50
Maximum Percent = 100
ClusterAmazon ECS
https://www.slideshare.net/AmazonWebServicesJapan/awsdocker
ECSやDockerに関する資料はコチラもどうぞ
@riywo
ECSやDockerに関する資料はコチラもどうぞ
https://twitter.com/shinodogg/status/859321796650180608https://www.youtube.com/watch?v=pPsREQbf3PA
@abbyfuller
ZooKeeper
§ What is ZooKeeper? https://zookeeper.apache.org/
– ZooKeeperは、設定情報 / ネーミング / 分散同期 / グループサービス を集中
管理するサービス
– 分散アプリケーションには何かしら上記のような機能が必要
– 都度それらを実装すると、バグFIXや競合状態といった問題が不可避
– こういったサービスは実装が難しく、初期の段階では妥協されることが多く、
そのような状況は変更容易性を損なわせ、管理を煩雑にする
– 正しく実装されたとしても、異なる実装であれば、アプリケーションをデプロ
イして運⽤していく上で、管理が⾯倒になってしまう
– そこでZooKeeperですよ!
“Apache ZooKeeper is an effort to develop and maintain an open-
source server which enables highly reliable distributed coordination”
§ ZooKeeperの特徴
– ZooKeeper is simple
– ZooKeeper is ordered
– ZooKeeper is replicated
– ZooKeeper is fast
ZooKeeper :
Because Coordinating Distributed Systems is a Zoo
https://zookeeper.apache.org/doc/trunk/zookeeperOver.html
§ API
– create
• creates a node at a location in the tree
– delete
• deletes a node
– exists
• tests if a node exists at a location
– get data
• reads the data from a node
– set data
• writes data to a node
– get children
• retrieves a list of children of a node
– sync
• waits for data to be propagated
ZooKeeper
§ まずはECSでZooKeeprのDockerイメージをサクッと
– Docker Hubのイメージを使う
• https://hub.docker.com/_/zookeeper/
• ポート周りだけの超シンプルな設定 on ECS
ZooKeeperを試してみる
§ まずはECSでZooKeeprのDockerイメージをサクッと
– コンテナを稼働させるEC2インスタンスの起動やDockerイメージの実⾏な
どはECSにおまかせ
ZooKeeperを試してみる
§ まずはECSでZooKeeprのDockerイメージをサクッと
– Dockerイメージを起動したEC2インスタンスにSSH
– ZooKeeperのクライアントからローカルのDockerコンテナで稼働する
ZooKeeperに接続
ZooKeeperを試してみる
$ sudo yum install java
$ sudo yum install wget
$ wget http://ftp.jaist.ac.jp/pub/apache/〜略〜/zookeeper-3.4.10.tar.gz
$ tar xvf zookeeper-3.4.10.tar.gz
$ cd zookeeper-3.4.10
$ bin/zkCli.sh -server 127.0.0.1:2181
§ まずはECSでZooKeeprのDockerイメージをサクッと
– CreateしてからGetしてみる
ZooKeeperを試してみる
[zk: 127.0.0.1:2181(CONNECTED) 1] ls /
[zookeeper]
[zk: 127.0.0.1:2181(CONNECTED) 2] create /zk_test my_data
Created /zk_test
[zk: 127.0.0.1:2181(CONNECTED) 3] ls /
[zookeeper, zk_test]
[zk: 127.0.0.1:2181(CONNECTED) 4] get /zk_test
my_data
cZxid = 0x2
〜略〜
numChildren = 0
§ まずはECSでZooKeeprのDockerイメージをサクッと
– データをSet後、NodeごとDeleteする
– lsで消えたことを確認
ZooKeeperを試してみる
[zk: 127.0.0.1:2181(CONNECTED) 5] set /zk_test junk
cZxid = 0x2
ctime = Fri Jun 02 00:27:19 UTC 2017
mZxid = 0x3
mtime = Fri Jun 02 00:27:35 UTC 2017
pZxid = 0x2
〜略〜
numChildren = 0
[zk: 127.0.0.1:2181(CONNECTED) 6] delete /zk_test
[zk: 127.0.0.1:2181(CONNECTED) 7] ls /
[zookeeper]
§ まずはECSでZooKeeprのDockerイメージをサクッと
– ⼀通りの操作をZooKeeperでするのは5分で出来た!
• (ウソです。実際はアレこれやってて30分くらいかかりました…笑)
– ブラウザでポチポチやるの⾯倒だよ!という⼈には勿論コマンドラインも
ZooKeeperを試してみる
http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/cmd-ecs-cli-compose.html
§ 状態を保持している&頻繁にデプロイしたりしない…?
– Dockerの利点: ポータビリティ, 柔軟なスケーリング -> ZooKeeprに必要?
– ZooKeeperは3つのAvailability ZoneでEC2インスタンスで稼働
ZooKeeperで実現したいこと
Availability Zone Availability Zone Availability Zone
§ 3つのEC2インスタンスをそれぞれ別のAZで起動
– ZooKeeperの設定はmyid以外は同じ内容
$ cat conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/ec2-user/zookeeper-3.4.10/data
clientPort=2181
server.1=ec2-34-209-250-205.us-west-2.〜略〜.com:2888:3888
server.2=ec2-54-202-191-88.us-west-2.〜略〜.com:2888:3888
server.3=ec2-34-210-87-63.us-west-2.〜略〜.com:2888:3888
$ ls -l data/myid
ZooKeeperを3AZで稼働させてみる
§ サーバー1でCreateしたノードがサーバー3で参照できる
– EC2は同⼀Security Groupに設定し、該当SGからの2181、2888、3888
のポートの通信は許可しておく
[ec2-user@ip-172-31-46-217 zookeeper-3.4.10]$ bin/zkCli.sh
Connecting to localhost:2181
〜略〜
[zk: localhost:2181(CONNECTED) 1] create /zk_test2 my_data2
Created /zk_test2
[ec2-user@ip-172-31-26-147 zookeeper-3.4.10]$ bin/zkCli.sh
Connecting to localhost:2181
〜略〜
[zk: localhost:2181(CONNECTED) 1] ls /
[zk_test2, zookeeper, zk_test]
ZooKeeperを3AZで稼働させてみる
Apache Solr
§ まずはスタンドアロンでSolrのDockerイメージをサクッと
– イメージはDocker Hubのもの。設定は8983ポートだけ
Apache Solr on Amazon ECS
§ まずはスタンドアロンでSolrのDockerイメージをサクッと
– ⾒覚えのある画⾯ J
Apache Solr on Amazon ECS
§ SolrCloudモードで起動
– -zオプションでZooKeeperを指定
SolrCloud on Amazon ECS
§ SolrCloudモードで起動
– 管理画⾯上で操作が可能な状態に(とはいえzk以外も諸々設定が必要)
SolrCloud on Amazon ECS
§ AWSおよびECSを活⽤して⾼信頼性なSolrCloud環境の実現
SolrCloud on Amazon ECS
Availability Zone Availability Zone Availability Zone
Amazon
ECS
Shard1
Leader
Shard2
Replica
Shard1
Replica
Shard3
Replica
Shard2
Leader
Shard2
Replica
Shard1
Replica
Shard3
Replica
Shard3
Leader
Shard2
Replica
Shard1
Replica
Shard3
Replica
§ SolrCloud & ZooKeeperの設定詳細は改訂第3版のSolr本で!
SolrCloud on Amazon ECS
https://www.amazon.co.jp/dp/4774189308/
検索エンジンもアマゾンで

More Related Content

PDF
AWSのログ管理ベストプラクティス
PPTX
[社内勉強会]ELBとALBと数万スパイク負荷テスト
PDF
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model
PDF
Azure Monitor Logで実現するモダンな管理手法
PDF
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
PDF
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
PDF
20210526 AWS Expert Online マルチアカウント管理の基本
PDF
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
AWSのログ管理ベストプラクティス
[社内勉強会]ELBとALBと数万スパイク負荷テスト
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model
Azure Monitor Logで実現するモダンな管理手法
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
20210526 AWS Expert Online マルチアカウント管理の基本
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな

What's hot (20)

PDF
20200826 AWS Black Belt Online Seminar AWS CloudFormation
PDF
20190521 AWS Black Belt Online Seminar Amazon Simple Email Service (Amazon SES)
PDF
20190522 AWS Black Belt Online Seminar AWS Step Functions
PDF
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
PDF
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
PDF
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
PDF
AWS Black Belt Online Seminar 2017 AWS X-Ray
PDF
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
PDF
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
PDF
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
PDF
AWS BlackBelt AWS上でのDDoS対策
PDF
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
PDF
SolrとElasticsearchを比べてみよう
PDF
AWS Black Belt Online Seminar 2016 AWS CloudFormation
PDF
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
PDF
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
PDF
20210119 AWS Black Belt Online Seminar AWS CloudTrail
PPTX
LIFULL HOME'SでのSolrの構成と運用の変遷
PDF
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
PDF
20190514 AWS Black Belt Online Seminar Amazon API Gateway
20200826 AWS Black Belt Online Seminar AWS CloudFormation
20190521 AWS Black Belt Online Seminar Amazon Simple Email Service (Amazon SES)
20190522 AWS Black Belt Online Seminar AWS Step Functions
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS X-Ray
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
AWS BlackBelt AWS上でのDDoS対策
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
SolrとElasticsearchを比べてみよう
AWS Black Belt Online Seminar 2016 AWS CloudFormation
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
20210119 AWS Black Belt Online Seminar AWS CloudTrail
LIFULL HOME'SでのSolrの構成と運用の変遷
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
20190514 AWS Black Belt Online Seminar Amazon API Gateway
Ad

Similar to SolrCloud on Amazon ECS (20)

PDF
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
PDF
ニワトリでもわかるECS入門
PDF
AWSでDockerを扱うためのベストプラクティス
PDF
20180313 Amazon Container Services アップデート
PDF
Docker入門 - 基礎編 いまから始めるDocker管理
PDF
TerraformでECS+ECRする話
PDF
AWS Blackbelt 2015シリーズ Amazon EC2 Container Service (Amazon ECS)
PDF
20170413 aws–windows users meetup
PDF
Docker swarm mode 入門と ECS との比較
PDF
Amazon ECS事始め
PPT
2010 04クラウド技術講座
PPTX
20140621 july techfesta (JTF2014) 突発**むけAWS
PDF
ECS for Docker Meetup #4
PDF
コンテナ時代にインフラエンジニアは何をするのか
PDF
勉強会1
PDF
20180220 AWS Black Belt Online Seminar - Amazon Container Services
PDF
Docker Swarm モード にゅうもん
PDF
[AWS Start-up ゼミ] よくある課題を一気に解説!〜御社の技術レベルがアップする 2017 夏期講習〜
PDF
AWS公式ドキュメントにきちんと向き合っていますか?~ECSの最新アップデートから見てみた、ドキュメント検証の重要性~
PDF
捕鯨!詳解docker
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
ニワトリでもわかるECS入門
AWSでDockerを扱うためのベストプラクティス
20180313 Amazon Container Services アップデート
Docker入門 - 基礎編 いまから始めるDocker管理
TerraformでECS+ECRする話
AWS Blackbelt 2015シリーズ Amazon EC2 Container Service (Amazon ECS)
20170413 aws–windows users meetup
Docker swarm mode 入門と ECS との比較
Amazon ECS事始め
2010 04クラウド技術講座
20140621 july techfesta (JTF2014) 突発**むけAWS
ECS for Docker Meetup #4
コンテナ時代にインフラエンジニアは何をするのか
勉強会1
20180220 AWS Black Belt Online Seminar - Amazon Container Services
Docker Swarm モード にゅうもん
[AWS Start-up ゼミ] よくある課題を一気に解説!〜御社の技術レベルがアップする 2017 夏期講習〜
AWS公式ドキュメントにきちんと向き合っていますか?~ECSの最新アップデートから見てみた、ドキュメント検証の重要性~
捕鯨!詳解docker
Ad

More from Eiji Shinohara (20)

PDF
Indexing with Algolia Ruby API Client
PDF
Getting Started Algolia with InstantSearch.js
PDF
Algolia introduction in Kanazawa - July 2019
PDF
Scalable and Cost Effective Systems Architecture on AWS
PDF
#AWSAdTechJP
PDF
Accelerating AdTech on AWS in Japan
PDF
AWS Summit New York 2017 Keynote Recap
PPTX
#CTONight powered by AWS
PDF
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
PDF
Search Solutions on AWS
PDF
Global AWS AdTech use-cases
PDF
IVS CTO Night and Day Recap - #CTONight 2016 Winter
PDF
Tips for getting the most out of AWS re:Invent IN ENGLISH
PDF
検索技術の活用による広告配信Relevance向上
PDF
エンジニアの為のAWS実践講座
PDF
AWS Summit New York 2016 Recap : AWS Application Load Balancer and Amazon ECS
PDF
個人的にAmazon EMR5.0.0でSpark 2.0を使ってZeppelinでSQL集計してみる
PDF
Accelerating AdTech on AWS #AWSAdTechJP
PDF
IVS CTO Night and Day Recap - #CTONight 2016 Spring
PDF
Ad Tech on AWS - IVS CTO Night and Day Spring 2016
Indexing with Algolia Ruby API Client
Getting Started Algolia with InstantSearch.js
Algolia introduction in Kanazawa - July 2019
Scalable and Cost Effective Systems Architecture on AWS
#AWSAdTechJP
Accelerating AdTech on AWS in Japan
AWS Summit New York 2017 Keynote Recap
#CTONight powered by AWS
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
Search Solutions on AWS
Global AWS AdTech use-cases
IVS CTO Night and Day Recap - #CTONight 2016 Winter
Tips for getting the most out of AWS re:Invent IN ENGLISH
検索技術の活用による広告配信Relevance向上
エンジニアの為のAWS実践講座
AWS Summit New York 2016 Recap : AWS Application Load Balancer and Amazon ECS
個人的にAmazon EMR5.0.0でSpark 2.0を使ってZeppelinでSQL集計してみる
Accelerating AdTech on AWS #AWSAdTechJP
IVS CTO Night and Day Recap - #CTONight 2016 Spring
Ad Tech on AWS - IVS CTO Night and Day Spring 2016

SolrCloud on Amazon ECS