チネル on EC2 フェイルオーバ (ENIなし)
基本知識
やること
-
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
チネル切替スクリプト(抜粋)
Src/Destのチェックを切っておく
VPCのレンジの中のIPではいけない
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
Author And Source
この問題について(チネル on EC2 フェイルオーバ (ENIなし)), 我々は、より多くの情報をここで見つけました https://qiita.com/h-imaoka/items/a34ee1956d70b661a59c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .