Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

SolrCloud on Amazon ECS

8,111 views

Published on

第20回 Lucene/Solr勉強会( #SolrJP )の登壇資料。
SolrCloudをAWS上で稼働させる際の ZooKeeper の構成や、Docker / Amazon ECS を活用する方法の紹介。

Published in: Technology
  • Sex in your area is here: ❤❤❤ http://bit.ly/2Q98JRS ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating for everyone is here: ♥♥♥ http://bit.ly/2Q98JRS ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

SolrCloud on Amazon ECS

  1. 1. 2017年6⽉5⽇ アマゾンウェブサービスジャパン 篠原 英治 SolrCloud on Amazon ECS 第20回 Lucene/Solr勉強会 #SolrJP [改訂第3版] Apache Solr⼊⾨出版記念勉強会 @Yahoo! JAPAN “LODGE”
  2. 2. § 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. 3. 改訂第3版 Apache Solr⼊⾨ § ブログ書きました! – https://shinodogg.com/?p=7668
  4. 4. Why SolrCloud? § SolrCloudじゃないとレガシー
  5. 5. Why SolrCloud? § SolrCloud: Availability & Scalability
  6. 6. Why SolrCloud? § 分散環境?Split BrainとかQuorumとか… https://www.slideshare.net/EPAM_Systems_Bulgaria/session-3-tibor-sulyan-distributed-coordination-with-zookeeper
  7. 7. 本⽇のAgenda § Amazon ECS § ZooKeeper § SolrCloud § SolrCloud on Amazon ECS
  8. 8. Amazon ECS
  9. 9. 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/
  10. 10. 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
  11. 11. 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
  12. 12. ⾃前でクラスタ管理すると、、、 Masters State Data Store WorkersSchedulers Load Balancers 冗⻑化・チューニング・運⽤ 要件対応・冗⻑化・運⽤ 安全な付け外し・デプロイ対応 冗⻑化・チューニング・運⽤
  13. 13. Amazon EC2 Container Service Scheduler ManagerCluster Task Definition Task Agent
  14. 14. Service: 動的ポートマッピング Service scheduler Elastic Load Balancing Application Load Balancer Task Definition = app:1 Desired Count = 4 Amazon ECS 32874 32879 32873 32880 Cluster
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. 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
  19. 19. 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
  20. 20. https://www.slideshare.net/AmazonWebServicesJapan/awsdocker ECSやDockerに関する資料はコチラもどうぞ @riywo
  21. 21. ECSやDockerに関する資料はコチラもどうぞ https://twitter.com/shinodogg/status/859321796650180608https://www.youtube.com/watch?v=pPsREQbf3PA @abbyfuller
  22. 22. ZooKeeper
  23. 23. § 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”
  24. 24. § 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
  25. 25. § 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
  26. 26. § まずはECSでZooKeeprのDockerイメージをサクッと – Docker Hubのイメージを使う • https://hub.docker.com/_/zookeeper/ • ポート周りだけの超シンプルな設定 on ECS ZooKeeperを試してみる
  27. 27. § まずはECSでZooKeeprのDockerイメージをサクッと – コンテナを稼働させるEC2インスタンスの起動やDockerイメージの実⾏な どはECSにおまかせ ZooKeeperを試してみる
  28. 28. § まずは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
  29. 29. § まずは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
  30. 30. § まずは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]
  31. 31. § まずはECSでZooKeeprのDockerイメージをサクッと – ⼀通りの操作をZooKeeperでするのは5分で出来た! • (ウソです。実際はアレこれやってて30分くらいかかりました…笑) – ブラウザでポチポチやるの⾯倒だよ!という⼈には勿論コマンドラインも ZooKeeperを試してみる http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/cmd-ecs-cli-compose.html
  32. 32. § 状態を保持している&頻繁にデプロイしたりしない…? – Dockerの利点: ポータビリティ, 柔軟なスケーリング -> ZooKeeprに必要? – ZooKeeperは3つのAvailability ZoneでEC2インスタンスで稼働 ZooKeeperで実現したいこと Availability Zone Availability Zone Availability Zone
  33. 33. § 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で稼働させてみる
  34. 34. § サーバー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で稼働させてみる
  35. 35. Apache Solr
  36. 36. § まずはスタンドアロンでSolrのDockerイメージをサクッと – イメージはDocker Hubのもの。設定は8983ポートだけ Apache Solr on Amazon ECS
  37. 37. § まずはスタンドアロンでSolrのDockerイメージをサクッと – ⾒覚えのある画⾯ J Apache Solr on Amazon ECS
  38. 38. § SolrCloudモードで起動 – -zオプションでZooKeeperを指定 SolrCloud on Amazon ECS
  39. 39. § SolrCloudモードで起動 – 管理画⾯上で操作が可能な状態に(とはいえzk以外も諸々設定が必要) SolrCloud on Amazon ECS
  40. 40. § 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
  41. 41. § SolrCloud & ZooKeeperの設定詳細は改訂第3版のSolr本で! SolrCloud on Amazon ECS https://www.amazon.co.jp/dp/4774189308/
  42. 42. 検索エンジンもアマゾンで

×