인스턴스 백업
- 전체백업 : 현재 상태 전체(볼륨)을 별도의 이미지로 생성해둔다.
전체 데이터를 백업하므로 안정적으로 데이터 전체를 보관할 수 있다.
백업된 데이터의 용량이 많으므로 대용량 스토리지가 필요하다.
백업된 이미지(데이터)로 복원을 하는데 오랜 시간이 소요됨
- 증분백업 : 초기에 첫번째는 전체 백업을 하고 이후에는 처음 데이터와 비교하여 변경된 사항에 대해서만 백업을 진행. 변경된 사항만 별도로 저장하므로 대용량 저장공간이 필요하지는 않다. 복원 시간도 줄일 수 있다. 매일 매일 진행되는 백업은 증분백업을 하는 것이 좋다.
스냅샷은 바로 이 증분백업을 이용하는 것이다.
```
virsh snapshot-list CentOS78
virsh snapshot-create-as CentOS78 --name "First SS" --atomic
```
위와같이 스냅샷을 만든것을 확인할 수 있다.
```
virsh snapshot-create-as CentOS78 --name "Second SS" --atomic
virsh snapshot-list CentOS78 --parent
```
parent에 나오는 것은 내가 어디에서 가지치기 되었는지를 알려준댜.
```
virsh snapshot-list CentOS78 --tree
```
결과 위와같이 어디에서 뻗어나왔는지 확인할 수 있다.
```
virsh snapshot-revert CentOS78 --snapshotname "First SS"
```
으로 이전 상태로 돌아와보니 sstest.txt 파일이 없는 시점으로 돌아왔다.
```
virsh snapshot-dumpxml --snapshotname "First SS" CentOS78 > test.txt
```
스냅샷을 찍을 당시의 상태를 확인할 수 있다.
```
virsh snapshot-delete CentOS78 "Second SS"
```
위 방식으로 스냅샷을 없앨 수 있다.
클라우드는 곧 나만의 작업환경들을 이야기한다. 그런데 그 내용을 나의 계정아래에 두는 것이다.
이제 사용자가 토큰을 발급받아 로그인만 하면 개발환경을 자동으로 제공해줄 수 있게 된다.
????
이걸 눈으로 보면서 실재 환경을 구축해보자.
????
????
aws에서 배포하기
1. 전체 작업공간 보기
2. 각 사용자별 작업공간 보기(VPC)
3. 서브넷에 LB, 서버, DB를 만들고 ACL, 보안 그룹을 이용해서 외부에서 접근은 차단 LB에서 Server와 DB 접속을 허용해주자.
4. 3을 위해서는 각자의 서브넷으로 나누어주자
이때의 DB도 primary와 secondary로 나누어서 서버로부터의 접근을 허용해주고,
VPC 만들기를 시작해보자
현재 VPC는 1개가 존재한다.
어디에서 봤던 놈이 나온다. inbound/outbound 규칙은 위에서 아래순으로 적용이 되기 때문에 일단 트래픽 모두 허용된 상태이다.
VPC 내에서도 서브넷이 3갈래로 나뉘어져 있다.
이름은 WEB-TEST-VPC로 하고 CIDR 10.0.0.0/16으로 설정해서 VPC를 만들어보자
????
위와같이 만들예정이다.
이제 이런식으로 DB를 구성할 것인데 AWS는 서비스 신청만하면 primary가 고장났을때 standby로 넘어간다.
만들어보면 결국 위와같은 그림이 된다.
생성이 완료되었다.
그리고 마지막으로 PUBLIC-SUBNET도 하나 만들어주자
그럼 최종 위와같은 형태가 될 것이다.
데이터베이스를 클러스터링으로 구성하고 Active/Standby로 동작시키려면 두 서브넷을 하나의 그룹에 포함시켜 함께 동작 하도록 해야 한다.
그래서 RDS 서비스로 먼저 이동하자
왼쪽에 서브넷 그룹으로 들어가서 DB 서브넷 그룹 생성을 해보자
그러면 위와같이 1a, 1c에 우리가 만들었던 DB들을 넣어주자
이렇게 DB를 배치하고 배포하면 이중화에 대한 알람이 뜨고 두개는 자동으로 클러스터링 된다.
VPC - 인터넷 게이트웨이로 가자
이걸보면 VPC에 인터넷게이트웨이가 ISP와 연결되어 있는 라우터임을 알 수 있다.
위와같이 만들면 라우터를 하나 생성할 수 있다.
만들기는 했는데 Detached 상태이다. 이걸 VPC와 연결해주자
VPC가 붙은것을 확인할 수 있다.
가보면 내부 통신은 가능한데 외부로의 통신이 불가능한 상태이다.
라우팅을 편집해서 외부와 통신가능한 IGW를 추가해놓자
이렇게 된것을 ELB-SUBNET과 또 통신이 되도록 만들어야한다.
ELB-SUBNET이 외부와 연결되어 있는지 꼭 확인하자
그다음 방화벽과 관련된 설정들을 해주자
이제 외부에서 ELB로 80번 포트 타고 오는것은 모두 허용해주어야 한다.
반면에 서버는 ELB로부터의 접속만을 허용해주어야 한다.(10.0.2.0/24:80/tcp)
예를들어 이전에 만들어본 HAProuxy의 경우 LB에서 서버를 골라서 접속하게해서 트래픽을 분산했다. 이때의 서버 접속 IP는 HAProxy의 Backend IP뿐이다.
DB는 서버로부터의 접속만을 허용해주어야한다.
그런데 마지막으로 여기에서 만든것들을 관리할 수 있도록 우리들의 ip는 허용해줄 필요가 있다.
ELB-SUBNET-SG은 위와같이 만들어주자.
위와같이 ELB로부터의 HTTP 접속을 허용해주고
추가적으로 내 IP로부터의 접속도 허용해주자
DB를 위한 SG를 만들어주자.
????
스토리지 자동 조정기능을 활성화하지 말자(scale-up 기능인데 필요없다)
DB을 퍼블릭 억세스 가능하게 할지 여부를 물어보는 부분인데 우리는 당연히 이 기능을 사용할 예정인데 문제는 그냥 들어가면 안되니까 암호화를 해야한다. AWS VPN을 사용해야한다.
local에 DB를 두되 이걸 VPC쪽에 백업해놓는 방식이다. 그런데 Primary DB 서버와 VPC에 있는 Secondary간에 VPN을 연결해서 데이터 암호화를 해야한다.
우리입장에서는 GRE + iPSEC기능을 넣은것이다.
GRE 자체는 두 사이트를 사설 주소로 통신 시킬 수 있는 기능을 갖는다. 단, 해당 데이터는 암호화되지 않은 채로 송/수신 되므로 보안산 결함이 있다. 해당 데이터에 암호화, 인증, 해싱(무결성검사)를 추가하는 ESP(Encapsulating Security Payload) 프로토콜을 추가하는 작업을 통해 데이터에 대한 보안성을 강화시켜준다. 이를 VPN이라 부름. ????
이런게 떳다. 우리가 라우팅 테이블에 public 주소를 안적어주어서 그렇다. 일단 귀찮으니 그냥 public 접속 설정을 꺼주자
이제 인스턴스 2개를 만들자
두번째것을 누르자
네트워크/서브넷/퍼블릭 IP 부분을 잘 확인
뭔가 여러가지가 보이는데 일단 스킵
기존 보안그룹을 넣어주자
만들어지기는 했는데 우리가 public을 안넣어줘서 연결이 불가능하다.
그래서 이걸 관리하기 위한 인스턴스가 따로 필요하다.
이를 위해서는 SG의 수정이 필요하다. ELB-Subnet으로 부터의 WebAP의 ssh 접속이 가능하도록 만들어주자.
다시금 인스턴스를 만들자
이번에는 중요한 부분 제외하고는 캡처도 안했다
설정상 ELB-SUBNET에 위치한
퍼블릭 IP가 있는 인스턴스이다.
잘 만들어졌다
이걸로 mgmt.pem 을 가지고와서 save private key로 mgmt.ppk로 저장해주자
MOBA Xterm으로 연결하자
aws에 잘 연결된다
이제 이걸 가지고 웹서버에 접속되도록만들어야한다.
먼저 root 계정을 만들자
그래서 WEB-SUBNET에서 인바운드 규칙중 ssh 를 쓰는 것을 10.0.2.0/24 대역을 쓰는 것으로 바꾸어주었다. 당연하게도 10.0.2.0/24 대역은 내가 현재 접속하려는 ec2 관리 인스턴스의 ip이다.
접속 잘된다.
이제 이 서버에다가 패키지를 설치해야하는데... 얘는 인터넷과 연결이 안된다.
그래서 우리는 이 인스턴스에 라우팅 테이블을 통해 나갈 수 있는 경로를 만들어주어야 한다.
뭔가가... 공인 IP가 없어서인지 안된다. 그래서 EIP를 할당해주어야겠다
연결까지 해주자
외부와연결 잘된다.
```
yum install -y httpd
yum restart httpd
yum enable httpd
vi /var/www/html/index.html
```
탄력적 IP는 연결해제하고 릴리즈까지 해주자
이렇게까지 했다면 이제 DB로의 연결도 해주자
기존에 내 IP로 접속하는걸 없애고 10.0.2.0대역으로 접속할 수 있게 해주자
그리고 컨트롤하는 인스턴스에는 mariadb를 깔아주자
```
yum install -y mariadb
```
Amazon RDS에 가면 엔드포인트 주소가 있다. 이걸 가지고와서 연결해보자
```
mysql -u admin -h testdb.*****************************.amazonaws.com -ptest1234
```
접속해보자
aws로 가서 웹서버가 될 인스턴스에 이름을 지어주자
그리고 이미지 및 템플릿 > 이미지 생성
이름만 지어주고 생성해주자
왼쪽의 이미지>AMI로 가보니 이미지가 만들어진것을 확인할 수 있다. 이걸로 인스턴스를 만들어보자
EC2에서 로드밸런서를 생성하자
참고로 우리는 돈이 읎어서.... Classic Load Balancer를 써야한다.
서브넷을 선택해주자
보안 그룹도 할당해주자
???
'Development(Web, Server, Cloud) > 22) LINUX - Cloud' 카테고리의 다른 글
클라우드 40일차(docker, LXC, docker lifecycle, docker container) (0) | 2022.02.28 |
---|---|
CloudStack 설치 및 구성 (인스턴스 배포해 보기) : 1서버 (0) | 2022.02.25 |
클라우드 38일차 (0) | 2022.02.24 |
클라우드 37일차 (0) | 2022.02.23 |
클라우드 36일차 (0) | 2022.02.22 |