220412

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

복습

HTTPD

  • 서버는 끄면 안된다. 즉, 실무에서는 서버는 꺼지면 안된다.
  • 하나의 머신에는 동일 포트를 하나만 쓰게 되어있다.
    - 아파치, nginx 둘다 외부에서 들어오는 사용자는 80번 포트에서 받아들이게 되는데, httpd(아파치), nginx를 동시에 키려면 포트 충돌이 일어나게 된다.
    • 이 때, 둘중 하나를 끄고 사용할 수 있다.
  • (systemctl start | stop | restart | status | enable | disable| enable --now | disable --now httpd)

Storage 추가 (Mount; Block Storage 다루기 - sda(root volume) - OS, App)

  • 새로운 가상디스크를 생성하고
  • mkfs -t xfs /dev/sdb : 생성한 디스크를 먼저 포맷해준다.
  • 생성된 디스크는 리눅스에서는 파일로 인식 되기때문에 바로 사용할 수 없다.
  • 즉, mount해서 사용해야 한다.
  • mkdir /data : 마운트할 폴더 생성
  • mount dev/sdb /data : deb/sdb장치파일을 /data에 mount해준다.

SAMBA(Server Message Block; file storage -> 네트워크 파일 공유 -> 윈도우용 파일시스템) - Amazon FSx 유사 - 완전 관리형 서비스

  • SAMBA를 설치함으로써, 윈도우에서 파일을 공유할 수 있는 서비스를 만들었다.
  • NET BIOS를 사용한다.

NFS (Network File System; file sttorage -> 네트워크 파일 공유 -> 리눅스용 파일 시스템) -AWS EFS - 완전 관리형 서비스

  • 1984년에 썬 마이크로시스템즈가 개발한 프로토콜이다.
  • NFS자체 프로토콜을 사용한다.

Object File System(우리가 사용했던 WebShare가 OFS, 객체 파일 시스템이다.)

  • 구글 드라이브, My Box등 이 닮았다.
  • 공유된 파일을 클릭하면 실행해버린다.(HTTP기능)이미지를 누르면 이미지가 확대되어 보인다. 각 파일이 객체이기 때문이다.
  • 이는, 객체 파일 시스템의 특징이다.
  • HTTP 프로토콜을 사용하여 파일을 공유하게 된다.
  • 공유된 이미지를 클릭하면 바로 실행된다. (HTTP기능) 이는 웹 페이지로 띄워져 HTTP에서 보인다.
    - HTML에서 img태그의 src에, 내 컴퓨터가 아닌, 웹서버의 이미지주소를 올려서 이미지를 올릴 수 있다.
  • 이것은 Amazon이 상품의 이미지를 빠르게 업로드 및 서비스 하기위해 이 방법을 사용하여S3를 만들게 되었다.
  • 단점으로 이미지 서버가 꺼지면, 서비스에서 이미지가 깨지는 것이 단점이다. 이미지를 볼 수 없다.
  • google드라이브에서 업로드하고, 링크를 공유하여 이미지를 보면, 그냥 이미지를 보는것이 아니라, 구글 자체의 프레임 안에 이미지가 보인다.
    - 구글은 무료라 안된다... 라고 생각하면 된다. S3로 비교해보자
    • Amazon S3도 된다.
    • 이렇게 링크를 만들어서 이미지를 웹에 올리면, 트래픽에 대한 걱정을 해야한다. S3에 아무 생각없이 올리면, 다음날에 몇십만원이 깨질 것이다.

실습

NFS 사용하기

서버

  • yum install -y nfs-utils : nfs-utils 설치
  • mkdir /share && cd $_ : 공유폴더이동
    - && 앞명령과 동시에 뒤 명령을 진행한다.
    • _는 직전에 만든 폴더를 뜻한다
    • 기존 | 파이프 명령어랑 거의 비슷하다.
    • 그러나 현재 명령어 mkdir && cd는 실행되지 않는다. 무슨차이가 있는지는 확인 필요
  • echo "Hello~ U R in NFS." > test.txt
  • vi /etc/exports : 보안설정, 접근할 수 있는 IP주소 범위를 설정한다.
    - share 192.168.56.0/24(rw,sync)

