EC2 인스턴스 에서 VPC 의 ElastiCache Redis 인스턴스에 연결할 수 있습니다. 하지만 로컬 개발 설정 또는 다른 공급 업체에서 제공하는 VPS 인스턴스 와 같이 Amazon EC2 인스턴스 외부의 ElastiCache Redis 노드에 연결하는 방법이 있는지 알고 싶습니다 .
현재 내 로컬 설정에서 시도 할 때 :
redis-cli -h my-node-endpoint -p 6379
시간이 지나면 시간이 초과됩니다.
EC2 인스턴스 에서 VPC 의 ElastiCache Redis 인스턴스에 연결할 수 있습니다. 하지만 로컬 개발 설정 또는 다른 공급 업체에서 제공하는 VPS 인스턴스 와 같이 Amazon EC2 인스턴스 외부의 ElastiCache Redis 노드에 연결하는 방법이 있는지 알고 싶습니다 .
현재 내 로컬 설정에서 시도 할 때 :
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#access-from-outside-aws
SSH 포트 포워딩이 트릭을 수행해야합니다. 클라이언트에서 실행 해보십시오.
ssh -f -N -L 6379:<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 인스턴스를 캐시 보안 그룹에 연결하는 데 사용중인 EC2 노드의 보안 그룹을 허용하도록 허용해야합니다.
또한 AWS는 이제 여기에서 클러스터에 대한 추가 정보 액세스를 지원합니다.
kill -9 <pid>
이 답변은 오래되었습니다.
다음 단계에 따라 AWS 외부에서 elastic-cache에 액세스 할 수 있습니다.
자세한 설명은 aws 가이드를 참조하십시오.
그렇게 오래된 질문이 아니기 때문에 나는 같은 문제를 직접 해결하여 해결했습니다.
때로는 개발상의 이유로 외부에서 액세스해야합니다 (단순한 버그 수정을 위해 다중 배포를 피하기 위해?).
Amazon은 EC2를 외부 세계의 프록시로 사용하는 새로운 안내서를 게시했습니다.
행운을 빕니다!
HAProxy를 예약 된 프록시 서버로 사용하고 있습니다.
AWS 외부의 시스템 ---> 인터넷-> 퍼블릭 IP가있는 HAProxy-> Amazon Redis (Elasticache)
그렇게해야하는 또 다른 좋은 이유가 있음을 주목하십시오 (당시).
Amazon DNS 장애 조치를 지원하지 않는 node.js 클라이언트를 사용하기 때문에 클라이언트 드라이버는 DNS 조회를 다시 지원하지 않습니다. redis가 실패하면 클라이언트 드라이버는 장애 조치 후 슬레이브 인 이전 마스터에 계속 연결합니다.
HAProxy를 사용하여 그 문제를 해결했습니다.
이제 최신 ioredis 드라이버를 사용하여 amazon dns 장애 조치를 지원합니다.
BTW 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
사용 예
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
이 아마존 문서를 사용하여 다른 ec2 머신에 stunnel을 설치해야한다고 해결했습니다.
https://aws.amazon.com/premiumsupport/knowledge-center/elasticache-connect-redis-node/