[2023-04-17 월] Azure
1. web01 web02 가상머신 만들기
AWS는 콘솔, Azure는 포털이라고 한다
로그인
비용, 크레딧 확인하기
Azure 컴퓨트 서비스
- 애플리케이션을 새로 구축할 때나 기존 애플리케이션을 배포할 때, Azure는 앱을 실행하는 데 필요한 인프라를 제공한다.
- 클라우드의 용량을 컴퓨팅하고 필요시 확장할 수 있다.
- 애플리케이션을 컨테이너화하고, Windows 및 Linux VM(가상 머신)을 배포하고, VM을 Azure로 마이그레이션하기 위한 유연한 옵션을 활용한다.
- 하이브리드 환경에 대한 포괄적인 지원을 통해 원하는 방법으로 원하는 위치에 배포한다.
리소스 그룹 생성
리소스 그룹 이름 'user01-rg'
영역은 두 개의 리전을 포함하고 있다. Korea Central(권장)과 Korea South가 있다
지금은 태그를 달지 않음.
다른 사용자가 생성한 리소스 그룹들도 함께 보인다
web01 가상 머신 만들기
구독 안에서 크레딧을 사용하고 있따
리소스 그룹 'user01-rg'
가상 머신 이름 'web01'
지역 '(Asia Pacific) 'Korea Central'
가용성 옵션 '가용성 영역' // 가용영역.
가용성 영역 'Zone1' // 한국에는 3개의 Zone이 있다
보안 유형 '표준'
이미지 '모든 이미지 보기'
centos 검색 후 'CentOS-based 7.9 2세대' 선택 // 실습을 위해 비용이 안드는 버전 선택
CPU 'x64'
크기 '모든 크기 보기' > 'B1s' 선택
인증 형식 'SSH 공개 키'
사용자 이름 'azureuser'
SSH 공개 키 원본 '새 키 쌍 생성' // 퍼블릭 키, 프라이빗 키를 생성한다. 퍼블릭 키는 서버에 전송하고 프라이빗 키는 다운로드된다
키 쌍 이름 'user01-key'
인바운드 포트 선택 'SSH(22), HTTP(80), HTTPS(443)' // 방화벽 역할. 여러 포트를 선택해서 허용할 수 있다
호스트에서 암호화 // 누군가 데이터를 뺏어서 열어보려고 할 때 키를 이용해 암호화, 복호화하는 기능
OS 디스크 크기 '기본 크기(31GiB)
OS 디스크 유형 '프리미엄 SSD(로컬 중복 스토리지)'
'VM으로 삭제' 체크 // VM을 지웠을 때 디스크를 같이 지울꺼냐 남길거냐. 체크하면 같이 지워짐
하이퍼바이저 가상머신에 Azure에서 만든 디스크를 붙일 수 있다
하이퍼바이저 가상머신을 내보내기해서 Azure에 올려서 기존 디스크 연결을 통해 붙일 수도 있다
Hyper-V로 만들어진 가상디스크의 경우 Azure에 연결할 수 있다
AWS에서 블록 스토리지라고 한 것을 Azure에서는
Azure V-net이라고 한다. AWS는 VPC
가상 네트워크 'web01-vnet'
서브넷 'default(10.0.0.0/24)'
공용 IP 'web01-ip' // ip에 이름이 붙어있다. A레코드를 작성할 때 ip 숫자로 다루지 않고 이름을 사용할 수 있다
NIC 네트워크 보안 그룹 '기본' // '고급'은 제공하는 포트말고 특별하게 관리하는 포트 보안 그룹이 있을 때 선택한다
AD는 인증 서버의 줄임말. 인증서버를 통해 중앙에서 가상 머신을 컨트롤 하고 싶을 때 사용. 가상 머신을 사용하는 사용자(입사자, 퇴사자)들에게 접근 권한을 관리하는 인증 서버
자동 종료는 비용 절감을 위해 퇴근 후 자동 종료(poweroff)할 수 있다. // aws는 자동 종료가 없다(출근할 때 키고 퇴근할 때 끄는 설정이 없다)
현재는 아무것도 설정하지 않고 넘긴다
Alerts는 운영 서버의 자원 임계값을 넘을 경우 메일 알람을 받을 수 있는 기능
Boot diagnostics 는 부팅 시 오류가 있는지 진단하는 기능 // 진단을 하게되면 부팅이 느려진다. disable 시키는 경우는 가상머신을 빠르게 만들고 싶을 때 사용
사용자 지정 데이터 및 Cloud-init은 가상머신이 프로비저닝 되는 동안 실행되는 스크립트
사용자 데이터 가상 머신 수명 전체 동안 애플리케이션에 액세스할 수 있는 스크립트, 구성 파일 또는 기타 데이터를 전달합니다. 비밀이나 암호를 저장하는 데 사용자 데이터를 사용하지 마세요
태그 설정을 하지 않을 것이기 때문에 '검토+만들기' 클릭
pem키가 다운로드되면서 리소스가 만들어진다
2. 가상머신 접속테스트 및 리소스 삭제
접속테스트하기
MobaXterm 접속 테스트
접속이 잘된다
$ sudo sestatus // selinux가 enforcing 되어 있다
.
$ sudo systemctl status firewalld // firewalld가 있지만 inactive되어있다. 활성화시킬 수 있지만 VM 보안 그룹과 이중으로 되기 때문에 활성화시키지 않음
$ ip a 내부 ip로 설정되었다
$ ping google.com // 외부와 통신도 잘된다
쿼터 문제 때문에 생성했던 리소스 삭제하고 팀원들끼리 리전을 달리하여 다시 리소스 그룹 생성
3. 리전 변경 후 리소스 생성 및 접속 테스트
사용자들의 리전을 변경하여 다시 리소스 그룹 만들기
영역: australia asia
web01 가상머신 만들기
리소스 그룹 'user01-rg'
가상 머신 이름 'user01-web01'
지역 'Austalia East'
가용성 옵션 '가용성 영역'
가용성 영역 'Zone 1'
이미지 'CentOS -based 7.9 x64 Gen2'
새 키 쌍 생성 '새 키 쌍 생성'
키 쌍 이름 'user01-key' // user01-web01.key 아님
접속테스트
web02 만들기
리소스 그룹 'user01-sg'
가상 머신 이름 'user01-web02'
가용성 옵션 '가용성 영역'
가용성 영역 'Zone 2'
보안 유형 '표준'
이미지 'Unbuntu Minimal 20.04 LTS x64 2세대'
SSH 공개 키 원본 'Azure에 저장된 기존 키 사용'
저장된 키 'user01-key'
인바운드 포트 선택 'HTTP(80), HTTPS(443), SSH(22)'
사용자 지정 데이터
#!/bin/bash
apt update
apt install -y apache2
echo "<h1>web02</h1>" > /var/www/html/index.html
접속테스트(웹, MobaXterm)
$ hostnamectl // 가상화 하이퍼바이저 확인 microsoft(Hyper-V)
윈도우 가상머신 만들기
리소스 그룹 'user01-rg'
가상 머신 이름 'user01-web03'
지역 'Australia East'
가용성 옵션 '가용성 영역'
가용성 영역 'Zone 1'
이미지 '[smalldisk] Windows Server 2019 Datacenter x64 Gen2'
4.
윈도우도 SSH 프로토콜을 이용해서 CLI로 접속할 수 있다. 근데 rdp로 원격접속함.
사용자 이름 'azureuser'
인바운드 포트 선택 'HTTP(80), HTTPS(443), RDP(3389)'
접속 테스트
rdp 파일을 다운로드받고 클릭하면 실행이 된다
아이디 'azureuser'
웹 브라우저를 이용하기 위해 IIS 웹 서버를 설치한다
가상 서버의 자원 부족으로 설치에 실패했다
5. 윈도우 웹서버 접속 및 퍼블릭 IP 분리
현재 가상머신 윈도우 서버 성능 CPU, Memory
크기를 조정해야한다 B1s에서 B2s로 스케일업해준다
CPU와 Memory 용량이 잘 바뀌었다
자원을 늘리고 설치를 시도하니 잘 설치된다
로드밸런서
CDN 엣지 서버를 두고 엣지 로케이션에 컨텐츠들을 주기적으로 보낸다. 본사로 접속하지 않고 트래픽을 분산시켜 빠르게 컨텐츠를 이용할 수 있도록 사용된다
ALB와 NLB는 로컬에서만 부하분산을 해준다. SLB라고 한다
Traffic Manager는 글로벌하게 부하분산해준다. 글로벌한 GSLB라고 한다. Route53과 동일하다
현재 퍼블릭 ip가 3개로 web01 web02 web03로 이루어져있는데 web01과 web02는 ip를 분리시킬것이다. ip 부족하기때문
윈도우 가상서버에 cmd를 치면
azure key.pem을 윈도우 가상서버로 보내서 web01로 ssh 접속을 해보자
윈도우 가상서버 cmd창을 새로 열어서 web02 SSH로도 접속해보기
이제 web01 web02는 퍼블릭 ip가 필요없다
ip를 분리시켜주자
퍼블릭 ip를 분리시키고 윈도우 가상머신 cmd 창에서 web01 web02 SSH 세션에서 ping google.com 핑이 안나간다
핑은 안되는데 인터넷 연결(curl명령)은 된다.
6. 부하 분산 장치 만들기
부하분산장치는 L4 계층에서 부하분산하는 NLB
현재 web01과 web02는 외부에서 접속할 수 없다. 윈도우 가상 서버를 경유해서 키 방식으로 접근해야함
리소스 그룹 'user01-rg'
이름 'user01-lb'
SKU '표준' // 단위. 단위별로 기능 차이가 있다. '기본' 보다 '표준'이 기능이 많다
형식 '공개' // '공개'는 인터넷을 타고 들어오는 것. '내부'는 웹서버를 타고 DB서버 단으로 들어오는 것(서버내부)
계층 '지역'
※ SKU 참조
외부와 연결되는 접속포인트 IP를 구성한다
프런트에서 받아서 백엔드로 포워딩해줌
프런트 엔드 IP 이름 'user01-front'
공용 IP 주소 'admin-web01-ip' 선택
프런트에서 넘어온 트래픽을 부하분산시켜서 받을 3대의 서버를 하나로 묶음
백엔드 풀 이름 'user01-back'
가상 네트워크 'user01-web01-vnet(user01-rg)'
같은 vnet에 있고 프라이빗 네트워크에 있어서
부하 분산 규칙은 프런트엔드와 백엔드의 연결 규칙을 설정함
규칙 이름 'user01-lb-rule'
프런트 엔드 IP 주소 'user01-front(20.5.24.80)'
백 엔드 풀 'user01-back'
포트 '80' // 프론트 엔드 포트 번호
백엔드 포트 '80'
상태 프로브 '새로 만들기' > 이름 'user01-probe' // 헬스체크. 상태 검사. 로드밸런서 백엔드풀에 있는 서버들의 상태를 검사한다
아웃바운드 규칙은 추가하지 않고 '검토+만들기'
7.
로드밸런서 접속 테스트
AWS CLB는 Round Robin(순차적 연결)이어서 새로고침하면 web01 web02 web03이 번갈아 규칙적으로 떴었다
Azure 로드밸런서는 Least Connection 방식(최소 연결)이어서 접속이 적은 서버에게 세션을 준다. 불규칙적
로드밸런서의 독특한 기능
'인바운드 NAT 규칙'은 포트포워딩 기능이다. 퍼블릭IP 하나로 사용자가 들어오면 로드밸런서가 포트를 보고 서버로 보낸다
윈도우 가상서버도 퍼블릭 IP 분리하기
퍼블릭 IP를 분리하자 원격 연결이 끊겼다
퍼블릭 IP로는 web01 web02 web03에 접근할 수 없다.
포트포워드를 통해 하나의 퍼블릭 IP로 3개의 서버로 접속한다
외부에서 포트번호를 구분해서 로드밸런서가 포트번호를 보고 해당 포트의 서버로 연결해준다
인바운드 NAT 규칙 생성하기
NAT를 통해 포트포워드 해주는 것은 Azure가 유일. 다른 퍼블릭 클라우드는 배스천호스트를 사용한다
web01 인바운드 규칙 만들기
인바운드 NAT 규칙 이름 'user01-web01-ssh'
대상 가상 머신 'user01-web01'
네트워크 IP 구성 'ipconfig1(10.1.0.4)'
프런트엔드 IP 주소 'user01-front(20.5.24.80)'
프런트 엔드 포트 '2201'
백엔드 포트 '22'
프론트엔드 IP를 복사해서 MobaXterm에 web01 접속테스트하기
web02 인바운드 규칙 만들기
인바운드 NAT 규칙 이름 'user01-web02-ssh'
대상 가상 머신 'user01-web02'
네트워크 IP 구성 'ipconfig1(10.1.0.5)'
프런트엔드 IP 주소 'user01-front(20.5.24.80)'
프런트 엔드 포트 '2202'
백엔드 포트 '22'
web03 인바운드 규칙 만들기
인바운드 NAT 규칙 이름 'user01-web03-rdp'
대상 가상 머신 'user01-web03'
네트워크 IP 구성 'ipconfig1(10.1.0.6)'
프런트엔드 IP 주소 'user01-front(20.5.24.80)'
프런트 엔드 포트 '3389' // 0 ~ 65535까지 포트번호를 줄 수 있다
서비스 태그 ' RDP' // 윈도우 서버가 하나밖에 없으면 rdp로 선택. rdp로 선택하면 프런트 엔드 포트가 자동으로 3389
백엔드 포트 '3389'
접속이 잘된다
Azure 스토리지 서비스
Azure Storage 플랫폼은 최신 데이터 저장소 시나리오를 위한 Microsoft의 클라우드 저장소 솔루션
핵심 저장소 서비스는 데이터 개체에 대 한 대규모 확장가능한 개체 저장소, Azure Vm (가상 머신)용 디스크 저장소, 클라우드의 파일 시스템 서비스, 신뢰할 수 있는 메시징의 메시징 저장소 및 NoSQL 저장소를 제공한다.
Azure Blob: 텍스트 및 이진 데이터에 대한 확장성이 뛰어난 개체 저장소입니다. AWS S3
Azure Files: 클라우드 또는 온-프레미스 배포를 위한 관리 되는 파일 공유입니다. AWS FSx
Azure 디스크: azure vm에 대한 블록 수준 저장소 볼륨입니다. AWS EBS 루트볼륨, C드라이브
8. 디스크 만들고 마운트 시키기 및 마무리
디스크 이름 'user01-web01-add'
가용성 영역 'Zone 1'
원본 유형 '없음' // 완전히 비어있는 디스크를 생성하겠다는 뜻
크기 '크기변경' > 사용자 지정 디스크 크기(GiB) '1'
공유디스크란 두 개 이상의 가상머신이 네트워크로 동시에 연결하는 디스크. NFS와 유사한 기능이다
생성한 디스크 가상 머신에 붙이기
가상머신 'user01-web01' > 디스크 > 기존 디스크 연결 'user01-web01-add' > 저장
MobaXterm에서 lsblk 명령으로 디스크를 확인한다
디스크 파일시스템 포맷 시키기
마운트시키고 확인하기
파일 업로드 시키기
원하는 경로에 tar파일 풀고 마운트시킨 디스크에 tar파일 이동시켜서 루트 볼륨의 공간을 확보하기
마운트시킨 디스크 언마운트하기
web01 가상머신에 붙어있는 디스크 분리시키기
까먹지말고 저장을 꼭 해야한다
web02 가상머신에 붙일 디스크 만들기 - 가용영역이 다르기 때문에 web01-add 디스크를 붙이지 못한다
리소스 그룹 'user01-rg'
디스크 이름 'user01-web02-add'
가용성 영역 'Zone 2'
원본 유형 '없음'
디스크 크기 '1'
'검토 + 만들기'
만든 디스크 web02에 붙이기
가용영역 없는 디스크 만들기
디스크 이름 'admin-add'
가용성 영역 '없음'
원본 유형 '없음'
디스크 크기 '1'
가상머신의 가용영역이 정해져있으면 직접적인 디스크 연결은 할 수 없다
가용성 영역이 없는 디스크는 연결할 수 없다
리소스 그룹 삭제하기