MongoDB Atlas 可以与 AWS 进行VPC Peering
概括的意思是
-
- 在Atlas侧的VPC向我的VPC发起VPC Peering请求
-
- 在我的VPC侧接受请求
- 将Atlas的VPC添加到我的VPC侧的安全组中
我基本上会按照Atlas官方文档进行操作。
1. Atlas側のVPCからマイVPCにVPC Peeringをリクエスト
![image.png](https://cdn.silicloud.com/blog-img/blog/img/657d032937434c4406bd2ea0/4-0.png)
2020-05-12 更新:需要组织所有者的权限。
2. 在我的VPC一侧接受
![image.png](https://cdn.silicloud.com/blog-img/blog/img/657d032937434c4406bd2ea0/7-0.png)
3. 在我方的VPC安全组中添加Atlas的VPC。
这是关键点。虽然您可以手动修改路由表的设置,但我们会使用CFn进行幂等管理。
脚本 (ju Ben)
#!/bin/sh -e
###
# VPC PeeringをAcceptした側のVPCに、VPC Peeringが存在する場合のみRouteを追加するスクリプト。
###
REQUESTER_VPC_ID=$1
REQUESTER_FRIENDLY_NAME=$2
DESCRIBE_VPC_PEER="aws ec2 describe-vpc-peering-connections --filters Name=status-code,Values=active Name=requester-vpc-info.vpc-id,Values=${REQUESTER_VPC_ID}"
echo ${DESCRIBE_VPC_PEER}
export VpcPeeringConnectionId=$(${DESCRIBE_VPC_PEER} \
--query VpcPeeringConnections[0].VpcPeeringConnectionId \
--output text)
export RequesterVpcCidr=$(${DESCRIBE_VPC_PEER} \
--query VpcPeeringConnections[0].RequesterVpcInfo.CidrBlock \
--output text)
if [ ${VpcPeeringConnectionId} != None ]; then
aws ec2 modify-vpc-peering-connection-options \
--vpc-peering-connection-id ${VpcPeeringConnectionId} \
--accepter-peering-connection-options '{"AllowDnsResolutionFromRemoteVpc":true}' \
--region ${AWS_DEFAULT_REGION}
aws cloudformation deploy \
--template-file cfn/vpc-peer-acceptor-config.yml \
--stack-name vpc-peer-with-${REQUESTER_FRIENDLY_NAME} \
--parameter-overrides \
VpcPeeringConnectionId=${VpcPeeringConnectionId} \
RequesterVpcCidr=${RequesterVpcCidr} \
--tags date="$(date '+%Y%m%d%H%M%S')"
fi
云形成模板
AWSTemplateFormatVersion: '2010-09-09'
Description: VPC Peering Accepter Config
Parameters:
VpcPeeringConnectionId:
Type: String
RequesterVpcCidr:
Type: String
Resources:
XXXRouteToVPCPeer:
Type: AWS::EC2::Route
Properties:
RouteTableId: { "Fn::ImportValue": !Sub "XXXRouteTable-Id" }
DestinationCidrBlock: !Ref RequesterVpcCidr
VpcPeeringConnectionId: !Ref VpcPeeringConnectionId
4. 沟通检查
这次我们将在Amazon Linux上安装mongo命令。
从这里下载链接。
https://www.mongodb.com/download-center/enterprise?jmp=docs
# 絶対もっと効率いいやり方あります。
MONGO_SHELL=https://downloads.mongodb.org/linux/mongodb-shell-linux-x86_64-amazon-4.2.1.tgz
curl -O $MONGO_SHELL
tar -zxvf mongodb-shell-linux-x86_64-amazon-4.2.1.tgz
sudo cp mongodb-linux-x86_64-amazon-4.2.1/bin/mongo /usr/bin/mongo
# 接続確認
mongo "mongodb+srv://<your_mongodb_host>.mongodb.net/test" --username <username>
...
MongoDB Enterprise <your_mongodb_host>-0:PRIMARY>