가상화 관리
가상화 서비스의 이해
가상화의 정의 및 개요
- 한 컴퓨터의 물리적 시스템 자원인 CPU, 메모리, 디스크 등을 여럿으로 나누거나, 다수의 컴퓨터들의 물리적 자원을 하나로 묶어서 제공하는 기술
가상화의 기능
공유(Sharing)
- 다수의 많은 가상 자원들이 하나의 동일한 물리적 자원과 연결되어 있거나 가리키는 것
- 서버내의 논리적 파티셔닝(LPARs), 가상머신(VM), 가상 디스크, 가상 LAN(VLANs)
단일화(Aggregation)
- 공유의 반대되는 가상화 개념. 가상 자원은 여러 개의 물리적 자원들에 걸쳐서 만들어질 수 있으며 이를 통해 외견상 전체 용량을 증가시키고, 전체적인 관점에서 활용과 관리를 단순화시켜 줌.
에뮬레이션(Emulation)
- 물리적 자원 자체에는 원래부터 존재하지 않았지만 가상 자원에는 어떤 기능들이나 특성들을 마치 처음부터 존재했던 것처럼 가질 수 있음.
- IP 네트워크 상에서 가상 SCSI 버스를 구현하는 iSCSI 또는 물리적 디스크 스토리지상에 구현된 가상 테이프 스토리지 등이 있음
절연(Insulation)
- 가상화된 자원들과 물리적자원들 간의 상호 맵핑은 가상화 자원들 또는 가상화 자원들을 사용하는 사용자들에게 아무런 영향을 미치지 않으면서 물리적 자원들이 교체될 수 있도록 하는것
- CPUgard 옵션, 다중 디스크를 사용하는 RAID 스토리지 컨트롤러
- 장애방지 효과, 투명한 변경이라고 부름
가상화의 효과
- 높아진 자원 활용률
- 낮아진 관리 비용과 관리의 용이성
- 사용의 유연성
- 향상된 보안
- 높아진 가용성
- 증가된 확장성
- 상호운영성
- 향상된 프로비저닝 : 프로비저닝은 사용자의 요구사항에 맞게 할당, 배치, 배포할 수 있도록 만들어 놓은것
서버 가상화 정의 및 특징
하나의 물리적 서버에 운영체제, 애플리케이션, 미들웨어들이 서로 어떠한 영향을 미치지 않으면서 동시에 사용될 수 있도록 해주는 기술
서버 가상화의 특징
장점
- 효율적인 서버 자원의 이용
- 관리의 최적화
- 응급 재해 시 서비스 중단 없는 빠른 서비스 복구
- 서버 트래픽 증가에 따른 유연한 대처
- 데이터 및 서비스 가용성 증가
- 보안 강화
- 신규 서버 구입에 필요한 하드웨어 비용 지출의 감소
- 전체적인 관리 비용 절약
- 서버가 차지하고 있는 공간 절약
- 전원 절약을 통한 데이터 센터의 효율성 증대 및 Green IT 실현
단점
- 시스템의 복잡성
- 장애 발생 시 문제 해결의 복잡함
- 호환성 및 확장성
- 소프트웨어 라이선스 문제
서버 가상화의 분류
하드웨어 레벨 가상화
가상화를 제공하는 가상화 계층이 물리적인 하드웨어 또는 호스트 운영체제 위에 위치하여 가상화 계층에 의해 생성된 가상 머신에 게스트 운영체제를 생성.
VMM(Virtual Machine Monitor)은 물리적인 하드웨어를 가상머신의 하드웨어에 매핑시키고 게스트 운영체제의 자원 활용을 관리하는 업무를 수행.
VMM의 구성 위치에 따라 전가상화(Bare-Metal/Hypervisor), 반가상화(Para-Virtualization), 호스트 기반 가상화 등 3가지로 나뉨.
전가상화
전가상화 및 반가상화는 가상 머신의 하드웨어를 에뮬레이팅 하는 대신에 하이퍼바이저라는 프로그램을 통해 호스트의 하드웨어 자원을 가상 머신의 여러 운영체제가 나누어 사용하도록 하는 기법.
그 중 전가상화는 가상화 소프트웨어가 수정하지 않은 게스트 운영체제를 100% 완전 가상화 환경 위에서 제공하는 기술. 게스트 운영체제 측면에서 별도의 수정 및 간섭 없이 완벽하게 물리적인 하드웨어 자원의 접근 및 이용이 가능. ex) HP Integrity VM, IBM zSerises z/VM, VMware ESX Server, XEN
반가상화
반가상화의 기본적인 구성 방법은 전가상화 방법과 동일하나 게스트 운영체제 측면에서 VMM과의 원활한 통신을 위해 게스트 운영체제의 커널 일부분을 수정하여 적용. 이 방법은 일부 가상화 하드웨어 자원에 대해 필요에 따라 직접적으로 물리적 하드웨어 접근을 일부 허용. ex) 오픈소스 Xen, Oracle의 Virtual Iron, Citrix의 XenServer
호스트 기반 가상화
VMM이 호스트 운영체제 위에 설치되어 가상머신을 생성하는 구조로 게스트 운영체제는 호스트 운영체제가 인식한 하드웨어를 가상 하드웨어로 재구성하여 사용하는 방법. ex) Microsoft의 Virtual Server 및 Virtual PC, VMware Server, VMware Workstation, VMware Player 등이 있음.
운영체제 레벨 가상화
하나의 CPU에 하나의 운영체제만 수행되고, 가상화 계층이 호스트 운영체제 윗부분에 존재하여 가상화 환경을 제공하는 방법을 말함.
단일 호스트 운영체제 위에 다중 애플리케이션 전용 컨테이너를 생성하여 애플리케이션 단위의 가상화 환경을 제공. 각각의 애플리케이션 컨테이너 안에는 가상 운영체제, 네트워크, 프로세서 등을 생성.
Container 방식
가상화 계층이 호스트 운영체제 내에 임베디드 형태로 구성되고, 각각의 애플리케이션별로 추가적인 컨테이너를 생성하는 방식 ex) OpenVZ, Parrells사의 Virtuozzo, FreeBSD Jail, HP의 Secure Resource Partitions, Sun의 Solaris Containers Zones, User-Mode Linux, Docker 등이 있음.
Hardware Emulator 방식
애플리케이션 중심의 가상 운영체제를 생성하는 과정에서 소프트웨어적으로 하드웨어를 가상 에뮬레이팅하는 방식 ex) QEMU, Bochs 등
하이 레벨 언어 가상화
특정 컴퓨터 프로그램 언어를 이용하여 가상 머신 환경을 구성하는 기술로 대표적인 객체 지향 언어인 Java, Microsoft, .NET, Smalltalk 등의 프로그램 언어를 이용하여 하드웨어에 독립적이고 이식성이 뛰어난 가상 머신을 생성
리눅스 기반 서버 가상화 기술의 분류 및 특징
제1세대 서버 가상화 기술은 하나의 물리적 서버에 하이퍼바이저를 이용하여 여러 개의 가상 머신을 생성/삭제운영하는 수준의 기술. Xen, KVM, VirtualBox.
제2세대 서버 가상화 기술은 다수의 물리적 서버의 자원을 통합하여 관리 기능을 제공하는 기술. 여러 대의 물리적 서버를 하나로 묵어서 하나의 서버 풀로 구성하고 물리적 서버간의 관리와 에러 처리 등이 가능한 기술. 실시간 마이그레이션, 고가용성 기능 제공. Oracle VM, VMware의 vSphere, Citrix의 XenServer 등
제3세대 서버 가상화 기술은 다양한 하이퍼바이저들을 통합 관리하기 위한 플랫폼이 이에 해당. Openstack, Cloudstack, Eucalyptus, OpenNebula.
젠
- 케임브리지대학교에서 시작한 프로젝트
- 다양한 CPU를 지원하는 하이퍼바이저 기반의 가상화 기술
- 리눅스, 윈도우, NetBSD, FreeBSD, Solaris 등을 지원
- 전가상화도 지원
- 리눅스에서는 Xen이 활성화된 커널을 이용.
- Domain 0이라 부르는 특별한 가상 머신 사용
- Xen 하이퍼바이저 기반으로 개발된 제품으로 Virtual Iron, Oracle VM Server, Sun Microsystem의 VirtualBox, Citrix의 XenServer 등이 있음.
KVM(for Kernel-based Virtual Machine)
- 2005년 설립된 Qumranet에서 개발한 하이퍼바이저. CPU 전가상화 방식 사용.
- CPU 가상화 기술인 인텔의 VT 및 AMD-V를 기반으로 동작하는 공개형 기술
- QEMU이라는 CPU 에뮬레이터를 사용.
- 지원되는 게스트 운영체제로는 Linux, Windows, Solaris, BSD 계열
- 상용화된 제품은 레드햇의 RHEV
버추얼박스(VirualBox)
- x86 및 AMD-64, Intel-64 기반의 가상화 지원 프로그램
- InnoTek사에서 개발
- CPU 가상화 기술인 인텔의 하드웨어 가상화인 VT-x와 AMD-V를 기반으로 동작하는 공개형 기술
- 게스트 운영체제의 하드디스크를 VDI 파일로 불리는 특별한 컨터에너 포맷으로 에뮬레이트됨.
도커(Docker)
하이퍼바이저를 사용하거나 게스트 운영체제도 설치하지 않고, 서버 운영에 필요한 프로그램과 라이브러리만 이미지로 만들어 프로세스처럼 동작시키는 경량화된 가상화 방식
가상화 서비스 구축
KVM 서비스 구축
CPU 지원 확인
$ egrep "svm|vmx" /proc/cpuinfo
Xen 서비스 구축
CPU 지원 확인
$ egrep "svm|vmx" /proc/cpuinfo
가상화 서비스의 운영
가상 머신 관리자를 이용하거나 virsh 명령을 이용.
xm 명령 이용
Xen을 사용하는 경우에는 xend 명령 실행 후에 xm 명령을 이용해서 실행 상태를 확인.
시스템 리소스 관리
CPU 자원 사용량 확인
호스트 운영체제에서 top, sar 등과 같은 명령을 이용하면 전체적인 CPU 사용량을 알 수 있지만, 가상 머신만으로 대상으로 CPU 자원을 모니터링 한다면 virt-top 명령 이용.
디스크 사용량 확인
할당 공간을 확인 : ls -l /var/lib/libirt/images/가상머신이름.img
실제 사용량 : du -sh /var/lib/libirt/images/가상머신이름.img
기타 서비스
슈퍼 데몬 관리
슈퍼 데몬의 개요
inetd 데몬 방식
자주 사용하지 않는 서비스들을 메모리에 계속적으로 상주시키는 것이 아니라 사용자의 요청이 있을 경우에 해당 데몬을 불러와서 메모리에 상주시키고, 서비스의 이용이 끝나면 해당 프로세스를 메모리에서 제거함으로 효율성을 높이는 방식. 이렇듯 다른 데몬을 관리하고 제어하는 역할을 수행하는 inetd를 슈퍼 데몬이라고 호칭함.
inetd는 네트워크 서비스들을 /etc/inetd.conf에 설정해서 제어했는데 접근 제어 기능은 제공하지 않아 별도의 접근 제어 프로그램을 사용했는데 그 프로그램이 tcp wrapper.
후에는 xinetd 데몬이 이 역할을 수행.
TCP Wrapper
TCP Wrapper의 개요
tcpd라는 데몬이 슈퍼데몬인 inetd에 의하여 수행되는 서비스들의 접근을 제어하도록 하는 프로그램. telnet, ftp, rlogin, rsh 등을 감시하고 필터링. xinetd에서는 자체적으로 접근 제어를 수행하지만 여전히 tcp wrapper를 사용한 접근 제어도 가능할 뿐만 아니라 sshed, vsftpd, smbd, gdm 등 일부 단독 데몬도 접근 제어가 가능.
접근 허가 호스트 /etc/hosts.allow 파일과 접근 금지 호스트 /etc/host.deny 파일을 이용. allow를 먼저 읽어 들여 허가시키고 deny에 설정된 호스트를 금지 시킴 allow에 등록되면 무조건 허가가 됨.
관련 파일 작성 규칙
[설정 형식]
daemon_list : clinet_list [ : shell_command]
dameon_list
데몬 프로세스나 예약어
client_list
호스트 이름, 주소, 패턴, 예약어. 일반적으로 IP 주소나 ehapdls.
shell_command
spawn은 현재 수행 중인 프로세스의 자식 프로세스로 실행되고 twist는 프로세스의 이미지를 교체한 후에 실행.
xinetd
xinetd의 개요
xinetd는 환경 설정 파일을 이용해서 자체적으로 접근 제어가 가능. IP 주소 당 접속 수 제한, 시간대별 서비스 제한, DoS 공격에 대비한 설정 등을 추가로 제공
xinetd의 구성
- /etc/xinetd.conf : xinetd 데몬의 전체적인 환경 설정을 담당
- /etc/xinetd.d : xinetd 데몬에 의해 관리 및 제어되는 서비스 파일들이 위치하는 디렉터리
- /etc/rc.d/init.d/xinetd : xinetd 데몬을 제어하는 데몬 스크립트 파일.
/etc/xinetd.conf의 주요 항목 설명
- log_type : SYSLOG는 syslog에 로그 위임, FILE은 직접 별도의 파일로 지정
- log_on_failure : 접속에 실패시 기록될 속성값 지정(HOST, USERID, ATTEMPT(실패시도))
- log_on_success : 위의 반대(PID, HOST, USERID, EXIT, DURATION, TRAFFIC)
- cps : 초당 요청받은 수에 대한 제한을 설정
- instances : 동시에 서비스할 수 있는 서버의 최대 개수를 지정하는 항목(제한 없음은 UNLIMITED)
- per_source : 특정 IP 주소에서 접속할 수 있는 최대 개수
- only_from : 서비스를 이용할 수 있는 원격 호스트를 설정
- no_access : 서비스를 이용할 수 없는 원격 호스트의 주소를 지정
- enabled : 사용 가능한 서비스의 목록을 지정하는 항목
- disabled : 위 반대. enabled와 같이 설정되면 enabled 항목이 무시되어 해당 서비스 실행 x
- includedir /etc/xinetd.d : 각 서비스들의 설정 파일들이 위치하는 디렉터리
각 서비스 파일에서 사용되는 주요 속성과 속성값
관련 서비스에 대한 자세한 설정은 /etc/xinetd.d 디렉터리 안에 파일을 생성하고 값을 부여. 보통 'service 서비스명 { }' 형태로 설정.
- disable : 해당 서비스의 실행 유무 지정
- flags : 서비스 운영과 관련된 설정.
- socket_type : stream
- wait : 서비스가 단일 스레드인지 다중 스레드인지 결정
- user : 서버 프로세스의 UID 지정
- server : 데몬 파일의 경로
- log_on_failure : /etc/xinetd.conf에 지정된 설정에 +, -를 이용하여 설정
- access_times : 지정된 시간에만 서비스 이용
- redirect : 해당 서비스를 다른 서버로 포워딩할 때 사용.
- port : 해당 서비스의 포트 번호를 지정
- nice : 서비스의 우선순위를 지정
PROXY 관리
프록시의 개요
Proxy의 정의
프록시 서버란 보통 네트워크 속도가 느린 환경에서 보다 빠른 인터넷을 이용하기 위해 사용.
Proxy의 서버의 구성과 이용
프록시 서버 프로그램으로 aquid를 사용. 고성능의 웹 캐싱 서버로 HTTP, Gopher, FTP 등을 지원.
squid.conf 파일의 주요 설정
cache_dir ufs /var/spool/squid 100 16 256
캐시 정보가 저장될 경로를 지정해 주는 항목으로 ufs는 squid의 저장 포맷이고, /var/spool/squid가 관련 디렉터리. 100은 저장되는 캐시 정보의 크기를 나타내고(MB), 16은 캐시가 저장되는 첫 번째 하위 디렉터리의 개수, 256은 두 번째 하위 디렉터리의 개수
프록서 서버의 접근 제어
squid.conf 파일에서 acl 항목을 이용해서 접근 제어를 할 수 있음. acl을 이용하여 특정 IP 주소, 네트워크 대역, 도메인 등을 별칭 형태로 지정하고, http_access allow나 http_access deny를 이용하여 접근을 제어.
[사용법]
acl 설정
acl 별칭 src IP 주소/넷마스크값
acl 별칭 dst IP 주소/넷마스크값
acl 별칭 srcdomain .foo.com
acl 별칭 dstdomain .foo.com
사용 예
acl에 대한 접근 제어
http_access allow 별칭
http_access deny 별칭
DHCP 관리
DHCP(Dynamic Host Configuration Protocol) 서버의 개요
DHCP 서버란 클라이언트에게 자동으로 IP 주소, Gateway 주소, Name Server 주소 등을 할당 해주는 서버를 말함.
관련 프로토콜
- BOOTP : 초기 적재 통신 규약. 공용의 x 터미널과 같이 하드 디스크가 없는 장치에 IP 주소 등을 할당하고 관리하기 위해 개발된 프로토콜. UDP를 사용.
- DHCP : 동적 호스트 설정 통신 규약. Bootp와의 차이점은 할당된 UIP 주소에 임대 기간을 설정할 수 있음.
/etc/dhcpd.conf의 주요 설정
클라이언트에게 할당할 주소 대역은 subnet 및 netmask 선언 후에 {} 안에 필요한 항목들을 지정. 주요 항목을 별도로 적으면 모든 네트워크 대역에 적용. 특정 호스트에 고정적인 IP 주소 할당하려면 'host 호스트명 { }' 형태로 선언.
VNC 관리
VNC(Virtual Network Computing)의 정의 및 개요
VNC는 RFB 프로토콜을 이용하여 원격의 다른 컴퓨터 그래픽 환경 기반으로 데스크톱을 공유할 수 있는 시스템. GNU 라이선스 기반으로 소스가 공개.
VNC의 설치 및 사용
VNC 서버 설치
$ yum instaall tigervnc-server
VNC 서버 설정
세션 공유 접속은 로컬 시스템과 원격지간의 화면, 키보드, 마우스를 공유.
독립 세션 접속은 로컬의 이용과 별도로 접속. 독립 세션에 접속을 하기 위해서는 환경 설정 파일인 /etc/sysconfig/vncservers를 편집
NTP 관리
NTP(Network Time Protocol)의 개요
컴퓨터간의 시간을 동기화하는데 사용되는 프로토콜
/etc/ntp.conf의 주요 설정
driftfile /var/lib/ntp/drift
지역 시스템의 시간을 정확하게 유지하는 파일을 지정하는 항목
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict는 NTP 서버에 접근할 클라이언트를 제한할 때 지정
server time.kriss.re.kr
server time.bora.net
기준이 되는 NTP 서버를 지정
관련 명령어
ntpq
NTP 질의 응답 명령어
사용법
ntpq [option]
옵션
- -p : 연결된 서버의 상태를 출력
ntpdate
NTP 서버를 이용해서 시간을 동기화할 때 사용하는 명령어.
사용법
$ ntpdate NTP서버