← 글 목록

notes

Oracle Cloud 가이드

Oracle Cloud 인스턴스 생성·네트워크 설정과 서버 운영 기본 가이드.


참고사이트

https://sonhc.tistory.com/906

07548

주소창 아래 업그레이드 클릭

지급 방법 추가

계정 업그레이드 클릭

업그레이드 승인까지 대기

1. 구획 생성 (for 작업공간 분리 , 기본 생성된 구획 써도 됌.)

  • START -> [메뉴] -> 1) [ID & 보안] -> 2) [구획]
  • > 3) [구획 생성] -> 4), 5), 6) 정보 입력 -> 7) [구획 생성] -> END이름 : "server" 입력 (지정하고 싶은 이름으로 입력)설명 : "server" 입력 (지정하고 싶은 이름으로 입력)상위 구획 : "<USER_ID>(루트)" 선택 (처음 구획 생성시, 자동으로 선택됨)
  • 2. 가상 클라우드 네트워크 생성 (for 공용 LAN 카드 설정)

  • START -> [메뉴] -> 1) [네트워킹] -> 2) [가상 클라우드 네트워크]
  • > 3) 목록 범위 -> 구획 -> "<USER_ID>(루트)" 하위의 "server" 선택> server 구획 내 가상 클라우드 네트워크 -> 4) [VCN 마법사 시작]
  • > 5) "인터넷 접속을 통한 VCN 생성" 선택 -> 6) [VCN 마법사 시작]
  • > 7), 8) 정보 입력 -> 9) [다음]VCN 이름 : "vcn" 입력 (지정하고 싶은 이름으로 입력)구획 : "<USER_ID>(루트)" 하위의 "server" 선택
  • > 10) [생성]
  • > 잠시 기다리면 -> 11) "가상 클라우드 네트워크 생성 완료"됨 -> 12) [가상 클라우드 네트워크 보기] -> END
  • 앞으로 사용할 가상 클라우드 네트워크를 마법사로 간단하게 생성하였습니다.

    앞서 구획과 가상 네트워크를 생성했으니 이제 본격적으로클라우드에서 동작하는 VM 가상 머신을 만들어 Ubuntu 20.04를 설치해 보겠습니다.

    오라클 클라우드에서는 가상 머신을 인스턴스(instance)라고 지칭하고 있습니다.예시를 위해서 instance 라는 인스턴스를 생성해 보겠습니다.

    3. 인스턴스 생성 (for Ubuntu 20.04 가상 머신 생성)

  • START -> [메뉴] -> 1) [컴퓨트] -> 2) [인스턴스]
  • > 3) 목록 범위 -> 구획 -> "<USER_ID>(루트)" 하위의 "server" 선택> server 구획 내 Instances -> 4) [인스턴스 생성]
  • > 5), 6) 정보 입력 -> 7) 이미지 및 구성 [편집] -> 8) [이미지 변경]이름 : "instance" 입력 (지정하고 싶은 이름으로 입력)구획에 생성 : "<USER_ID>(루트)" 하위의 "server" 선택
  • > 9) "Canonical Ubuntu" 체크 -> 버전 20.04 확인 (필요시 변경) -> 10) [이미지 선택]
  • > 11) 이미지 변경 확인 > ampere ocpu 4 ram 24 선택  12) 네트워킹 : 확인 (앞서 생성한 가상 클라우드 네트워크 "vcn" 과 "공용 서브넷-vcn" 이 자동으로 선택됨)
  • 전용키, 공용키 둘다 저장.

    (ssh접속 개인키)

    받은 공용키를 업로드

  • > SSH 키 추가 -> 13) "공용 키 붙여넣기" 선택 -> 14) 접속할 PC의 ssh pub key 내용 복사 & 붙여넣기> 부트 볼륨 -> 15) "사용자정의 부트 볼륨 크기 지정" 체크 -> 200 입력 (용량 200GB) -> 17) [생성]tip. 여러 개의 인스턴스 생성할 계획이 있으면, 최대 200GB 내에서 필요에 따라 용량을 분할하여 지정하세요.
  • > '프로비전 중' 상태 -> 잠시 후 -> 18) '실행 중' 상태 확인 -> ENDtip. 나중에 ssh 접속을 위해서 공용 IP 주소 메모해두기
  • 인스턴스를 생성했으니 외부로 포트 오픈하는 방화벽 설정을 확인해 보겠습니다.

    인스턴스 생성시에 SSH(22) 포트는 기본으로 추가되어 있습니다.예시를 위해서 Proxy Host 등록을 위해 HTTP(80) 과 HTTPS(443) 포트를 오픈해 보겠습니다.

    4. 인스턴스 수신 규칙 설정 (for 방화벽/포트 설정)

  • START -> [메뉴] -> 1) [컴퓨트] -> 2) [인스턴스]
  • > 3) 목록 범위 -> 구획 -> "<USER_ID>(루트)" 하위의 "server" 선택> server 구획 내 Instances -> 4) "instance" 선택
  • > 서브넷: 5) "공용 서브넷-vcn" 선택
  • > 보안 목록 -> 6) "Default Security List for vcn" 선택
  • > 수신 규칙 -> 7) [수신 규칙 추가]
  • > 8), 9), 10) 정보 입력 -> 11) [수신 규칙 추가] - END소스 CIDR : "0.0.0.0/0" 입력 (0.0.0.0/0 은 모든 IP 허용. 만약 특정 IP만 접근 가능하게 하려면 IP 주소 입력)대상 포트 범위 : "80,443" 입력설명 : "HTTP,HTTPS" 입력 (지정하고 싶은 이름으로 입력)
  • 3번 과정에서 인스턴스 생성하면 "공용 IP 주소"가 할당되어 외부 접근이 가능합니다.

    그런데 기본으로 할당되는 "공용 IP 주소"는 임시용으로 인스턴스 재부팅시마다 바뀌기 때문에예약된 공용 IP를 생성하여 "공용 IP 주소"를 고정 IP로 바꾸는 설정을 해보겠습니다.

    5. 예약된 공용 IP 생성 및 인스턴스 연결 (for 외부 접속용 고정 IP 설정)

    5-1. 예약된 공용 IP 생성

  • START -> [메뉴] -> 1) [네트워킹] -> 2) [예약된 공융 IP]
  • > 3) 목록 범위 -> 구획 -> "<USER_ID>(루트)" 하위의 "server" 선택> server 구획 내 예약된 공용 IP 주소 -> 4) [예약된 공용 IP 주소]
  • > 5), 6), 7) 정보 입력 -> 8) [예약된 공용 IP 주소]예약된 공용 IP 주소 이름 : "fixed_ip" 입력 (지정하고 싶은 이름으로 입력)구획에 생성 : "<USER_ID>(루트)" 하위의 "server" 선택IP 주소 소스 : "Oracle" 선택
  • > "fixed_ip" 이름으로 고정 IP 예약됨 -> "예약된 공용 IP" 항목에서 외부 접속할 고정 IP 확인 -> END
  • 5-2. 예약된 공용 IP를 인스턴스에 연결

  • START -> [메뉴] -> 1) [컴퓨트] -> 2) [인스턴스]
  • > 3) 목록 범위 -> 구획 -> "<USER_ID>(루트)" 하위의 "server" 선택> server 구획 내 Instances -> 4) "instance" (실행중) 선택
  • > 아래쪽으로 스크롤 내려서 -> 리소스 메뉴 -> 5) [연결된 VNIC] -> 6) "instance (기본 VNIC)" 선택
  • > 7) [IPv4 주소] -> 오른쪽 IPv4 주소 리스트 표시됨 -> 공용 IP 주소가 "x.x.x.x (임시)" 표시됨 확인> 8) ... 옵션 -> 9) 편집
  • > 10) "공용 IP 없음" -> 11) [업데이트]
  • > 다시 8) ... 옵션 -> 9) 편집 -> 10) "예약된 공용 IP" -> 13) "기존 예약된 IP 주소 선택"> server의 예약된 IP 주소 -> 14) "y.y.y.y - fixed_ip" 선택 -> 15) [업데이트]
  • > 공용 IP 주소가 "y.y.y.y (예약됨)" 으로 변경됨 -> 인스턴스 접속을 위한 고정 IP 확인 -> END
  • 이제 인스턴스 생성하고 Ubuntu 20.04 설치된 상태에서 고정 IP 설정까지 완료했습니다.Oracle Cloud 인스턴스 구성의 마지막 단계로 ssh 접속을 해보겠습니다.

    vscode ssh접속

    Host gyunju-oracle
      HostName 144.24.66.222
      User ubuntu
      IdentityFile ~/Downloads/ssh-key-2022-12-08.key
  • key file의 권한을 400변경합니다. (권한 이슈 때문에 바꿔줘야 합니다.)
  • $chmod 400 *.key

    설치 및 삭제 및 설정

    1. 데이터 백업(가장 중요)

    pg_dumpall이나 pg_dump 명령어를 사용해 데이터를 백업한다.

    (명령어 사용법은 구글 검색)

    2. PostgreSQL과 관련된 패키지 전체 삭제

    sudo apt-get --purge remove postgresql\*
    dpkg -l | grep postgres

    3. PostgreSQL12를 Ubuntu 20.04에 설치

    공식 인스톨 가이드 - https://www.postgresql.org/download/linux/ubuntu/

    pgdg.list 파일을 만들고 vi 편집기로 연다

    sudo touch /etc/apt/sources.list.d/pgdg.list
    sudo vi /etc/apt/sources.list.d/pgdg.list

    pgdg.list 파일에 아래 내용을 넣고 저장한다.

    deb http://apt.postgresql.org/pub/repos/apt/ focal-pgdg main

    아래 커맨드를 차례대로 실행하면 설치까지 끝난다.

    wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    sudo apt update
    sudo apt install postgresql-12

    4. 유저 추가

    postgres유저로 바꾼 후, 새로운 유저를 추가한다.

    sudo su - postgres
    createuser --pwprompt --interactive <USER_NAME>

    위의 커맨드를 입력 후 패스워드를 두번 입력한다.

    Shall the new role be a superuser? (y/n) y

    y를 입력해 관리자 권한을 준다.

    접속 테스트

    psql -h localhost -U <USER_NAME> -d postgres

    5. 외부 접속 설정

    postgresql.conf 파일을 수정

    sudo vi /etc/postgresql/12/main/postgresql.conf

    아래 부분을 찾아 주석 해제하고 localhost를 *로 바꾼다.

    (특정 IP에서만 접속할 경우에는 해당 IP주소를 쓰면 된다.)

    #listen_addresses = 'localhost'          # what IP address(es) to listen on;>>
    listen_addresses = '*'                         # what IP address(es) to listen on;

    위의 설정이 되지 않았을 경우는, DB 접속시 아래의 에러가 발생하게 된다.

    could not connect to server: Connection refused

    pg_hba.conf 파일을 수정

    sudo nano /etc/postgresql/12/main/pg_hba.conf

    접속 인증을 할 IP범위를 설정하기 위해서 아래 내용을 추가한다.

    (내부 네트워크일 경우 아래 내용에서 아이피 정도만 바꾸면 된다)

    host    all             all             192.168.1.1/24          md5

    혹은, 모든 IP주소에 대한 접근을 허용하기 위해서는 아래와 같이 설정한다.

    host    all             all             0.0.0.0/0          md5

    위의 설정이 되지 않았을 경우는, DB 접속시 아래의 에러가 발생하게 된다.

    FATAL: no pg_hba.conf entry for host "<HOST_IP>", user "<USER_NAME>", database "<DATABASE_NAME>", SSL off error

    우분투 포트열기

    sudo iptables -I INPUT 1 -p tcp --dport {Open할 Port번호} -j ACCEPT
    sudo systemctl enable iptables // 맨 처음에 세팅할 때만 입력해주면 됨. 이후에는 안해도 됨 
    //에러가 발생할 수 있으나 무시

    설정을 마친 후 Postgresql 서비스 재시작

    sudo systemctl restart postgresql