클라우드 환경에서는 ' ON - DEMAND ' 서비스가 중요하다
- ON - DEMAND : 요청에 따라 서비스를 바로 제공하는 것
클라우드에서 DB와 같은 경우 사용자가 직접 OS를 설치하고, 서비스 애플리케이션을 설치하는 과정이 생략된 상태에서 주문 즉시 해당 서비스를 이용할 수 있어야 하는 ' 완전 관리형 서비스 '가 중요하다
- 완전 관리형 서비스 : DB 서비스를 이용하는 것으로, 내부적으로 서버/OS가 있지만, 사용자에게는 드러나지 않으며, DV 솔루션 설치 또한 필요 없이 바로 DB를 사용할 수 있다
- 대신 사용자는 OS, 애플리케이션 자체에 대한 접근 권한은 없다
클라우드에서 제공하는 ServerLess 서비스
- Python등과 같은 언어를 이용하여 일종의 트리거 ( 함수 ) 를 만들어두는 것
- 실제로는 서버가 있지만, 해당 서버 자체에 대한 접근은 불가하며, 언어를 이용하여 서비스를 호출하는 방법
인스턴스를 생성하고, 생성된 인스턴스의 정보를 DB로 전송하기
클라우드 또는 가상화 환경에서 사용하는 인스턴스는 일반 VM 과는 달리, 이미지 OS가 설치되어 있는 형태를 이미지화 한 것이다
가상 머신 RAM 증가
가상 머신 CPU 가상화 커널을 사용한다고 설정한다
각 Directory를 확인해보자. 우리는 Cloud 실습에 필요한 Data를 cloud Directory에 저장할 것이다
VM 은 OS 설치에서 부터 패키지 설치까지 직접 모든걸 수동으로 해야하지만, 클라우드 용 이미지를 이용한 인스턴스는 배포하는 형식이다
다음 사이트에 들어가자
우리는 Cloud에 저장할 이미지를 CentOS 7로 설정할 것이다
해당 파일을 우클릭해서 주소를 복사하자
일반 CPU는 X86 계열이므로, X86에 해당하는 걸 다운 받아야한다
Cloud 폴더로 이동해서, 아까 복사한 링크를 wget을 통해 다운 받자
다운이 끝났으니 실습을 진행하자
확인해보면 잘 저장됬다. 이 파일은 xz ( xz는 파일 하나만을 압축 ) 형식으로 압축 ( compress ) 되어있으므로, xz -d ( decompress ) 를 통해 압축을 풀어준다
압축을 풀었을 때, 용량이 해당 숫자와 똑같아야한다
압축이 잘 풀렸다
이름을 변경시킨다. ?는 잘못 친 것이니 CentOS.qcow2로 바꿔주자
- 표준 입력 코드 : 0
- 표준 출력 코드 : 1
- 표준 에러 코드 : 2
yum update -y
yum -y install @virt ( 가상화 관련 도구들을 패키지로 묶어 설치해 준다 )
yum -y install libguestfs-tools ( 클라우드용 이미지를 커스터마이징 할 수 있는 도구 )
- 리눅스의 보안
- FWD : 외부에서 서버에 접근하는 것에 대한 보안
- selinux : 서버 내부의 보안
요구사항
1. 기존 이미지를 복사하여 gildong.qcow2 를 생성
2. 해당 이미지에는 루트 패스워드가 없다. 우리는 root / test123 으로 지정하자
3. 기본적으로 웹서비스를 제공할 수 있어야한다. httpd 를 이용한다. 즉, httpd 를 설치하고, OS 부팅시 자동 실행되게 설정한다
4. "3"에서 만든 이미지를 이용하여 배포하기
- rhel7은 centos7의 배포판 이름이다
- disk는 이미지 파일 자체가 disk이다
- virt-install을 설치해주고, 설정한대로 가상머신을 만들어준다. 단, 실행 결과는 보기 싫으므로, null에 저장한다. null에 저장하면 자동으로 실행 결과 메세지를 삭제해준다
- 이는, 클라우드 이미지이기 때문이다. 클라우드 이미지에서는 방화벽을 사용하지 않고, ACL과 보안 그룹으로 관리하기 때문이다
Shell In A Box : Markus Gutschke가 만든 웹 기반 터미널 에뮬레이터로 지정된 포트에서 웹 기반 SSH 클라이언트로 실행되는 웹 서버가 내장되어 있으며 웹 터미널 에뮬레이터가 필요없이 AJAX/JavaScript 및 CSS 지원 브라우저를 사용하여 Linux 서버 SSH 셸에 원격으로 액세스하고 제어하도록 프롬프트 해준다
- name, vpcs, ram을 사용자한테 입력 받을 거다
- -e를 쓰면 정규 표현식을 사용할 수 있다
- -e 뒤에 n은 출력하고, 밑 줄로 넘어가지 않고, 해당 줄을 유지하는 것이다. 즉, 출력 메시지 옆에 입력할 수 있게 한다. 줄은 \t로 바꿔준다
- read로 입력한 DATA를 받아온다
#!/bin/bash
name=''
vcpu=''
ram=''clear #화면 지우기
echo -e "\t\tINSTANCE CREATION PROGRAM" #화면에 출력 메세지
echo -en "\tINSTANCE NAME : " # 문장 출력
read name # 입력한 값을 변수 name에 저장
echo -en "\tHOW MANY CPUs DO YOU WANT : "
read vcpu
echo -en "\tMEMORY NAME : "
read ramcp chulsoo.qcow2 ${name}.qcow2 # 설치를 위한 디스크를 변수에 담긴 이름으로 복사하여 준비
virt-install --name {name} --vcpus ${vcpu} --ram ${ram} --disk /cloud/{name}.qcow2 --os-type linux --os-variant rhel7.0 --import --noautoconsole > /dev/null #변수에 담긴 값을 이용하여 인스턴스 설치, 발생되는 메시지는 null에 버린다
sleep 15 #화면을 15초 동안 정지
echo -e "\t\tFINISHED" #화면에 결과 출력하기
result=(virsh list --all | grep ${name}) #화면에 결과 출력하기 echo -e "\tresult" #화면에 결과 출력하기
p.206
insert into 테이블명( 컬럼명 ) VALUES ( 값 ) ; --
insert into 테이블명 VALUES ( 값 ) ; -- 단, 테이블에 정의된 열 순서와 개수와 동일 해야 한다
insert into 테이블명 VALUES ( NULL ) ; -- 빈 공간이 들어간다
CLOUDDB
- 물리 서버에서 확인할 수 있는 정보 (hostTbl)
- (hostname)hostname 명령을 통해서 서버의 이름을 확인 가능 -> PK VARCHAR(20)
- (hostip)ifconfig .. 일부 정보 필터링을 통해 IP 주소 확인 가능 -> NOT NULL CHAR(15)
- 인스턴스에서 확인할 수 있는 정보(instanceTbl)
- (iname)인스턴스 이름 : $name (PK) VARCHAR(20)
- (hostname)호스트 이름 : 서버의 이름 강제로 작성 (FK) VARCHAR(20)
- (iip)인스턴스 IP 주소 : $ipinfo = virsh domifaddr $name | grep ipv4 | gawk '{print $4}' | gawk -F/ '{print $1}' CHAR(15)
- (iram)인스턴스의 메모리 사이즈 : $ram INT
위의 시나리오를 토대로 DB를 구성하자
Heidi SQL에서 Table을 만들고, 정보를 입력하자
dbForge Studio에 접속해서 PK와 FK를 설정하자