LoginSignup
1

More than 5 years have passed since last update.

チネル on EC2 フェイルオーバ (ENIなし)

Last updated at Posted at 2015-12-05

基本知識

やること

  • Redisどもは、別のsubnetにぶち込む。 同じsubnetでもループはしない、NATと違うから。AZは複数でもいい
  • Redisを使う奴らは、Redisどもと別のsubnetにいる 同じsubnetでOK
  • Redisどもは Src/Destのチェックを切っておく
  • Redisども(sentinelと分離するなら sentinelども)にEC2-Role を振っておく、RoteTableのDel/Creができる権限があればいい
  • Redisどもに、lo0:vipを振っておく、ここで使うIPは VPCのレンジの中のIPではいけない
  • Redisを使う奴らの subnetに紐づく routetable に、VIP/32のエントリを追加、経路は redisのmasterのインスタンスID (上記リンクが詳しい解説)

詳細

RedisどもにふるVIP用 network-script

/etc/sysconfig/network-scripts/ifcfg-lo-vip
DEVICE=lo:vip
IPADDR=<使いたいVIP>
NETMASK=255.255.255.255
ONBOOT=yes

チネル切替スクリプト(抜粋)

やることは、元のルートテーブルエントリを潰して、自分のインスタンスIDで書き換え

#!/bin/bash
  aws --region ${REGION} ec2 delete-route --destination-cidr-block $VIP/32 --route-table-id ${ROUTE_TABLE_ID}
  aws --region ${REGION} ec2 create-route --destination-cidr-block $VIP/32 --route-table-id ${ROUTE_TABLE_ID} --instance-id ${INSTANCE_ID}

細かい話

その場限りでVIP振りたい、事前に全redisにVIP振るのがキモいなら

#add
ip addr add local <your vip>/32 dev lo label lo:vip
#del
ip addr delete local <your vip>/32 dev lo label lo:vip

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1