Amazon 외부의 Amazon Elasticache Redis에 연결할 수 있습니까?
EC2 인스턴스 에서 VPC 의 Elasticache redis 인스턴스에 연결할 수 있지만 로컬 개발 설정 또는 로컬 개발 설정에서와 같이 Amazon EC2 인스턴스 외부의 Elasticache Redis 노드에 연결할 수있는 방법이 있는지 알고 싶습니다. 다른 공급 업체에서 제공하는 VPS 인스턴스.
현재 내 로컬 설정에서 시도 할 때 :
redis-cli -h my-node-endpoint -p 6379
시간이 지나면 시간이 초과됩니다.
아니요, 터널과 같은 '트릭'에 의지하지 않고서는 안됩니다. 테스트에는 적합 할 수 있지만 대기 시간 / 오버 헤드가 추가 된 초고속 캐시 사용의 실질적인 이점을 없앨 수 있습니다.
... VPC 내부 또는 외부 의 Amazon ElastiCache 클러스터는 인터넷에서 액세스 할 수 없습니다 .
여기에서 : http://aws.amazon.com/elasticache/faqs/#Can_I_access_Amazon_ElastiCache_from_outside_AWS
EDIT 2018 : 위의 답변은 작성 당시 정확했지만 이제는이 페이지에서 약 1/2 정도 아래의 지침을 사용하여 외부에서 redis 캐시에 액세스 할 수있는 일부 구성을 통해 가능합니다 : https://docs.aws.amazon.com/AmazonElastiCache /latest/red-ug/accessing-elasticache.html
SSH 포트 포워딩이 트릭을 수행해야합니다. 클라이언트에서 실행 해보십시오.
ssh -f -N -L6379:<your redis node endpoint>:6379 <your EC2 node that you use to connect to redis>
그런 다음 클라이언트에서
redis-cli -h 127.0.0.1 -p 6379
그것은 나를 위해 작동합니다.
레디 스에 대한 그 기본 포트가 있습니다 6379
없습니다 6739
. 또한 Redis 인스턴스를 Cache 보안 그룹에 연결하는 데 사용하는 EC2 노드의 보안 그룹을 허용하도록 허용해야합니다.
또한 AWS는 이제 여기에서 클러스터에 대한 추가 정보 액세스를 지원합니다.
이 답변은 오래되었습니다.
다음 단계에 따라 AWS 외부에서 elastic-cache에 액세스 할 수 있습니다.
- 캐시 클러스터와 동일한 VPC에 있지만 퍼블릭 서브넷에 NAT 인스턴스를 만듭니다.
- 캐시 클러스터 및 NAT 인스턴스에 대한 보안 그룹 규칙을 생성합니다.
- 규칙을 검증하십시오.
- NAT 인스턴스에 iptables 규칙을 추가합니다.
- 신뢰할 수있는 클라이언트가 클러스터에 연결할 수 있는지 확인합니다.
- iptables 구성을 저장하십시오.
자세한 설명은 aws 가이드를 참조하십시오.
그렇게 오래된 질문이 아니기 때문에 나는 같은 문제를 직접 해결하여 해결했습니다.
때로는 개발상의 이유로 외부에서 액세스해야합니다 (단순한 버그 수정을 위해 다중 배포를 피하기 위해?).
Amazon은 EC2를 외부 세계의 프록시로 사용하는 새로운 안내서를 게시했습니다.
http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Access.Outside.html
행운을 빕니다!
HAProxy를 예약 된 프록시 서버로 사용하고 있습니다.
AWS 외부의 시스템 ---> 인터넷-> 퍼블릭 IP가있는 HAProxy-> Amazon Redis (Elasticache)
그렇게해야하는 또 다른 좋은 이유가 있음을 주목하십시오 (당시).
Amazon DNS 장애 조치를 지원하지 않는 node.js 클라이언트를 사용하기 때문에 클라이언트 드라이버는 DNS 조회를 다시 지원하지 않습니다. redis가 실패하면 클라이언트 드라이버는 장애 조치 후 슬레이브 인 이전 마스터에 계속 연결합니다.
HAProxy를 사용하여 그 문제를 해결했습니다.
이제 최신 ioredis 드라이버를 사용하여 amazon dns 장애 조치를 지원합니다.
Windows EC2 솔루션을 원하는 사람이 있다면 DOS 프롬프트에서 다음을 시도해보십시오 (Windows EC2 시스템에서).
포트 전달을 추가하려면
C : \ 사용자 \ 관리자>netsh interface portproxy add v4tov4 listenport=6379 listenaddress=10.xxx.64.xxx connectport=6379 connectaddress=xxx.xxxxxx.ng.0001.use1.cache.amazonaws.com
포트 전달 포트를 나열하려면
C : \ 사용자 \ 관리자>netsh interface portproxy show all
ipv4에서 듣기 : ipv4에 연결 :
주소 포트 주소 포트
10.xxx.128.xxx 6379 xxx.xxxxx.ng.0001.use1.cache.amazonaws.com 6379
포트 전달을 제거하려면
C : \ 사용자 \ 관리자>netsh interface portproxy delete v4tov4 listenport=6379 listenaddress=10.xxx.128.xxx
이것은 당신을 위해 모든 더러운 작업을 수행 할 견고한 노드 스크립트입니다. 작동하는지 테스트하고 확인했습니다.
https://www.npmjs.com/package/uzys-elasticache-tunnel
사용법 : uzys-elasticache-tunnel [옵션] [명령]
명령 :
start [filename] start tunneling with configuration file (default: config.json)
stop stop tunneling
status show tunneling status
옵션 :
-h, --help output usage information
-V, --version output the version number
사용 예
- 시작-uzys-elasticache-tunnel start ./config.json
- 중지-uzys-elasticache-tunnel 중지
- 상태-uzys-elasticache-tunnel 상태
VPC 인스턴스에서 클래식 클러스터에 직접 액세스 할 수 없습니다. 해결 방법은 클래식 인스턴스에서 NAT를 구성하는 것입니다.
NAT에는 간단한 TCP 프록시가 필요합니다.
YourIP=1.2.3.4
YourPort=80
TargetIP=2.3.4.5
TargetPort=22
iptables -t nat -A PREROUTING --dst $YourIP -p tcp --dport $YourPort -j DNAT \
--to-destination $TargetIP:$TargetPort
iptables -t nat -A POSTROUTING -p tcp --dst $TargetIP --dport $TargetPort -j SNAT \
--to-source $YourIP
iptables -t nat -A OUTPUT --dst $YourIP -p tcp --dport $YourPort -j DNAT \
--to-destination $TargetIP:$TargetPort
I resolved using this amazon docs it says you ll have to install stunnel in your another ec2 machine.
https://aws.amazon.com/premiumsupport/knowledge-center/elasticache-connect-redis-node/
'code' 카테고리의 다른 글
ng-click이 필요한 이유는 무엇입니까? (0) | 2020.10.23 |
---|---|
DataURL의 Blob? (0) | 2020.10.23 |
Docker CMD를 여러 번 사용하여 여러 서비스를 실행할 수없는 이유는 무엇입니까? (0) | 2020.10.23 |
그룹 별 최고 가치 얻기 (0) | 2020.10.23 |
@synthesized getter를 재정의하는 방법은 무엇입니까? (0) | 2020.10.23 |