IP

  • IPv4 주소는, 점3개를 기준으로 4개의 숫자로 표현된다.
  • VM들의 HostOnly주소를 보면, 앞 3개의 숫자가 똑같다.
  • 192.168.56.xxx 중 앞 세자리가 같으면, 같은 네트워크에 있다는 것이고, 끝숫자만 다르게 구별되어있다.
  • 앞 세자리는 아파트로 가정하면 101동 같은 동 수 이고, 뒤 한자리는 303호와 같은 호 수 이다.
  • 이 앞 세자리를 network영역이라 하고,
  • 뒤 한자리를 host영역이라 한다.
  • 또, 0~255까지 부여할 수 있다.
  • 그러나 2개의 특수한 목적이 있는 고정된 IP가 존재하여 실제 사용가능 ip는 254개 이다.
  • 192.168.56.0 : 네트워크 주소 (고정적으로 정의되어있음), 이는 IP범위에서의 호스트주소가 0일 때, 고정되어 사용한다.
  • 192.168.52.255 : 브로드캐스트 주소(고정 정의), 모든 ip에게 내 pc가 켜졌음을 알린다.
    • 0과 같이 고정된 네트워크영역외의 수정할 수 있는 host영역에서의 최대값이 이 역할을 한다.
  • 즉, 192.168.56.0/24는 ip주소의 network영역이 192.168.56.이고 host영역이 서로다른 사용자만 허용하겠다는 뜻이다.

서버 실행

  • chmod 707 /share
  • systemctl start nfs-server
  • systemctl enable nfs-server
  • systemctl enable --now nfs-server : 위 start, enable명령을 한번에 해결할 수 있다.
  • exportfs -v : 우리가 설정한 접근 주소 설정을 볼 수 있다. 우리는 rw, sync만 입력했지만 다른 디폴트 설정들이 들어감을 볼 수 있다.

    추가적으로 firewall설정이 필요함
  • firewall-cmd --permanent --add-service=nfs : nfs 추가
  • firewall-cmd --permanent --add-service=rpc-bind : rpc-bind 추가
  • firewall-cmd --permanent --add-service=mountd : mountd 추가
  • firewall-cmd --reload : firewalld 새로고침

클라이언트 (Minimal)

  • rpm -qa | grep nfs-utils : rpm은 redhat의 패키지 매니저이다.
    - rpm -qa : 는 모든 설치된 패키지를 출력한다.
    • 너무 많아 파이프명령으로 grep을 사용하여 찾아본다.
  • yum install -y nfs-server : 클라이언트 PC에도 nfs-server를 설치해준다.
  • showmount -e [server IPaddress] : showmount 명령어는 NFS Server에 NFS Client가 접속해서 사용하고 있는 상태를 체크한다.
  • mkdir share
  • sestatus : enforce 가 설정되어 있다면
  • setenforce 0 : 해서 해제해야한다.
  • vi /etc/sysconfig/selinux : 이곳에서 setenforce를 disabled로 설정해준다.
  • sestatus : 해서 disabled 되어 있어야 한다.


  • mount -t nfs 192.168.56.120



    항상연결되어있도록 한다.
  • df -h : 디스크 사용량 확인
  • cp /etc/fstab /etc/fstab.dek : 백업을 하기위해 사본을 만들어 놓는다.
  • vi /etc/fstab
    - [서버 IP]:/share /root/share nfs defaults 0 0 : 껐다가 켜도 연결되어 있도록 설정한다. 어제와 달리 오늘은 nfs방식을 사용하기 떄문에 nfs로 바뀌었다.

DB서버(Database Management System; MariaDB) AWS RDS - 완전 관리형 서비스

  • 관계형 데이터베이스 관리 시스템 (RDMS)
  • SQL언어를 사용하는 데이터베이스가 SQLDB라고 한다.
  • 또, SQL을 사용하지 않는 데이터베이스는 NoSQL이라 한다.

