-
Azure IaaS Wordpress (5)고가용성 옵션, 이중화, AppGWAzure 2022. 11. 16. 15:24
---
------------------------------------------------------------------------------
- 실제 가상머신 만들기 옵션에
가용성 옵션에 vmss까지 들어가 있어(이중화, 오토스케일링이 같은 옵션에? 맞지?)
가용성 영역 고르면
vmss는
가용성 집합은
저거 파파고하면
입력 내용에 따라 로드 밸런싱된 가상 시스템을 관리, 구성 및 확장할 수 있는 가상 시스템 확장 세트로 이 리소스를 생성하는 것을 고려할 수 있습니다.
- MySQL만드는곳에 스펙정하는 창에서도
고가용성, 지역 중복이 체크 되기안되기가 있는데..
------------------------------------------------------------------------------
---
가상 네트워크를 만들었고
그 위에 가상머신(리눅스 서버)
거기에 wordpress설치
wordpress의 DB는 Azure database for MySQL(플랫폼서비스). 이 두개의 통신은 엔드포인트라는걸 통해서
wordpress의 보안을 강화하기 위해 security group을 조절해서 ssh포트로 접근하는걸 특정 공인 IP에서만 접근 가능하도록 제어, 접근할 때 ssh포트를 직접 접근하는 것이 아니고 HTTPS를 통해서 Azure portal에서 ssh접근을 할 수 있도록
---
이번엔 가상컴퓨터, 가상머신 자체의 문제가 발생했을 때 회복을 위해서 이중화, 고가용성을 구성해볼 것
그러기 위해 워드프레스를 좀 수정
---
Azure에서 제공하는 고가용성은
Availability Set
Availability Zone
---
https://learn.microsoft.com/ko-kr/azure/virtual-machines/availability-set-overview
가용성 집합 개요 - Azure Virtual Machines
Azure의 가상 머신에 대한 가용성 집합에 대해 알아봅니다.
learn.microsoft.com
AS는 폴트 도메인(FD)과 업데이트 도메인(UD) 두개로 나눠짐
FD는 전원과 상면, 네트워크 같은 것들이 전부다 격리 돼 있는 다른 곳을 의미
FD가 0 1 2 면 1층 2층 3층에 데이터 센터가 있을 수도 있고
여러개의 데이터센터를 하나로 묶어서 FD다 라고 선언할 수도 있다 -> 오?
*상면 : https://it-ist.tistory.com/175
FD는 전원과 상면과 네트워크가 격리돼 있는 다른 곳이라고 생각하시면 될 것 ▽하나 껐다 켜도 다른거랑 상관없다 이거겠지?
[Azure] 가용성 집합 (Availability Set)
1. 가용성 집합 (Availability Set)이란? Availability Set이란 가용성 집합을 말한다. 여기서 가용성 집합이란 기존 온프레미스 또는 클라우드 환경에서 중요하게 여겨지는 고가용성을 보장하기 위해서
tikus.tistory.com
: FD vs UD, gif까지 설명 좋네
AS : 99.95%, FD는 서버 랙 단위를 묶고(장애때문), UD는 업데이트를 위한거라 그냥 다른데다가 마이그레이션 되는 개념
AZ : 99.99%, AZ는 데이터 센터를 묶는다(묶고, 걔네들 중에서 배분한다는 얘긴 것 같은데 3개면 각각 1개씩 이든가)
UD는 하나의 폴트 도메인 안에 있는 서버들을 나눠주는 것
MS Azure도 하드웨어 자체를 업데이트 해야 하는 옵션이 있을 것. 근데 가상머신이 떠있는데 그냥 업데이트를 해버리면 서비스에 장애가 있을 수 있기 때문에 알리기도 해야되고 실제 업데이트를 할 때도 여러분들의 서비스는 고가용성이 유지가 돼야해
근데 한대 서버 위에 두대 이상의 여러분들의 가상머신이 배포가 돼 있다면 하나의 물리서버가 죽었을 때 두대 이상의 가상 컴퓨터가 문제가 발생할 수 있기 때문에 그런것들을 최소화 할 수 있도록 서버 랙 혹은 서버들을 별도로 격리돼서 배포할 수 있는 옵션을 제공한다. 그것을 업데이트 도메인이라고 한다 --▽폴트 도메인 아냐?
업데이트 도메인을 5개를 선택을 하고 FD도메인을 2개 선택하면
내가 6개의 가상 컴퓨터를 배포했을 때
최소한 5대는 같은 서버에 배포되지 않도록 제어해주겠다 = UD
전원과 네트워크와 상면이 다른곳에 배포해주겠다 = FD
6대 배포하면 FD이 2개로 배포됐을 때 적어도 3대씩은 다른 FD에 배포해주겠다 라는 옵션을 활성화 한거다
---
Availability Set은 다른 클라우드 하다 왔으면 이해하기 힘들어
그래서 MS에서 옵션을 하나 더 추가했다 그게 AZ
---
AZ는 우리가 고가용성을 디자인하는 것이다
데이터센터1
데이터센터2
데이터센터3을 나눠서
가상컴퓨터를 각각의 데이터센터에다가 배포하게 되는 것
한국 중부의 1번 데이터센터
한국 중부의 2번 데이터센터
한국 중부의 3번 데이터센터
에다가 각각 가상컴퓨터를 따로따로 배포하시면 데이터센터가 한곳이 무너지더라도 다른 데이터센터에서 여러분들이 정상적인 서비스를 할 수 있도록 제공 = AZ
---
AZ는 내가 SLA를 보장받기 위해 가상 컴퓨터를 고가용성에 맞게 적재적소에 존에다가 배포를 해야 한다. 잘못 배포하거나 잘 배포 했는데 서비스간 클러스터링이 맺어져 있지 않아서 정상적인 서비스가 되지 않는 것은 전부가 사용자 책임
AS는 고가용성 가상 컴퓨터 배포해주는걸 MS가 알아서 해주는 것. 즉 SLA에 대한 보장을 MS가 해줘야만 한다. 우린 AS를 대상으로 가상컴퓨터를 그냥 배포만 하면 된다. 그 배포한 것이 알아서 고가용성이 구성되도록 배포가 되는 것
AZ를 쓸지 AS를 쓸지 선택
중부에 AZ가 없었다
---
서버가 두대 이상 배포가 되면
앞단에서 부하분산이라는 걸 제공해줘야 한다
Azure에선 Azure Load Balancer라는걸 제공
얘는 기본적으로 five tuple, 사용자의 IP, 포트, 대상서버의 IP, 포트, 통신하는 프로토콜. 다섯가지의 컨디션을 갖고 통신을 할 수 있도록 릴레이션을 잡아줌
이 로드밸런서는 5tuple뿐만 아니고 2tuple과 3tuple을 제공해주고 있다
2tuple은 Source IP, Destination IP만 갖고 제어
3tuple은 Source IP, Destination IP, protocol 세개의 조건으로 밸런싱을 해주는 것
백엔드에, 가상컴퓨터에 세션 클러스터링 같은걸 활성화 하지 않았다라고하면 AzureLB를 통해서 2tuple이든 3tuple이든 통신을 하면 된다
AzureLB는 기본적으로 Idle time이 최소 4분, 최대 30분까지 세션을 한쪽으로 연결할 수 있는 기능을 제공해주고 있다
*Idle timeout : https://reaperes.medium.com/aws-alb-의-idle-timeout-에-관하여-7addb8bfb886
AWS ALB 의 Idle timeout 에 관하여
ALB 옵션 중에는 idle timeout[1] 값이 있습니다. ALB 는 등록된 target EC2 에 대해 connection 을 맺어 놓고 HTTP 통신을 하게 되는데, client 에서 아무런 데이터를 보내지 않을 경우 idle…
reaperes.medium.com
: client에서 아무런 데이터를 보내지 않을 때 connection close하는 것
클라이언트가 특정서버로 접근하는데 idle time이 4분을 초과하지 않는다면 하나의 서버로만 통신할 수 있는 옵션을 제공해주고 있음. 참고
---
앞의 AzureLB는 L4 기반 밸런싱
AG는 L7 기반 밸런싱 제공
사용자가 접근했을 때 HTTP or HTTPS를 통해서 접근을 할 수 있고, 실제 연결돼 있는 도메인 이름 혹은 패스 경로 혹은 백엔드 가상 컴퓨터든, 아니면 다른 데이터센터든, IP든 어디든 연결을 할 수 있도록 제어해주고 있다
중간에 Rule이라는 것도 있어서 그 Rule에서 HTTP를 HTTPS로 redirection시켜줘라.. 이 도메인 네임으로 들어온건 특정서버로만 라우팅 해줘라 라는 것 같은 정책들을 해줄 수 있다
AG는 L7기반의 LB기 때문에 두 가지 기능을 더 추가해서 제공해준다
첫번째는 HTTPS 오프로딩(SSL 오프로딩이라고도 한다). 우리가 HTTPS로 접근하면 백엔드인 뒷단, 가상 컴퓨터 혹은 다른 서비스랑은 HTTP통신 평문통신을 할 수 있도록 제어해준다. 가상컴퓨터에는 HTTPS 인증서가 들어가지 않아도 되고 AG에만 인증서가 들어가도 사용자는 HTTPS통신을 할 수 있는 옵션을 제공해주고 있다
두번째 옵션은 AG에 WAF를 추가할 수 있다 Web Firewall이라고도 한다
WAF를 활성화 시키면 OWSP 3.0 or 2.1버전의 방어를 제어받을 수 있다
---
Traffic Manager는 부하분산의 괜찮은 옵션이긴한데 DNS기반의 로드밸런싱
크게는 글로벌 서버 로드밸런싱 이라고 보면 된다 GSLB
성능기반
트래픽부하기반
우선순위기반
지역기반
가상네트워크기반
..
정도의 기능을 제공해주고 있다
중첩가능
LB만 갖고 부하분산할게 아니고 글로벌 서비스를 할 땐 한국에 있는 사람은 한국 데이터센터에 접근하고 미국은 미국데센에 하게 해주려면 traffic manager를 사용하는것도 나쁘지 않은 옵션이다
---
한대의 가상 컴퓨터에다 wordpress를 설치해서 사용
얘를
두대로 나누고 앞단에다 로드밸런서를 설정
가상 컴퓨터에는 공인 IP를 연결하지 않고, 로드밸런서에는 공인 IP를 연결해서 사용자가 LB에 접근하면 뒷단 가상 컴퓨터에 접근해서 MySQL데이터를 쿼리하는 wordpress를 구현해보도록 하겠습니다
---
---
리소스를 만들기 전에 기존걸 지운다
리소스 그룹 > 가상 머신, 공용 IP주소, 네트워크 인터페이스, 디스크
이렇게 4개 지움
▽가상컴퓨터에 있는 공용 IP를 어떻게 LB로 옮긴다는거지? 했었는데 여기서 그냥 지우네
---
로드밸런서 배포
그냥 부하 분산 장치 만드시네
리소스 그룹
이름
지역(가상 컴퓨터를 배포할 지역)
형식 공개/내부 : 내부는 가상 네트워크 내에서만 통신을 하는 LB, 공개는 실제 외부 사용자가 접근할 수 있는 LB
내부는 외부에서 접근x, 공개는 내부에서 접근할 수 없다. 실제 가상네트워크 내에서 접근이 필요하면 내부 LB를 별도로 만들어줘야 한다
SKU 기본/표준
기본은 무료, Availability Set만 지원 / 표준 AS, AZ 둘다 지원
추가로 표준은 LB뒷단에 있는 서버, 백엔드에 아웃바운드에 대한 제어도 가능. 좀 더 많은 기능
이번 실습엔 표준을 써볼게요
IPv6는 애플같은데나 안드로이드에 업로드를 하려면 IPv6가 필수적으로 필요할 수 있습니다.
---
태그는 많이 달면 달수록 좋다
---
리소스로 이동
프런트 엔드 IP가 방금 만든 IP주소
---
백엔드 풀을 미리 만들어놓겠습니다
백 엔드 풀 > +추가
가상네트워크 선택
아까 VM지워서 가상 컴퓨터를 찾을 수 없다고 나오고
이 백엔드 풀을 기반으로 가상컴퓨터를 여기에 배포할 것
---
상태 프로브(서버 엔지니어들은 헬스체크라고 아는)
프로브는 네트워크 엔지니어들이 사용하는 용어
추가 해서 프로브를 만들어준다
---
부하분산 규칙(프로브까지 전부 배포 본 다음에)
추가
아까 만든 프런트 엔드 IP
백엔드 풀
상태 프로브 80포트, 헬스 체크를 할 수 있는 프로브
세션 지속성이
아까 말씀 드렸던 5tuple(없음), 2tuple(클라이언트 IP), 3tuple(클라이언트 IP 및 프로토콜)
없음을 기본적으로 사용
유휴 제한 시간(분) = idle time 4분~30분
암시적 아웃바운드 규칙 만들기
아니오 : 백엔드에 연결돼있는 모든 가상 컴퓨터는 인터넷이 되지 않는다
기본적으로 외부 NAT를 연결할 때 로드밸런서를 연결해주시면 로드밸런서의 프론트엔드 IP로 외부 아웃바운드 NAT를 통해 나가고 있다
쉽게 얘기해서 가상 컴퓨터가 공인 IP가 없을 경우에 외부와 통신을 할 때는 아무 IP나 통신을 하는데 그 가상 컴퓨터가 네트워크 로드 밸런서랑 연결이 되면 이 네트워크 로드밸런서와 연결된 프론트엔드 IP를 타고 외부로 나간다
=>ㅇㅋ
혹은 NAT 게이트웨이같은거 연결해주면 외부로 그 NAT 게이트를 타고 외부로 나가는데 기본적으로 암시적 아웃바운드 규칙 만들기에서 아니요 하면 프론트 엔드 IP를 통해서 외부로 나가는걸 차단하겠다는 것
기본적으로 쟤를 예로 해주면 백엔드에 있는 인스턴스들이 외부와 통신할 수 있다
아니오라고 하면 LB에서 백엔드 인스턴스까지는 갈 수 있지만 백엔드 인스턴스가 이 IP를 타고 외부로 나가는 것은 불가능하다
=>ㅇㅋ
---
인바운드 NAT규칙 : 특정 포트로 접근했을 때 특정 서버로 통신할 수 있도록 해주는 규칙(=포트포워딩)
=>ㅇㅋ
아웃바운드 규칙 : 을 별도로 만들어줄 수도 있다. 기본적으로 부하분산 규칙에서는 암시적 아웃바운드 규칙을 아니오로 선택하고, 여기에서 별도로 만들어주는것도 가능
---
가상 컴퓨터 만들기
눌러눌러
이번엔 가용성 옵션을 가용성 집합으로, Availability Set !
그러면 고르라고 나오는데 없으니까 새로 만들기
장애 도메인 최대 3개까지 가능하지만 지금 2개까지 선택 가능(엥?)
업데이트 도메인 20개까지 가능한데 기본 설정인 5개 그대로 하겠습니다.
---
이건 아까 만들었으니까
---
22번 포트 사용 안할거고, 그냥 없음으로 할게
---
디스크탭
표준 SSD
지난시간에 다 이걸로 만들었지
---
네트워킹 탭
동일한 네트워크, 공용 IP는 없이
▽가상 네트워크, 서브넷은 선택돼 있는것
Network Interface C의 네트워크 security group은 고급 선택
고급 누르면 밑에 네트워크 보안 그룹 구성이 나옴
이전에 만들었던 security group이 나온다(아까 안지움)
기존의 nsg를 그대로 사용할거니까 웹서버 http포트 열려있고 ssh로는 현재 있는 네트워크에서 접근하는게 가능할 것
---
이걸 예 누르면
이게 나오고, LB 연결 할 것
로드밸런서 선택하면 백엔드 풀이 나오고 그거 선택하면 그곳에 가상컴퓨터를 배포할 것이다.
---
관리 탭
아무것도 안하고 넘어감
---
고급
wordpress설치하는 것이잖아요?
설치할 확장 선택
설치돼 있는 wordpress를 백업한게 아니고 우분투 18.04를 배포하면서 거기다 wordpress를 설치할 것이기 때문에 아까와 동일하게 Script를 연결하겠습니다.
얘 누르고 만들기
---
설정한번 보기, 이게 wordpress를 구성하는 스크립트(▽아까 한번 봤다는데 까먹었나..)
▽sed -i -e이런걸로 바꿔줬나봐
여기보면 바꿔줬다~가 있다
이 파일을 업로드해서 자동으로 wordpress를 구성하는걸 설정해보도록
---
아까 거기서 만들기 하면
이게 뜨고 찾아보기 누르면
스토리지계정
컨테이너, 저거 누르면
여기서 방금 수정한거 업로드하고 (mysql connection이 포함돼있대)
체크하고 선택
Command도 수정해줘야해
이렇게
업로드한 script파일을 실행할 수 있다
---
태그는 많을수록 좋다
환경
조직
사용자
규칙성있게, 많이 : 보통 비용을 나눌 때. 구독을 나누거나 리소스 그룹을 나눠서 비용을 나눌 수 있는데 이렇게 태그로도 해
만들기. wordpress를 설치하고 MySQL도 연결문자열 수정.. 오래걸림
---
1번 서버를 배포하고 있음. 2번째 서버도 또 하자
리소스 그룹
이름
지역
가용성 집합 - 만들어놓은
만약에 가용성 영역이면, 1번존에 배포했는지, 2번인지 3번인지 다 계산해서 어디에 어떻게 배포했는지 확인해야해
가용성 집합을 쓰면 그냥 여기를 기준으로 사용하면 된다
기존 키
---
디스크
표준 SSD
---
네트워킹
공용IP 없음
NIC NSG 고급, 기존거 사용
부하분산도 기존에 있는 LB
---
관리 넘어가고
고급에서 확장 하고 Custom Script For Linux > 만들기 > 아까 스토리지에 업로드한 스크립트 선택 > 명령어도 수정
---
태그
다 달아줘
환경
조직
사용자
만들기 : 두번째 wordpress가 확보
---
이제 배포된 부사분산 장치 연결
리소스 그룹에서 부하분산장치 클릭 > 백엔드 풀
두대의 서버가 연결돼있다
---
개요 탭에서
공용 IP 주소를 복사하고 웹브라우저에 넣으면 wordpress가 뜬다
---
LB를 통해 공인 IP로 접근
그걸 프론트엔드가 백엔드 풀에 부하분산규칙에 따라서 전달이 됐다
이렇게 이중화를 구성했다! 이게 이중화야
https://kim-dragon.tistory.com/116
이중화란? 고가용성(HA,High Avaliability)을 위한 이중화
이중화란? 시스템의 가용성 높이기 위해 장비를 다중화 시키는 방법을 말합니다. 이중화 구성은 가용성을 높여주기 때문에 고가용성을 뜻하는 HA(Hight Avaliability)라는 용어와 혼재하여 사용하기
kim-dragon.tistory.com
여기 뭐 다 나오네 하나 죽으면 나머지 하나가 스탠바이가 Active될때까지 시간이 걸린다는 것. 이 과정이 failover. 평소에 스탠바이 서버와 데이터를 동기화 하는 것도 = RAID https://yoonwould.tistory.com/152
[용어]HA, 클러스터링, 이중화, RAID란 무엇인가?
HA (High Availability : 고가용성, 고가용도) 가용성은 시스템 고장 발생 시 얼마나 빠른 시간내에 치료가 되어 다시 정상적으로 서비스할 수 있는 상태인지를 분석하는 척도 입니다. 따라서 HA 구성이
yoonwould.tistory.com
이중화는 그냥 2개 만드는거고
이중화의 종류가 2개 인것. 다중화된 것들을 다 가동할건지 / HA라고 말하는, 하나는 가동, 하나는 장애 상황의 경우 대비해서 준비 상태로 대기시키는 것.
---
---
실습!
---
워드프레스 보안설정
워드프레스 2대로 운영해서 고가용성, 이중화
---
이중화에서 중요한게
1.세션 클러스터링
: AzureLB가 idle time이 4분이상이 지나면 다른 서버로 연결을 하는데 그때도 로그인에 대한 정보값을 연결을 해야한다 라고하면 서버들간에 세션을 연결지속성을 가질 수 있도록 별도의 세션 저장소를 갖고 있는게 좋다. 최근에 많이 사용하는 세션 저장소는 Redis Cache. SQL 데이터베이스 써도 된다. 여러분들이 비용최적화해서 사용할 수 있는 그 어딘가에 세션 정보값을 저장해주면 좋을 것 같습니다
2.로드밸런서의 idle time이 4~30분인데 여러분들의 로그인 돼있는 로그인시간도 몇분인지를 확인해주면 좋다. 굳이 세션 클러스터를 맺지 않아도 한대의 서버 안에서 통신이 처리가 되면 된다라고 하면 어찌됐든 tuple을 기반으로 서버를 밸런싱해 받을거고 실제 접속돼 있는 서버가 idle time이 4분, 혹은 30분 이상이 지나야지만 다른 서버로 릴레이션을 바꾸기 때문에 그런것들을 고려해본다면 여러분들이 로그인에 대한 세션, 시간을 정하는것도 어느정도 중요할거라 생각합니다
'Azure' 카테고리의 다른 글
Azure IaaS Wordpress (7)오토스케일, 모니터 (1) 2022.11.16 Azure IaaS Wordpress (6)부하 방지 (0) 2022.11.16 Azure IaaS Wordpress (4)보안 추가 (2) 2022.11.16 Azure IaaS Wordpress (3)설치-DB, 엔드포인트추가 (0) 2022.11.14 Azure IaaS Wordpress (2)설치-Wordpress (0) 2022.11.14