ElastiCache 클러스터 또는 복제 그룹에 액세스 - Amazon ElastiCache

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

ElastiCache 클러스터 또는 복제 그룹에 액세스

Amazon ElastiCache 인스턴스는 Amazon EC2 인스턴스를 통해 액세스하도록 설계되었습니다.

Amazon Virtual Private Cloud(Amazon VPC)에서 ElastiCache 인스턴스를 시작한 경우 동일한 Amazon 의 Amazon 인스턴스에서 EC2 인스턴스에 액세스할 수 있습니다 ElastiCacheVPC. 또는 VPC 피어링을 사용하여 다른 Amazon 의 Amazon에서 ElastiCache 인스턴스EC2에 액세스할 수 있습니다VPC.

EC2 Classic에서 ElastiCache 인스턴스를 시작한 경우 EC2 인스턴스와 연결된 Amazon EC2 보안 그룹에 캐시 보안 그룹에 대한 액세스 권한을 부여하여 인스턴스가 클러스터에 액세스하도록 허용합니다. 기본적으로 클러스터에 대한 액세스는 클러스터를 시작한 계정으로 제한됩니다.

클러스터 또는 복제 그룹에 액세스 권한 부여

클러스터를 EC2- 로 시작했습니다.VPC

클러스터를 Amazon Virtual Private Cloud(Amazon VPC)로 시작한 경우 동일한 Amazon 에서 실행 중인 Amazon EC2 인스턴스에서만 클러스터에 연결할 수 있습니다 ElastiCacheVPC. 이 경우 클러스터에 네트워크 진입을 허용해야 합니다.

참고

Local Zones를 사용 중인 경우 활성화했는지 확인합니다. 자세한 내용은 Local Zones 활성화를 참조하세요. 이렇게 하면 VPC가 해당 로컬 영역으로 확장되고 VPC 는 서브넷을 다른 가용 영역 및 관련 게이트웨이, 라우팅 테이블 및 기타 보안 그룹 고려 사항의 서브넷으로 취급합니다. 는 자동으로 조정됩니다.

Amazon VPC 보안 그룹에서 클러스터로 네트워크 수신을 부여하려면
  1. 에 로그인 AWS Management Console 하고 에서 Amazon EC2 콘솔을 엽니다https://console.aws.amazon.com/ec2/.

  2. 탐색 창의 [Network & Security] 아래에서 [Security Groups]를 선택합니다.

  3. 보안 그룹 목록에서 Amazon 의 보안 그룹을 선택합니다VPC. ElastiCache 사용할 보안 그룹을 생성하지 않는 한 이 보안 그룹의 이름은 기본 입니다.

  4. [Inbound] 탭을 선택하고 다음을 수행합니다.

    1. 편집을 선택합니다.

    2. 규칙 추가를 선택합니다.

    3. 유형 열에서 사용자 지정 TCP 규칙 을 선택합니다.

    4. [Port range] 상자에 클러스터 노드의 포트 번호를 입력합니다. 이 번호는 클러스터를 시작할 때 지정한 번호와 동일해야 합니다. Memcached의 기본 포트는 11211 Valkey의 기본 포트이고 RedisOSS는 6379입니다.

    5. 소스 상자에서 포트 범위(0.0.0.0/0)가 있는 Anywhere를 선택하여 Amazon 내에서 시작하는 모든 Amazon EC2 인스턴스가 ElastiCache 노드에 연결할 VPC 수 있도록 합니다.

      중요

      ElastiCache 클러스터를 0.0.0.0/0으로 열면 퍼블릭 IP 주소가 없으므로 외부에서 액세스할 수 없으므로 클러스터가 인터넷에 노출되지 않습니다VPC. 그러나 기본 보안 그룹은 고객 계정의 다른 Amazon EC2 인스턴스에 적용될 수 있으며 해당 인스턴스에는 퍼블릭 IP 주소가 있을 수 있습니다. 기본 포트에서 무언가를 실행하면 비의도적으로 해당 서비스가 노출될 수 있습니다. 따라서 에서만 사용할 VPC 보안 그룹을 생성하는 것이 좋습니다 ElastiCache. 자세한 정보는 사용자 지정 보안 그룹을 참조하세요.

    6. 저장(Save)을 선택합니다.

