Solr (1台 ver.)
Solrとは
Solr 周りの人は「ソラー」って読んでます。 正式には、Apache Solr Apacheが作ってるオープンソースの全文検索ソフトウェアです。 検索エンジンのライブラリとして、Apache Luceneと呼ばれるものが使われています。
検索エンジンのことやSolrのことを解説されているスライドです。
www.slideshare.netSolrでできることやできないことが詳しく書いてます。
構築環境
今回は1台での構成です。 サーバ:1台 OS:CentOS6.7 1台で複数のSolrを動かします。
インストール
Zookeeperをインストール・設定できてない場合は、下記のZookeeperのインストールと設定を行います。 但し、単体のSolrなので、zookeeperの設定の zoo.cfgで zoo1,zoo2,zoo3はすべて127.0.0.1 portは1つずつずらした数字に設定する必要があります。 clientPort= 1つ目:2183 2つ目:2184 3つ目:2185 server.1=127.0.0.1:2888:3888 server.2=127.0.0.1:2889:3889 server.3=127.0.0.1:2890:3890 the-casket-of-star.hatenablog.com
下記からバージョンを選択し、リンクのアドレスをコピーして、wgetします。 Index of /infosystems/apache/lucene/solr 今回は4.10.4を選択しております。
cd /tmp wget http://ftp.kddilabs.jp/infosystems/apache/lucene/solr/4.10.4/solr-4.10.4-src.tgz tar -zxvf solr-4.10.4.tgz mv /tmp/solr-4.10.4 /opt/ ln -s /opt/solr-4.10.4 /opt/solr cd /opt/solr
設定・起動
不要なファイル削除
rm -r example/solr/collection1/data/*
ノードをコピー
cp -r example example2
フロントで起動
./bin/solr -f
下記のエラーが出た場合
Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: centos-512mb-sgp1-01: centos-512mb-sgp1-01: unknown error
/etc/hostnameに自分のホスト名を書きます
/etc/sysconfig/network http://mountainbigroad.jp/linux/host_mod.html
Webブラウザで、 " http:// IPアドレス:8983/solr " を開くと 以下の様な画面になります。
左側のメニューの Core Admin。 Add Coreをクリックし、表示されたウィンドウに入力し、Add Coreします。
name: <node1の名前>
instanceDIR:<collectionフォルダの絶対パス>
dateDir: <collectionフォルダの中のdataフォルダの絶対パス>
collection: <collectionフォルダ名>
config: <そのまま>
schema: <そのまま>
collection: <collection名>
shard:
こんな感じのができます。
以上を3つ分作ります。
今のところは、ここまでしかわかってないので、続きはまた次回。
Zookeeper
Zookeeperとは
構成
インストール
設定方法
Zookeeperとは
正式にはApache Zookeeper 大規模分散システムでよく使われる、 Hadoopのサブプロジェクト の一つです。 分散アプリケーションを構築する上で必要となる、 設定管理、同期などの機能を提供するサービスです。 自前で同じものを用意しようとしたらすごく大変なので、 すごく助かるミドルウェアです。
構成
今回は、サーバー3台で構築しました。 OSは、CentOS6.7です。 Zookeeperは、3.4.8です。
インストール
Javaで動かすので、JDKをインストールします。 JDK Java SE Development Kit 8 - Downloads
cd /tmp/ # wget --no-check-certificate --no-cookies - --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.rpm # rpm -Uhv jdk-8u45-linux-x64.rpm
Zookeeper本体 Apache ZooKeeper - Releases ダウンロードして任意の場所に解答するだけでOKです。
設定方法
oss.infoscience.co.jp zoo.cfgを作るように書いてあるのですが、 confの中にzoo_sample.cfgがあるので、コピーしてzoo.cfgを作ります。 conf/zoo.confに以下を追記 ※zoo1, zoo2, zoo3 のところは各サーバーのIPアドレスを書きます。
server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
server.XのX部分の数字を それぞれzoo1~3の/tmp/zookeeoer/myidに書く。
# mkdir -p /tmp/zookeeper # echo '1' > /tmp/zookeeoer/myid # mkdir -p /tmp/zookeeper # echo '2' > /tmp/zookeeoer/myid # mkdir -p /tmp/zookeeper # echo '3' > /tmp/zookeeoer/myid
上記を3台すべてのサーバに用意します。 3台すべてのサーバで
bin/zkServer.sh start
を実行し、
bin/zkServer.sh status
をすると、
1台は
ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Mode: leader
2台は
ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Mode: follower
が表示されます。
leaderはランダムで自動的に決まります。 そして、leaderをshutdownした場合、 残り2台のうちどちらかのサーバがleaderになります。 起動時
leaderのサーバが壊れたor落ちた
Hadoopについて
Hadoopとは・・・
集中管理型の分散システム 並列分散処理を実現するミドルウェアです。
2つのコンポーネントで構成されています。 但し、バージョンによって構成が異なります。 ①分散ファイルシステム HDFS(Hadoop FileSystem) HDFSは、データを貯める機能
②並列分散処理フレームワーク 貯めたデータを処理する機能 ■0.2 - 1.1系 MapReduce 大量の件数のデータがあった時に複数ワーカーで並列に処理できる仕組み
■2.x系 YARN (Yet-Another-Resource-Negotiator) 分散処理のリソースを制御する仕組み
MapReduceからYARNになって・・・
Hadoop 1系(MapReduce)での仕組みでは3000~4000ノードがクラスタの限界でしたが、YARNの仕組みによって10000ノード程度のクラスタも構成することが可能になりました。
分散処理技術「Hadoop」とは:NTTデータのHadoopソリューション
MapReduceの仕組み
Aさん、Bさん、Cさんの数学、国語、英語の成績表があるとします。 Mapが科目と成績をKeyとValueの関係でデータをまとめます。 Reduceが出現回数を数えたり、1は4つある等の集計を行います。
エコシステム
Hadoopエコシステムとして使う「エコシステム」は、 連携関係を通じて発展していく状況を指す言葉としての意味で、 中核となる技術を中心とした応用技術や関連プロダクト等の状況全体を指します。 books.google.co.jp 2.x系以降のHadoopの話ですが、 一番上にあるのがコンテナで、その中にMapReduceの処理をするHiveやデータ分析プログラムの作成を支援するPigといったコンポーネントをコンテナに用意し、自由にカスタマイズして処理することができます。 HDFSから最終的な処理結果のデータを貯めておくハード側との通信速度が大量のデータを捌くのに重要だそうです。
AWSの監視&DBについて
おしながき
AWSの監視
DB
AWSの監視
ELB (Elastic LoadBalancer) ロードバランシング以外にも機能があります。 ①メトリクス監視 HTTPCode_ELB_4XX等のメトリクスにより、配下のEC2の状態を判定します。 dev.classmethod.jp
②ヘルスチェック(死活監視) docs.aws.amazon.com ELBでは、死んでるサーバのトラフィック止めれます。 起動しているけれども、使えないインスタンスを消せます。 AutoScalingで使えないインスタンスを削除し、 有効的に使うことができます。 CloudWatch AWSが見れるところしか見れません ・Disk容量は見れない ・ CPU、 DiskI/O、 NetWork I/Oは見れる それ以外のメトリクスが見たい場合は、カスタムメトリクスを使えるように設定する。
DBの種類
①DynamoDB
②ElastiCache
③RedShift
④CloudSearch DBにセッションをもたせる場合 ・波がある場合は、ElastiCache ・予測可能でハイトラフィックが続くようであれば、DynamoDB RDSだけの機能 ・リレーショナル ・トランザクション DynamoDB ・高トラフィック ・強い一貫性→CAS操作ができる ・在庫管理にも使える 商品さがす ・DynamoDB ・CloudSearch すぐオンプレからの移行をしたい場合 RDSとElastiCache
EBSとネットワーク
EC2を作成するときに関連することをまとめます。
EBSの種類
ストレージタイプの種類
ネットワーク周りの上限値
セキュリティグループ
EBSの種類
マグネティック(磁気ディスク) →スピードを求めない時に選ぶ
Provisioned IOP →入力出力パフォーマンスを制御できる →RDSとして使うときに選ぶ
ストレージタイプの種類
インスタンスの作成を行う時に、 rootデバイスとして ①EBS ②インスタンスストア の2種類があります。 ①EBS インスタンスをstopしてもデータが保持されます。 ②インスタンスストア インスタンスをstopすることができません。 terminateするしかできないので、データが消えてしまいます。 S3-backed AMIというAMIなので、裏側はS3です。 d.hatena.ne.jp
ネットワーク周りの上限値
インスタンスに付随するインターフェイスやIPアドレスには上限があります。 ENI (Elastic Network Interface) EIP (Elastic IP) 上限値の一覧はこちら↓ docs.aws.amazon.com
セキュリティグループ
インスタンスにアタッチしたIPアドレスをつけかえたい場合、 EIPだけを移動するのではなく、 ENIと一緒にインスタンスに移動することでセキュリティグループがくっついているので良いです。 セキュリティグループを見れば、 通信経路がわかり、どこからどこに対して許可しているのかがわかります。 IAMで誰がセキュリティグループを見れるかも制御できるので、 きちんと管理していく必要があります。
AWS の mBaaS
mBaaS(mobile backend as a Service) 「エムバース」と読みます。 バックエンドのコードをほとんど書かなくてもアプリを開発できるようにするサービスです。
Cognite
DeviceFarm
Mobile Analytics
SNS
プッシュ通知サービスです。 Topic:メッセージを送信し、通知を受信するチャネル subscriber:受信するアプリケーション subscriberとして用意されているのが2種類あります。
①HTTP endpoint 1 つ以上の HTTP または HTTPS endpointに通知メッセージを送信できます。 docs.aws.amazon.com
②SQS Topicにメッセージを発行することができ、SNS が SQS メッセージをサブスクライブされたキューに送信します。 docs.aws.amazon.com
Cognite
ユーザーの個人データを同期する機能を提供します。 dev.classmethod.jp
1. Sync 同一ユーザーが別の端末から使用したゲームのスコアを同期できます。 SyncがIDをもっているから機種変しても大丈夫です。 他のクラウドサービスと一緒に使用し、クラスタ管理ができます。 AWSとMicrosoftAzureとGoogleCloudPlatformでクラスタ構成を組んだ時にSyncがマスタになります。 これだけで単純にDisasterRecovery対策になります。 料金が安くなったら、どれかだけを増やして一番コストパフォーマンスの良い構成にすることもできます。 2. Auth IAMで 一時的なAccess SecretKeyを発行して、 直接DynamoDBにアクセスができるようになります。 負荷が各ユーザのデバイス側になるのでサーバー側の影響が少なくて助かります。 AWS Security Token Service(AWS STS) docs.aws.amazon.com Googleアカウントを使用したOATH認証の場合は、 ①Googleアカウントに紐付いたIAMロールを作っておく ②STSを通して、AccessSecretKEYを発行し、認証する ③終わったらSNS subscriberに登録する という流れになります。
以降はあまり情報がありませんでしたので、簡単に紹介だけです。 別の機会に詳しく書けたらと思います。
DeviceFarm
スマホやタブレットを使ったアプリのテストをクラウド上でできるサービスです。 テストデバイス一覧はこちら↓
Mobile Analytics
アプリケーション分析の収集、表示、エクスポートをするサービス aws.typepad.com
AWS の DaaS
DaaSとは、Desktop as a Serviceです。 クラウド上でPCと同じ作業ができる環境がAWSにも用意されています。
WorkSpace
WorkDocs
WorkMail
Directory Service
WorkSpace
クラウドで動作する管理型デスクトップコンピューティングです。 構造としては、VPC上にデスクトップが立ち上がるそうです。
VPNが使える。 回線速度が512kbpsあれば、繋がるそうです。
料金 スペックが 2 vCPU、4 GiB メモリ、50 GB ユーザーストレージ だと1台 6,000円/月くらい office等のアプリケーションを追加するのに+2,000円/月くらい
クライアント側はWin/Macからしか使えない → Linuxが使えないので、どちみちWindowsかMacのPCが必要になります。
WorkDocs
文書管理クラウドサービス SharePointに近いものだそうです。
WorkMail
Gmailのようなものです。
Directory Service
ActiveDrectoryのホスト管理を行います。
- ActiveDrictory VPC上にドメインコントローラー2台が自動的に立ち上がります。 dev.classmethod.jp
VPCをDirectConnectで繋いで オンプレのActiveDirectoryにも繋ぐことができるそうです。