220429

HyeonKi Jo·2022년 4월 29일
0
post-thumbnail

인트로

  • 이제 리모트(원격)로 자원을 사용할 수 있도록 환경을 구축할 것이다.
    - 실제 클라우드에서는 인프라는 이미 구축되어있고, 원격으로 자원을 사용하고, 사용한 만큼만 비용을 지불하기 때문에, 원격환경이 더 클라우드에 가까운 환경이라 할 수 있다.

현재 구조 망 도

  • nat를 통해서만 내부 Private망을 접속할 수 있어야 한다. 또, HAproxy로 웹 접속을 적절히 분산해주어야 한다.

L7기능 구현하기

  • 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(글)을 읽을 수 있도록 개발되었다.

Haproxy 살펴보기

  • fromtend 정의 부분에서 이름을 정할 수 있다는 것은, 여러가지의 frontend, backend 조건을 정할 수 있다는 것이다. 여기서 브라우저 정보로 다르게 설정할 수 있다.

로그 살펴보기

  • Internet Explorer : Trident
  • Chrome
  • edge
  • FireDox
  • Iphone Safari

HAproxy 설정

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만 들어갈 수 있다.


    WEB02
  • sudo 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과는 다르지만,

타입1

  • XenServerm ESXi Server, Hyper-V등 이 있다.
  • PC에 OS없이 바로 하이퍼바이저를 구현하는 것이다.
    -> HOST OS가 없다.
    • 하드웨어(Bare-metal) -> 하이퍼바이저(HyperVisor) -> 가상화 OS (수준2에 존재)
  • 우리 PC를 전부 밀어버릴 수 없기 때문에, VM하나로 bare-matal을 구현한다.
  • 타입1 구조로 만들 것인데, 타입2 VM위에 타입1을 구현할 것이다.

타입2

  • 우리가 실습했던 구조이다.
  • 하드웨어 -> OS(Windows 10) -> Hypervisor (VMwarePro) -> VM(os, 수준 3에 존재한다.)
  • 우리는 결국 VM안에 또, VM을 만들어서 타입1을 구현할 것이다.
    - 위 구조를 중첩된 가상화(nested Virtualization)라고 한다.
    • Openstack과 ESXi도 똑같은 구조로 설치할 것이다.

VMware 설정

Virtual Network Editor

Change Setting을 클릭하면 네트워크를 설정할 수 있다.

  • 위처럼 설정한다.

New Virtual Machine Wizard

  • 새로운 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이기 때문에 자동 인식된 것이다.

ESXi6시작

  • 모두 엔터를 눌러 세팅을 시작하고, root계정 비밀번호를 입력해준다.
  • 모두 설치 하면 IP주소가 나오는데, 그 주소를 웹 브라우저에 입력하면 들어갈 수 있다.



  • ESXi6으로 먼곳(해외)의 PC를 인터넷만 연결되어있다면, 어디서든지 관리할 수 있다.
  • OS가 하이퍼바이저로 되어있다.
  • IP주소는, ESXi6에 접속할 수 있는 IP주소이다.
  • ESXi6에 VM을 올려 원격으로 작업할 수 있다.

ESXi6 살펴보기

  • 탐색기 ->관리> 설정을 본다


    고급설정

  • account 검색해서 5번 비밀번호 틀리면 300초 대기 하는거 찾아서 값 0으로 바꿔버리기

  • 스왑에서 데이터 스토어 클릭해서 datastore1로 바꿔줌

  • 시간 및 날짜에서 시간이 다르다면, 설정 편집 ㄱㄱ

  • 시간 구성 편집에서 NTP서버 입력한다.

  • NTP서버는 검색하면 나온다

  • 자동으로 안맞춰져있다...

  • 호스트를 껐다가 키면 될것이라 생각한다.

  • 이후, 하드웨어, 라이센싱, 패키지, 서비스, 보안 및 사용자 등 설정을 진행할 수 있다.

스토리지

  • ESXi6의 스토리지이다. 데이터스토어 브라우저로 상대의 컴퓨터에 파일을 업로드 할 수 있다

네트워킹

  • vSwitch 우리가 만들었던 가상네트워크와 비슷하다.
  • 우리가 연결할때 마다 여기에 초록색 포트가 점점 늘어갈 것이다.

가상머신만들기

SPEC(Linux 4개)

CPU : 1C
RAM : 1G
SSD : 100G
NET : ?
IMG : *.iso

SPEC(Windows 1개)

- CPU : 1C
- RAM : 2G
- SSD : 100G
- NET : 
- IMG : Win2012R264*.iso

가상 시스템 생성

  • 가상시스템에서 VM 생성 / 등록을 누르면 새 가상시스템 생성 마법사가 나타난다.

  • 아래 게스트 운영 체제 버전에서 CentOS7 64bit를 눌러준다.
  • 동적할당을 지원한다.
  • 스펙 설정
  • 씬 프로비저닝은 설치되면 실 크기는 2Mb ~ 1Gb이며, 최대 확장 크기가 100Gb가 된다.
  • 그러나 씩(Thcik)프로비저닝은 처음 설치되자마자 100Gb를 점유하게 된다.
  • 이 하이퍼바이저(EXSi) 자체가 동적할당이기 때문에, 하나를 씩으로 만들면 다른 VM을 만들기 힘들 것이다.
  • 또, 씩 프로비저닝에서
    - 느리게 비워짐 : 모든곳을 정리하고 깨끗하게 사용을 시작함, 처음 포맷작업이 매우 오래걸리지만, 이후 성능이 매우 빠르다.
    - 빠르게 비워짐 : 정리를 안하고 그때그때 필요한 만큼만 비워짐, 자취할때 정리 안하고 잘 공간만 있는 느낌과 같다. 포맷작업이 빠르지만 이후 공간을 정리해야하는 추가작업이 있다.



VM 설정

  • 이젠 설명이 필요 없을 것이다.
    - 만약 VM을 실행시킬 떄, 원격접속을 실행하면 VMware에서 콘솔이 실행된다.
  • selinux리눅스를 종료시킨다.
    - vi /etx/sysconfig/selinux

Ubuntu 생성





우분투 설치





Windows 생성



  • Window는 GUI이기 때문에 비디오메모리가 필요하다.
  • 하드디스크 설정부분은 나중에 수정이 불가능하다. 그래서 마지막에 확인을 한번 더 해야한다.

Windows 설치


  • 확인하고 NEXT클릭

가상 스위치 추가하기


  • 아래 보안을 모두 동의로 설정해야 원활하게 작동된다.
  • 내부 스위치이기때문에 큰 문제 없을 것이다.



CentOS7 복제하기

  • 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이 연결되어있어야 한다.
profile
Talking Potato

0개의 댓글