Amazon EC2 인스턴스를 Amazon 로 시작하면 VPC해당 인스턴스가 ElastiCache 클러스터에 연결할 수 있습니다.

외부에서 ElastiCache 리소스에 액세스 AWS

Amazon ElastiCache 은 클라우드 기반 인 메모리 키-값 스토어를 제공하는 AWS 서비스입니다. 서비스는 내에서만 액세스하도록 설계되었습니다 AWS. 그러나 ElastiCache 클러스터가 내에서 호스팅되는 경우 Network Address Translation(NAT) 인스턴스를 사용하여 외부 액세스를 제공할 VPC수 있습니다.

요구 사항

외부 에서 ElastiCache 리소스에 액세스하려면 다음 요구 사항을 충족해야 합니다. AWS

  • 클러스터는 내에 있어야 VPC 하며 Network Address Translation(NAT) 인스턴스를 통해 액세스해야 합니다. 이 요구 사항에는 예외가 없습니다.

  • NAT 인스턴스는 클러스터VPC와 동일한 에서 시작해야 합니다.

  • NAT 인스턴스는 클러스터와 별도의 퍼블릭 서브넷에서 시작해야 합니다.

  • 탄력적 IP 주소(EIP)를 NAT 인스턴스와 연결해야 합니다. iptables의 포트 전달 기능은 NAT 인스턴스의 포트를 내의 캐시 노드 포트로 전달하는 데 사용됩니다VPC.

고려 사항

외부에서 ElastiCache 리소스에 액세스할 때는 다음 사항을 염두에 두어야 합니다 ElastiCache.

  • 클라이언트는 NAT 인스턴스의 EIP 및 캐시 포트에 연결합니다. NAT 인스턴스의 포트 전달은 트래픽을 적절한 캐시 클러스터 노드로 전달합니다.

  • 클러스터 노드가 추가되거나 대체되면 이 변경 사항을 반영하도록 iptables 규칙을 업데이트해야 합니다.

제한 사항

테스트 및 개발 목적으로만 이 접근 방식을 사용해야 합니다. 다음과 같은 제한으로 인해 프로덕션용으로는 사용하지 않는 것이 좋습니다.

  • NAT 인스턴스는 클라이언트와 여러 클러스터 간의 프록시 역할을 합니다. 프록시를 추가하면 캐시 클러스터 성능에 영향을 줍니다. 인스턴스를 통해 액세스하는 캐시 클러스터 수에 따라 영향이 증가합니다NAT.

  • 클라이언트에서 NAT 인스턴스로의 트래픽은 암호화되지 않습니다. 따라서 NAT 인스턴스를 통해 민감한 데이터를 전송하지 않아야 합니다.

  • NAT 인스턴스는 다른 인스턴스를 유지 관리하는 오버헤드를 추가합니다.

  • NAT 인스턴스는 단일 장애 지점 역할을 합니다. NAT 에서 고가용성을 설정하는 방법에 대한 자세한 내용은 Amazon 인스턴스의 고가용성: 예제 를 VPC참조하세요. VPC NAT

외부에서 ElastiCache 리소스에 액세스하는 방법 AWS

다음 절차에서는 NAT 인스턴스를 사용하여 ElastiCache 리소스에 연결하는 방법을 보여줍니다.

이 단계에서는 다음과 같이 가정합니다.

  • iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6380 -j DNAT --to 10.0.1.231:6379

  • iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6381 -j DNAT --to 10.0.1.232:6379

다음으로 NAT 반대 방향으로 다음과 같이 해야 합니다.

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 10.0.0.55

기본적으로 비활성화된 IP 전달도 활성화해야 합니다.

