2016-07-01 3 views
2

우리는 같은 지역의 다른 EC2 인스턴스에있는 mysql 데이터베이스를 사용하는 웹 사이트 인 EC2 인스턴스를 가지고 있습니다. mysql에서는 침입을 막기 위해 서버 탄력성 IP를 기반으로 제한된 액세스 권한을 제공합니다. 이제이 서버에 ELB를 설치하기로 결정했습니다. ELB 부분은 실제로 정상적으로 작동하지만 자동 크기 조정이 새 인스턴스를 회전 할 때 임의의 공용 IP 주소가 있으므로 mysql의 예외에 추가 할 수 없습니다. 액세스를 제공하기 위해 mysql에 ELB dns (A Name)를 추가하려고 시도했지만 여전히 작동하지 않습니다. ELB가 작동하고 자동 크기 조정이 새 인스턴스를 회전 시키지만 데이터베이스에 연결되지 않아 웹 사이트에 오류가 표시됩니다.EC2에서 Load Balancer + Autoscaling + Mysql

어떻게 해결할 수 있습니까?

+0

이 질문은 sw 개발과는 아무런 관련이 없습니다. DBA 또는 시스템 관리자는 sw 개발자보다이 질문에 답할 수있는 훨씬 좋은 위치에 있습니다. – Shadow

+1

왜 그들이 사용자 이름, 패스워드에 접속하지 못하게할까요? 그 사용자 이름은'host' 와일드 카드'%'와 같은 허가를 가진 항목입니까? 또는 EC2 보안 그룹 문제 (방화벽)입니까? 'select user, host from mysql.user'에서 엿보는 것은 주 서버의 연결 방법을 밝혀 줄 것입니다. 아마도 로컬 호스트를 통해 이루어질 것입니다. – Drew

답변

1

데이터베이스 액세스를 IP로 제한하는 대신 서브넷별로 제한하는 것이 좋습니다.

공용 서브넷 (웹 서버와 ELB는 있음)과 개인 전용 (데이터베이스 서버가 있음) 공용 서브넷의 컴퓨터는 인터넷의 모든 사용자가 액세스 할 수 있으며 개인 서브넷의 컴퓨터는 컴퓨터에서만 사용할 수 있습니다 공개 서브넷에서

같은 구성에 대한

자세한 내용은 여기에 있습니다 : http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html

, 당신은 설치 바스 티언 호스트 할 데이터베이스 서버를 관리하기 위해서 : http://blogs.aws.amazon.com/security/post/Tx2ZWDW1QA6D62Y/Controlling-Network-Access-to-EC2-Instances-Using-a-Bastion-Server

+0

이전에 생각한 것처럼 이미 서브넷을 시도했습니다. 하지만 문제가 인스턴스가 이미 실행 중이므로이 인스턴스의 서브넷을 변경할 수있는 방법을 찾을 수 없습니다. 그렇지 않으면 이것은 아주 좋은 해결책입니다. –

3

보다는 IP 주소를 통해 액세스를 제한이 보안을 사용 그룹 :

  • 보안 그룹을 만듭니다 (예 : App-SG)와 아소 단지 기계를이 방법을 MySQL 서버
  • MySQL의 인스턴스에 대한 보안 그룹 만들기와 통신하도록 허용하는 모든 인스턴스를 테 (예 : SQL-SG를 호출)와 App-SG

에서 인바운드 연결을 허용 App-SG과 함께 MySQL 인스턴스와 통신 할 수 있습니다. 자동 축척App-SG과 연결된 새 인스턴스를 시작하면 MySQL과 통신 할 수도 있습니다.

가능한 한 하드 코딩 된 IP 주소를 사용하지 않는 것이 좋습니다 (사용하지 않는 것처럼!).

+0

감사! 이것은 좋은 생각 인 것 같습니다. 하지만 이제는 여러 위치에서 DB 인스턴스의 공용 IP를 코드에서 이미 사용했으며 오류가 발생하기 쉬운 작업으로 수정하는 데 문제가있었습니다. 보안 그룹은 개인 IP 또는 공개 DNS에만 액세스 할 수 있으므로 우리는 무엇을 해야할지 잘 모릅니다. –

+0

through * - Bharat –

+0

데이터베이스가 응용 프로그램 서버와 동일한 VPC에있는 경우 응용 프로그램 서버는 공용 IP 주소를 통해 데이터베이스에 ** 액세스하지 않아야합니다 **. 이로 인해 트래픽이 VPC에서 (인터넷 게이트웨이를 통해) 빠져 나가고, 다시 트래픽이 발생하여 1c/GB의 트래픽 비용이 발생합니다. 대신 데이터베이스의 개인 IP로 확인되는 DNS 이름을 통해 데이터베이스를 참조해야합니다. 위에서 추천 한대로 ** Security Groups **를 사용하고 다른 인스턴스 (예 : 다른 AZ/서브넷)에서 실행해야 할 경우에 대비하여 데이터베이스의 개인 IP 주소를 변경할 수 있습니다. –