- 이제 리모트(원격)로 자원을 사용할 수 있도록 환경을 구축할 것이다.
- 실제 클라우드에서는 인프라는 이미 구축되어있고, 원격으로 자원을 사용하고, 사용한 만큼만 비용을 지불하기 때문에, 원격환경이 더 클라우드에 가까운 환경이라 할 수 있다.
- nat를 통해서만 내부 Private망을 접속할 수 있어야 한다. 또, HAproxy로 웹 접속을 적절히 분산해주어야 한다.
cd /var/log/httpd/
: httpd 폴더로 이동하여, log들을 살펴본다.
- Access.log를 살펴보니, 2022.04.29 9시 21분 42초에 크롬에서 10.0.28.1주소로 접속했다.
- 아쉽게도, 출발지 IP가 내부 게이트웨이의 주소로 잡혀있다.
- Host PC가 잡히지는 않지만 출발지 주소를 알 수 있으며, Chrome에서 들어온 것을 볼 수 있다.
- firefox로 접속해도 똑같이 Firefox임을 알아낼 수 있다.
- 이것은 IP헤더의 정보로 나오는 것이다.
- 이 정보로, 모바일은 모바일 웹페이지로, PC는 PC용 홈페이지로 보내는 등, 접속자의 환경을 분석하는 것이다.
- 이것은 L7레이어의 기능이며, log(글)을 읽을 수 있도록 개발되었다.
- fromtend 정의 부분에서 이름을 정할 수 있다는 것은, 여러가지의 frontend, backend 조건을 정할 수 있다는 것이다. 여기서 브라우저 정보로 다르게 설정할 수 있다.
- Internet Explorer : Trident
- Chrome
- edge
- FireDox
- Iphone Safari
global daemon defaults mode http frontend http-in bind *:80 # L4 S/W (TCP Port) #L4에서 포트를 구분하기 때문에 여기는 L4 Switch의 영역이다. acl firefox hdr_sub(User-Agent) Firefox #acl : Access control list = 접근제어 목록 #hdr : 헤더를 말한다. #hdr_sub : 헤더의 정보에서 보아라. #User-Agnet : 접속한 브라우저(정보)를 알아낸다. acl trident hdr_sub(User-Agent) Trident # L7 S/W (Content Switch) default_backend backend_servers # default backend만 사용하려면 L4 Switch만 사용해도 된다. use_backend bk_firefox if firefox #주 목적은 use_backend를 사용하기 위함 use_backend bk_trident if trident backend backend_servers balance roundrobin server web01 10.0.28.100:80 cookie w1 check server web02 10.0.28.101:80 cookie w2 check server web03 10.0.28.102:80 cookie w3 check backend bk_firefox server web01 10.0.28.100:80 cookie w1 check backend bk_trident server web02 10.0.28.101:80 cookie w2 check
WEB01
cd /var/www/html
로 이동한다.- index.html.bak파일이 있다면 index.html을 다시 살리고 없다면
echo "<h1>WEB01</h1>">>index.html
로 새로 만든다.- firefox에서 NAT IP주소로 접속하면 WEB01만 들어갈 수 있다.
WEB02sudo cd /var/www/html
: 로 들어가서, 위와 똑같이 index.html을 생성한다.- InternetExplorer로 NAT에 접속해본다.
- WEB02만 접속되는 것을 확인한다.
HAproxy 테스트
- HAproxy설정에서 default_backend를 주석처리하면 firefox와 internetExprorer에서는 들어가지지만 다른곳에서는 안들어가진다.
- default_backend는 기본적으로 있어야 한다. 모든 브라우저를 정의할 것이 아니라면...
- 또, 만약 firefox설정을 주석처리 한다면 firefox만 503에러를 줄 수 있다.
- 프라이빗 (ESXi, Openstack), 퍼블릭 (AWS, Azure, GCP, ALIbaba) 클라우드 융복합 멀티 클라우드 설계 및 구축
- 멀티클라우드 : 거의 대부분의 퍼블릭 클라우드를 섞어 사용해야 한다. (고가용성)
- Openstack은 무료지만 성능이 좋지 못하다.
- ESXi는 유료지만 성능이 좋다. 그래서 평가판을 사용할 것이다.
- 게스트 OS (VM OS)에서 나오는 명령이 하이퍼바이저에서 HOST OS로 번역되어 Hardware로 전해지는 방법이다. 사용사자 사용하기 쉽지만, Binary Translation (명령어 번역) 과정에서 딜레이가 발생한다.
- 게스트 OS (VM OS)명령이 전가상화와 달리 하이퍼콜(Hyper Call)이라는 인터페이스를 통해 게스트 OS명령이 하이퍼바이저를 거쳐 하드웨어로 전달된다. Binary Translation과는 다르지만,
- XenServerm ESXi Server, Hyper-V등 이 있다.
- PC에 OS없이 바로 하이퍼바이저를 구현하는 것이다.
-> HOST OS가 없다.
- 하드웨어(Bare-metal) -> 하이퍼바이저(HyperVisor) -> 가상화 OS (수준2에 존재)
- 우리 PC를 전부 밀어버릴 수 없기 때문에, VM하나로 bare-matal을 구현한다.
- 타입1 구조로 만들 것인데, 타입2 VM위에 타입1을 구현할 것이다.
- 우리가 실습했던 구조이다.
- 하드웨어 -> OS(Windows 10) -> Hypervisor (VMwarePro) -> VM(os, 수준 3에 존재한다.)
- 우리는 결국 VM안에 또, VM을 만들어서 타입1을 구현할 것이다.
- 위 구조를 중첩된 가상화(nested Virtualization)라고 한다.
- Openstack과 ESXi도 똑같은 구조로 설치할 것이다.
Change Setting을 클릭하면 네트워크를 설정할 수 있다.
- 위처럼 설정한다.
- 새로운 VM 생성
- ISO파일 넣기
- 경로 확인
- VM의 Hardware의 스펙을 정한다.
ESXi CPU : 4c RAM : 10Gb (10240Mb) SSD : 128Gb Network : Bridge New CD/DVD : Iso파일(VMware_ESXi.iso)을 넣는다. (하이퍼 바이저)
- 여기가 바로 하드웨어 가상화 (HVM)이다.
- Intel VT-x
- AMD AMD-V
- 체크하는 이유는, 중첩된가상화를 위해 필요하다.
- 이 CPU 세팅은 자동으로 체크되어있는데, VMware에서 개발된 EXSi이기 때문에 자동 인식된 것이다.
- 모두 엔터를 눌러 세팅을 시작하고, root계정 비밀번호를 입력해준다.
- 모두 설치 하면 IP주소가 나오는데, 그 주소를 웹 브라우저에 입력하면 들어갈 수 있다.
- ESXi6으로 먼곳(해외)의 PC를 인터넷만 연결되어있다면, 어디서든지 관리할 수 있다.
- OS가 하이퍼바이저로 되어있다.
- IP주소는, ESXi6에 접속할 수 있는 IP주소이다.
- ESXi6에 VM을 올려 원격으로 작업할 수 있다.
탐색기 ->관리> 설정을 본다
고급설정account 검색해서 5번 비밀번호 틀리면 300초 대기 하는거 찾아서 값 0으로 바꿔버리기
스왑에서 데이터 스토어 클릭해서 datastore1로 바꿔줌
시간 및 날짜에서 시간이 다르다면, 설정 편집 ㄱㄱ
시간 구성 편집에서 NTP서버 입력한다.
NTP서버는 검색하면 나온다
자동으로 안맞춰져있다...
호스트를 껐다가 키면 될것이라 생각한다.
이후, 하드웨어, 라이센싱, 패키지, 서비스, 보안 및 사용자 등 설정을 진행할 수 있다.
- ESXi6의 스토리지이다. 데이터스토어 브라우저로 상대의 컴퓨터에 파일을 업로드 할 수 있다
- vSwitch 우리가 만들었던 가상네트워크와 비슷하다.
- 우리가 연결할때 마다 여기에 초록색 포트가 점점 늘어갈 것이다.
CPU : 1C RAM : 1G SSD : 100G NET : ? IMG : *.iso
- CPU : 1C - RAM : 2G - SSD : 100G - NET : - IMG : Win2012R264*.iso
- 가상시스템에서
VM 생성 / 등록
을 누르면 새 가상시스템 생성 마법사가 나타난다.
- 아래 게스트 운영 체제 버전에서 CentOS7 64bit를 눌러준다.
- 동적할당을 지원한다.
- 스펙 설정
- 씬 프로비저닝은 설치되면 실 크기는 2Mb ~ 1Gb이며, 최대 확장 크기가 100Gb가 된다.
- 그러나 씩(Thcik)프로비저닝은 처음 설치되자마자 100Gb를 점유하게 된다.
- 이 하이퍼바이저(EXSi) 자체가 동적할당이기 때문에, 하나를 씩으로 만들면 다른 VM을 만들기 힘들 것이다.
- 또, 씩 프로비저닝에서
- 느리게 비워짐 : 모든곳을 정리하고 깨끗하게 사용을 시작함, 처음 포맷작업이 매우 오래걸리지만, 이후 성능이 매우 빠르다.
- 빠르게 비워짐 : 정리를 안하고 그때그때 필요한 만큼만 비워짐, 자취할때 정리 안하고 잘 공간만 있는 느낌과 같다. 포맷작업이 빠르지만 이후 공간을 정리해야하는 추가작업이 있다.
vi /etx/sysconfig/selinux
- Window는 GUI이기 때문에 비디오메모리가 필요하다.
- 하드디스크 설정부분은 나중에 수정이 불가능하다. 그래서 마지막에 확인을 한번 더 해야한다.
- 확인하고
NEXT
클릭
- 아래 보안을 모두 동의로 설정해야 원활하게 작동된다.
- 내부 스위치이기때문에 큰 문제 없을 것이다.
CentOS7를 (NAT, Web01, Database)총 3개를 만들어야 한다.
새로 만드는 것 보다 복제가 빠를 것이다.
그러나 ESXi에서는 복제를 지원하지 않는다.
데이터스토리지 -> 데이터스토어브라우저 클릭 -> 디렉토리 생성 -> 이름을
WEB01
로 하고 확인
CentOS7Minimal에 들어가서 CentOS~~.vmx 파일을 오른쪽 클릭 -> 복사 하면 어디로 복사할지 물어본다. -> WEB01로 복사한다.
똑같이 *.VMDK파일도 똑같이 복사한다.
추가로 CentOS7Minimal 도
NAT GW_DHCP_HAproxy_NS
로 이름을 바꿔준다.
똑같은 방법으로
DB_SAMBA_NFS(CentOS7)
도 만들어 준다.
NAT 오른쪽 마우스 클릭 -> 설정 편집 -> 네트워크 어댑터 추가
다른 WEB01, WEB02, WEB03, DB_SAMBA_NFS 는 INTERNAL하나의 랜카드를 가진다. 그렇게 설정해줌.
만약 설정했는데 다시 들어오면 빈칸이라면 그냥 아무것도 안하고 저장 -> 다시 들어가서 설정 나오는지 확인 -> EXTERNAL이라면 INTERNAL로 바꾸고 저장 -> 한번더 들어가서 확인
모두 실행시키고 NAT외의 VM들이 IP를 못받는지 확인한다. (IP못받는게 정상이다.)Windows는 원격콘솔로 실행해야 한다.
- Windows에서 IP주소가 169.254..대로 IP주소가 나오면 IP주소를 못받은 것이다. (IP주소를 못받았을떄 나오는 IP임)
- vSwitch0 (External) 에는 NAT하나만 연결되어있어야한다.
- vSwitch1 (INTERNAL) 에는 NAT를 포함한 총 5개의 VM이 연결되어있어야 한다.