sudo sed -i 's/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/g' /etc/sysctl.conf sudo sysctl --system

  • 다음을 사용하여 Memcached 클러스터에 액세스합니다.

    • IP 주소 – 10.0.1.230

    • 기본 Memcached 포트 – 11211

    • 보안 그룹 – *10\.0\.0\.55*

  • 다음을 사용하여 Valkey 또는 Redis OSS 클러스터에 액세스합니다.

    • IP 주소 – 10.0.1.230

    • 기본 포트 - 6379

    • 보안 그룹 – sg-bd56b7da

    • AWS 인스턴스 IP 주소 – sg-bd56b7da

  • 신뢰할 수 있는 클라이언트의 IP 주소가 198.51.100.27입니다.

  • NAT 인스턴스에는 탄력적 IP 주소 203.0.113.73이 있습니다.

  • NAT 인스턴스에 보안 그룹 sg-ce56b7a9가 있습니다.

NAT 인스턴스를 사용하여 ElastiCache 리소스에 연결하려면
  1. 캐시 클러스터VPC와 동일한 에서 퍼블릭 서브넷에 NAT 인스턴스를 생성합니다.

    기본적으로 VPC 마법사는 cache.m1.small 노드 유형을 시작합니다. 필요에 따라 노드 크기를 선택해야 합니다. 외부 ElastiCache 에서 에 액세스할 수 있으EC2NATAMI려면 를 사용해야 합니다 AWS.

    NAT 인스턴스 생성에 대한 자세한 내용은 사용 설명서의 NAT 인스턴스를 AWS VPC 참조하세요.

  2. 캐시 클러스터 및 NAT 인스턴스에 대한 보안 그룹 규칙을 생성합니다.

    NAT 인스턴스 보안 그룹과 클러스터 인스턴스에는 다음 규칙이 있어야 합니다.

    • 인바운드 규칙 2개

      • Memcached의 경우 첫 번째 규칙은 신뢰할 수 있는 클라이언트에서 NAT 인스턴스(11211 - 11213)에서 전달된 각 캐시 포트로의 TCP 연결을 허용하는 것입니다.

      • Valkey 및 Redis OSS의 경우 첫 번째 규칙은 신뢰할 수 있는 클라이언트에서 NAT 인스턴스(6379 - 6381)에서 전달된 각 캐시 포트로의 TCP 연결을 허용하는 것입니다.

      • 신뢰할 수 있는 클라이언트에 대한 SSH 액세스를 허용하는 두 번째 규칙입니다.

      NAT 인스턴스 보안 그룹 - Memcached를 사용한 인바운드 규칙
      유형 프로토콜 포트 범위 소스
      사용자 지정 TCP 규칙 TCP 11211-11213 198.51.100.27-32
      SSH TCP 22 198.51.100.27-32
      NAT 인스턴스 보안 그룹 - Valkey 또는 Redis를 사용하는 인바운드 규칙 OSS
      유형 프로토콜 포트 범위 소스
      사용자 지정 TCP 규칙 TCP 6379-6380 198.51.100.27-32
      SSH TCP 22 203.0.113.73/32
    • Memcached를 사용하면 캐시 포트(11211)에 대한 TCP 연결을 허용하는 아웃바운드 규칙입니다.

      NAT 인스턴스 보안 그룹 - 아웃바운드 규칙
      유형 프로토콜 포트 범위 대상
      사용자 지정 TCP 규칙 TCP 11211 sg-ce56b7a9(클러스터 인스턴스 보안 그룹)
    • Valkey 또는 Redis OSS를 사용하면 캐시 포트(6379)에 대한 TCP 연결을 허용하는 아웃바운드 규칙입니다.

      NAT 인스턴스 보안 그룹 - 아웃바운드 규칙
      유형 프로토콜 포트 범위 대상
      사용자 지정 TCP 규칙 TCP 6379 sg-ce56b7a9(클러스터 인스턴스 보안 그룹)
    • Memcached를 사용하면 NAT 인스턴스에서 캐시 포트(11211)로의 TCP 연결을 허용하는 클러스터의 보안 그룹에 대한 인바운드 규칙입니다.

      클러스터 인스턴스 보안 그룹 - 인바운드 규칙
      유형 프로토콜 포트 범위 소스
      사용자 지정 TCP 규칙 TCP 11211 sg-bd56b7da(NAT보안 그룹)
    • Valkey 또는 Redis OSS를 사용하면 NAT 인스턴스에서 캐시 포트(6379)로의 TCP 연결을 허용하는 클러스터의 보안 그룹에 대한 인바운드 규칙입니다.

      클러스터 인스턴스 보안 그룹 - 인바운드 규칙
      유형 프로토콜 포트 범위 소스
      사용자 지정 TCP 규칙 TCP 6379 sg-bd56b7da(클러스터 보안 그룹)
  3. 규칙을 검증합니다.

    • 신뢰할 수 있는 클라이언트가 NAT 인스턴스에 SSH 액세스할 수 있는지 확인합니다.

    • 신뢰할 수 있는 클라이언트가 NAT 인스턴스에서 클러스터에 연결할 수 있는지 확인합니다.

  4. Memcached

    NAT 인스턴스에 iptables 규칙을 추가합니다.

    NAT 인스턴스에서 클러스터 노드로 캐시 포트를 전달하려면 클러스터의 각 노드에 대한 NAT 테이블에 iptables 규칙을 추가해야 합니다. 예제는 다음과 같습니다.

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11211 -j DNAT --to 10.0.1.230:11211

    포트 번호는 클러스터의 노드마다 고유해야 합니다. 예를 들어, 포트 11211 - 11213을 사용하여 노드가 3개인 Memcached 클러스터로 작업하는 경우 규칙은 다음과 같습니다.

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11211 -j DNAT --to 10.0.1.230:11211 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11212 -j DNAT --to 10.0.1.231:11211 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11213 -j DNAT --to 10.0.1.232:11211

    신뢰할 수 있는 클라이언트가 클러스터에 연결할 수 있음을 확인합니다.

    신뢰할 수 있는 클라이언트는 NAT 인스턴스와 EIP 연결된 와 해당 클러스터 노드에 해당하는 클러스터 포트에 연결해야 합니다. 예를 들어 의 연결 문자열은 다음과 같을 PHP 수 있습니다.

    $memcached->connect( '203.0.113.73', 11211 ); $memcached->connect( '203.0.113.73', 11212 ); $memcached->connect( '203.0.113.73', 11213 );

    telnet 클라이언트를 사용하여 연결을 확인할 수도 있습니다. 예:

    telnet 203.0.113.73 11211 telnet 203.0.113.73 11212 telnet 203.0.113.73 11213

    Valkey 또는 Redis OSS

    NAT 인스턴스에 iptables 규칙을 추가합니다.

    NAT 인스턴스에서 클러스터 노드로 캐시 포트를 전달하려면 클러스터의 각 노드에 대한 NAT 테이블에 iptables 규칙을 추가해야 합니다. 예제는 다음과 같습니다.

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6379 -j DNAT --to 10.0.1.230:6379

    포트 번호는 클러스터의 노드마다 고유해야 합니다. 예를 들어 포트 6379 - 6381을 사용하여 3노드 Redis OSS 클러스터로 작업하는 경우 규칙은 다음과 같습니다.

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6379 -j DNAT --to 10.0.1.230:6379 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6380 -j DNAT --to 10.0.1.231:6379 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6381 -j DNAT --to 10.0.1.232:6379

    신뢰할 수 있는 클라이언트가 클러스터에 연결할 수 있음을 확인합니다.

    신뢰할 수 있는 클라이언트는 NAT 인스턴스와 EIP 연결된 와 해당 클러스터 노드에 해당하는 클러스터 포트에 연결해야 합니다. 예를 들어 의 연결 문자열은 다음과 같을 PHP 수 있습니다.

    redis->connect( '203.0.113.73', 6379 ); redis->connect( '203.0.113.73', 6380 ); redis->connect( '203.0.113.73', 6381 );

    telnet 클라이언트를 사용하여 연결을 확인할 수도 있습니다. 예:

    telnet 203.0.113.73 6379 telnet 203.0.113.73 6380 telnet 203.0.113.73 6381
  5. iptables 구성을 저장합니다.

    규칙을 테스트하고 확인한 후 저장합니다. Redhat 기반 Linux 배포(예: Amazon Linux)를 사용하는 경우 다음 명령을 실행합니다.

    service iptables save

관련 주제

더 자세히 알고 싶으시면 다음 단원을 참조하십시오.