DB서버설치(MariaDB)

  • vi /etc/yum.repos.d/MariaDB.repo : repo(Repository, 저장소), MariaDB를 설치하기 위해 저장소를 정의 한 후 설치한다. 패키지에 마다 다르다.
  • 편집기에서 아래 명령어를 넣어준다.
  • 또, 아래 baseurl에서 버전을 넣어줄 수 있다. (현재 10.4)버전이다.
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
  • cat > /etc/yum.repos.d/MariaDB.repo 하고 바로 붙혀넣기 해도 된다.
  • yum install -y MariaDB : MariaDB 설치
  • rpm -qa | grep MariaDB : 패키지가 잘 설치됬는지 확인
  • mariadb --version : 버전을 확인하며 설치되었는지 확인
  • systemctl enable --now mariadb : mariadb 시작 및 자동실행 설정
  • ss -ant : 현재 리스닝중인 포트 정보를 보여준다.
    - 또, IPv6, IPv4, port번호, peer Address등 의 다양한 정보를 볼 수 있다.
    • 80번 포트, 2049(NFS포트), 139(NetBIOS포트), 3306(MariaDB 포트)
    • 또, 연결된 IP로 연결된 정보를 볼 수 있다.
  • mysql_secure_installation : db서버의 보안설정하는 명령어
    - root passwd를 물어보지만 엔터를 눌러본다.
    • 이후 여러 질문을 하는데 Y를 넣을 것이다.
    • root passwd를 바꾼다. Y
    • anonymous 사용자를 제거한다. Y
    • root의 원격접속을 허락하지 않는다. Y
      • remote(원격) <-> local(내부)
        • 결국 보안이 문제이다.
        • remote에서 root계정을 사용할 수 있다면, 만약 root계정을 다른 사람이 획득하게 된다면 어디서든지 root계정으로 들어올 수 있다.
        • 이런 일을 막기위해 local, 물리적 한계를 두어 계정을 빼앗겨도 물리접으로 접촉하지 않으면 보안을 지킬 수 있다.
    • test database 굳이 필요없다.
  • systemctl restart mariadb : 재시작
  • mysql -u root -p : 마리아DB를 실행시킨다.


    SQL 명령어
  • CREATE USER 'wpuser'@'%' IDENTIFIED BY 'wppass' : wpuser사용자는 뚫려봤자 루트까지 들어오지 못한다. 즉, wpuser (외부 사용자)는 외부에서 remote로 접속 할 수 있도록 허용한다.
  • CREATE USER '사용자 닉네임' iNDETIFIED BY '비밀번호
  • GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'%';

클라이언트

  • yum install mysql -y
  • mysql -h 172.30.1.55 -u 비밀번호 -p
  • firewall-cmd --list-all : maria db를 새로 추가해줘야 한다.
  • firewall-cmd --permanent --add-service=mysql
  • firewall-cmd --reload

공유기 만들기

사설 IP

  • RFC 1918 (가능한 IP의 범위)
    - 10.0.0.0 ~ 10.255.255.255
    • 172.16.0.0 ~ 172.31.255.255
    • 192.168.0.0 ~ 192.168.255.255

NAT

  • 사설 IP가 공인 IP로 바뀌어 나가고, 반대로 공인 IP로 들어올 때, 사설IP로 변환되서 들어오는 것이 NAT(Network Address Translation, 네트워크 주소 변환)이다.
  • NAT를 사용하는 이유는 대개 사설 네트워크에 속한 여러개의 호스트가 하나의 공인 IP주소를 사용하여 인터넷에 접속하기 위함이다.

vbox 설정

  • VM의 네트워크 설정을 어댑터1 : 어댑터에 브릿지, 어댑터2 : 내부네트워크로 설정한다.
  • 내부네트워크의 이름은 vSwitch로 한다.
  • VM에서 ip a를 실행해보고 브릿지 환경은 잡히고, 내부 네트워크는 안잡히는게 정상이다. 또, ping google.com했을 때 ping이 나가야 한다.

Diagram

  • XFCE VM을 NAT gateway처럼 사용하고, Minimal들을 복제하여 각 서버를 만들 것이다.
  • XFCE VM의 이름을 NAT GW_DHCP_HAproxy로 변경, 스냅샷 찍어놓은 것으로 돌아간다.
  • Minimal VM의 이름을 WEB01_SAMBA로 바꾸고 위 그림처럼 2개를 더 복사해 만들어준다. (완전복제)
  • NAT GW~~ 의 네트워크를 다시 설정해준다.(스냅샷으로 돌아가며 설정 변경됨)
    - 어댑터 1: 어댑터에 브릿지
    • 어댑터 2: 내부네트워크 (vSwitch)
  • 나머지 Minimal VM 이었던 VM들은
    - 어댑터 1: 내부네트워크 (vSwitch)
    • 어댑터 2: 사용하지 않음
      으로 설정한다.
profile
Talking Potato

0개의 댓글