基本知識
やること
-
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