AWSでElasticSearch & AutoScalingを使ってみたのでメモ
インスタンスを作成ElasticSearchをインストール
wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.5.noarch.rpm sudo rpm -ivh ./elasticsearch-0.90.5.noarch.rpm sudo tar -xvf jdk-7u51-linux-x64.tar sudo mv jdk1.7.0_51 /usr/local/ sudo alternatives --install /usr/bin/java java /usr/local/jdk1.7.0_51/bin/java 200 # JDK7の方を選択 sudo alternatives --config java java -version cd /usr/share/elasticsearch/ sudo bin/plugin --install elasticsearch/elasticsearch-cloud-aws/1.16.0 sudo bin/plugin --install royrusso/elasticsearch-HQ sudo bin/plugin --install mobz/elasticsearch-head sudo bin/plugin --install lukas-vlcek/bigdesk sudo vim /etc/elasticsearch/elasticsearch.yml sudo service elasticsearch start cat /var/log/elasticsearch/elasticsearch.log sudo service elasticsearch stop
- /etc/elasticsearch/elasticsearch.ymlに書いたこと
cluster.name: elasticsearchdiscovery.zen.ping.multicast.enabled: false
cloud.aws.region: ap-northeast-1
cloud:
aws:
access_key: XXXXXXXX
secret_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXdiscovery:
type: ec2
AMIを作成する
AutoScalingをするのに使います
AWSのコンソールから作成する -> AMI IDをメモる
Subnetを作成する
AutoScalingのときにIPの範囲を絞るために使います
AWSのコンソールから作成する -> Subnet IDをメモる
Load Balancerを作成する
AWSのコンソールから作成する -> Load Balancer Nameをメモる
Security Groupを作成する
AutoScalingの時に自動でElasticSearch用サーバに付与するのに使います
AWSのコンソールから作成する -> Inboundで9200-9400ポートを開ければよさげ(もしかしたらもっと狭くてもいいかも) -> Group IDをメモる
AutoScalingの設定をする
AutoScalingToolのインストール(適当なサーバとかローカルの端末とかにインストール)
wget http://ec2-downloads.s3.amazonaws.com/AutoScaling-2011-01-01.zip unzip AutoScaling-2011-01-01.zip mv AutoScaling-1.0.61.4 /usr/local/ cd /usr/local/ ln -s AutoScaling-1.0.61.4 autoscaling export PATH=$PATH:/usr/local/autoscaling/bin
AutoScalingConfigの登録
# imageId = AMI ID , accessKeyとsecretKeyは操作権限のあるIAMのを書く as-create-launch-config hoge-config \ --image-id ami-XXXXXXXXX \ --instance-type t1.micro \ --key hoge-internal \ -I ${accessKey} \ -S ${secretKey} \ --region ap-northeast-1
AutoScalingGroupの登録
# vpc-zone-identifierはsubnetId,load-balancersはLoad Balancer Name # タグはElasticSearchのAWS設定でタグフィルターで使用する as-create-auto-scaling-group hoge-group \ --launch-configuration hoge-config \ --availability-zones ap-northeast-1a \ --group sg-XXXXXXX, \ --tag "k=hoge-tag-key, v=hoge-tag-value, p=true" \ --min-size 1 --max-size 10 \ --load-balancers ${loadBalancerName} \ --vpc-zone-identifier subnet-XXXXXXX \ -I ${accessKey} \ -S ${secretKey} \ --region ap-northeast-1