본문 바로가기

분류 전체보기

aws ec2 인스턴스 사용자 데이터 서버 이중화 및 Auto scaling 적용을 위해 원본 EC2 인스턴스의 AMI를 생성한다. 원본 인스턴스의 AMI를 이용하여 생성되는 사본 EC2 인스턴스의 경우 각 컨테이너의 환경변수(.env) 파일의 IPADDRESS 항목이 원본과 똑같이 지정되어있다. EUREKA_DEFAULT_ZONE의 경우 ELB의 DNS를 사용하기에 문제가 없으나 IPADDRESS의 경우 EC2 인스턴스 본인의 IP를 사용해야 하기에 이슈가 있다. EC2 인스턴스의 경우 사용자 데이터 라는 기능으로 인스턴스 실행 시 원하는 스크립트를 실행시킨 후 각 컨테이너를 띄울 수 있도록 부팅 옵션을 설정할 수 있다. 해당 설정의 경우 AMI를 생성할 때는 미리 지정할 수 없으며 시작 템플릿 생성 시 고급 세부 정보의 최하단에서 사용자.. 더보기
Ha multiplexing 다중화의 개요 다중화란 서비스의 가용성을 높이는 다양한 방법들 중 하나이다. 다중화 구성에는 다중화된 요소를 모두 이용할 수 있는 Active-Active와 다중화된 요소 중 일부는 사용할 수 없는 Active-Standby 두 종류가 있으며 Active-Standby는 Standby의 방식에 따라 다시 세 종류로 나뉜다. Hot Standby Standby 측은 가동 후 즉시 이용가능한 구성 Warm Standby Standby 측은 가동 후 이용가능하게 하기 위해서 준비가 필요한 구성 Cold Standby Standby 측을 정지시켜 두는 구성 기술적으로 가능하면 Active-Active가 가장 가용성이 좋다. 데이터를 저장하지 않은 Stateless 방식의 요소라면 Active-Active를 비교.. 더보기
Elasticsearch clustering 구현 Elasticsearch clustering의 경우 3개의 Master-eligible nodes로 구성하는 것으로 HA를 구현하기 적절 먼저 원본 es ec2와 같은 ec2를 2개 생성하고 es를 전부 설치한다. 그리고 각 es를 실행시키면 당연하게도 클러스터링이 되지 않는다. docker-compose.yml과 .env를 신경써서 수정해주어야 하며 그 수정사항은 대표적으로 - discovery.type - http.port - transport.tcp.port - clustering.initial_master_nodes - ports, expose - .env의 ES_SEED_HOSTS, ES_MASTER_HOSTS 등이 있다. 추가로 kibana에도 각 ES의 주소를 입력해주어야 하는데 ES에서 여.. 더보기
HA of infra Infra ha 목차 0. 개요 1. 고가용성(HA)이란? 2. HA 구현시 예상 최소 사양 3. AWS가 제공하는 고가용성 4. Auto scaling 5. Elasticsearch clustering 6. 인프라 아키텍처 0. 개요 프로젝트 인프라 구축 간 High availability(이하 HA)의 중요성 대두 다중 AZ-다중 서버/단일 AZ-단일 서버/단일 AZ-다중 서버, active-active/active-standby 등 검토하여 적용이 필요하다는 결론 1. 고가용성(HA)이란? 고가용성이란 서버와 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질을 뜻하며 한마디로 '고장나지 않는 정도'. 고가용성은 흔히 가용한 시간의 비율을 99%, 99.. 더보기
Spring eureka - auto scaling issue Issue eureka auto scaling 작업 과정 원하는 컨테이너가 실행중인 인스턴스 이미지 저장 해당 이미지를 기반으로 템플릿 작성 위 템플릿 기반으로 auto scaling 그룹 생성 문제 원본 EC2에 문제가 생길 경우 사본도 원본 EC2의 eureka를 보기 때문에 정상 작동하지 않음 주소 참조의 경우 s3 bucket에서 값을 읽어오기 때문에 유동적이지 않다. 해결 eureka를 볼 때 고정ip가 아닌 ELB의 도메인 주소로 찾는다 문제2 최초 실행 시 ELB에서 Inservice가 없기에 실행이 되지 않음 뮨재2 상세 환경변수에서 전부 수정하였으나 config s3 bucket에서 eureka 주소가 박혀있어서 원하는대로 동작하지 않음. 만약 환경변수나 bucket의 경로를 ELB 도메.. 더보기
Elasticsearch clustering Es clustering Elasticsearch의 노드들은 클라이언트와의 통신을 위한 http 포트(9200~9299), 노드 간의 데이터 교환을 위한 tcp 포트 (9300~9399) 총 2개의 네트워크 통신을 활용한다. 한 서버에 여러개의 노드를 실행시키는 것도 가능하나 일반적으로 1개의 물리 서버마다 하나의 노드를 실행하는 것을 권장한다. 물리적인 구성과 상관 없이 여러 노드가 하나의 클러스터로 묶이기 위해서는 클러스터명 cluster.name 설정이 묶여질 노드들 모두 동일해야 함. 같은 서버나 네트워크망 내부에 있다 하더라도 cluster.name이 동일하지 않으면 논리적으로 서로 다른 클러스터로 실행이 되고, 각각 별개의 시스템으로 인식된다. 디스커버리 (Discovery) 노드가 처음 실행.. 더보기
Auto scaling 오토스케일링은 클라우드 환경의 가장 기본적인 요소들 중에 하나로, 갑작스러운 트래픽 집중에 서버, 스토리지 등의 자원이 자동으로 확장하면서, 안정적인 서비스를 유지하는 것 Amazon EC2 오토 스케일링 - EC2의 확장성을 위한 오토 스케일링 - 오토 스케일링 그룹을 헬스 체크하며 인스턴스 확인 - 특정 이벤트 발생, 스케일링 작업 수행에 의해 시작 - 인스턴스를 늘리는 것 외에 축소(down-scaling or scaling in) 하는 작업도 포함 - 가용성, 비용, 시스템 매트릭 등이 스케일링의 변수 - 4개의 스케일링 옵션 ① Maintain: 고정된 수의 인스턴스를 유지 ② Manual: MIN, MAX, 특정수 등으로 수동 설정한 수대로 인스턴스 유지 ③ Schedule: 일정에 따라 인스.. 더보기
AWS 인프라 구성(VPC) 0. 개요 VPC란 AWS 클라우드에서 논리적으로 격리된 공간을 프로비저닝하여 AWS 리소스를 활용하는 것 IP 주소 범위 선택, 서브넷 생성, 라우팅 테이블 및 네트워크 게이트웨이 구성 등 가상 네트워킹 환경을 완벽하게 제어할 수 있다. VPC에서 IPv4와 IPv6를 모두 사용하여 리소스와 애플리케이션에 안전하고 쉽게 액세스할 수 있다. 1. VPC의 구성 계정을 처음 만들었을 때 하나의 리전에서 만들어지는 리소스 1 VPC n 서브넷 (Subnet) (n은 사용할 수 있는 가용존의 개수) 1 라우트 테이블 (Route Table) 1 네트워크 ACL (Network ACL) 1 시큐리티 그룹 (Security Group) 1 인터넷 게이트웨이 (Internet Gateway) 1 DHCP 옵션셋 (.. 더보기