지난 글에서 Docker 로 Oracle 이미지 빌드하여 기동 하는 것 까지 테스트를 진행 했습니다

이번 에는 해당 Oracle 에 계정 생성 후 DBeaver 로 접속하는 방법을 확인해 보겠습니다

 

지난 글 : https://tistory-cloud.tistory.com/71 

 

Docker Oracle Image Build

Oracle 을 Docker 로 기동시키기 위해서는 이미지 가 필요 하다.물론 Docker hub 에 있는 이미지를 받앗 사용해도 되겠지만, 보안문제나 개인 설정을 추가하고 싶거나, 그냥 직접 해보고 싶은 경우에는

tistory-cloud.tistory.com

 

1. 기동중인 docker 접근

 docker exec -it [docker ID] bash

docker

2. Oracle DB 접속 및 계정 생성

sqlplus '/as sysdba'
create user yc identified by ycpassword;

위 명령어를 입력하면 아래와 같은 에러가 나타난다.

해당 내용을 구글링 해보니 공용 계정을 만들기 위해서는 ALTER SESSION SET "_ORACLE_SCRIPT"=true; 명령어를 입력 하여야 한다. 

위 명령어를 입력 후 아래와 같이 정상적으로 종료 되었다.

ALTER SESSION SET "_ORACLE_SCRIPT"=true;
create user yc identified by ycpassword;

 

3. DBeaver 접속 확인

- HOST : docker 가 수행중인 서버의 IP

- Database : ORACLE_SID

- ID/PW : 조금전에 생성한 계정 정보

위와 같이 입력 후 Test Connection 을 클릭하면 아래와 같이 나타난다.

계정에 접근할 권한이 없다는 것으로 보인다. Oracle DB 에서 아래의 명령어를 추가로 입력하고 접속 테스트를 진행

grant connect, resource to yc;

 

다시 Test Connection 을 클릭하면 아래와 같이 연결 된 것을 볼 수 있다.

'AWS' 카테고리의 다른 글

Docker Oracle Image Build  (3) 2024.07.14
RDS 이벤트 구독을 통한 RDS 관리  (1) 2024.01.07
EKS fargate 생성을 위한 설정  (0) 2023.12.18
AWS EC2 종료 Lambda with EventBridge  (0) 2023.11.28
AWS EKS LB Controller Install  (0) 2023.09.29

Oracle 을 Docker 로 기동시키기 위해서는 이미지 가 필요 하다.

물론 Docker hub 에 있는 이미지를 받앗 사용해도 되겠지만, 보안문제나 개인 설정을 추가하고 싶거나, 그냥 직접 해보고 싶은 경우에는 이미지를 직적 빌드하는 것이 기분이 좋다.


환경 OS RHEL 9

docker 설치 되어 있음, root 계정 사용


 

1. root 경로에 docker-oracle 폴더를 생성 후 아래 명령어 입력

git clone https://github.com/oracle/docker-images.git

 

2. 아래 경로에서 oracle 설치 파일 다운로드

https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#19c

 

Database Software Downloads | Oracle

Oracle Database Software Downloads Whether you are a developer, a data scientist, a DBA, an educator, or just interested in databases, Oracle Database 23ai is the ideal way to get started. It provides native support for all modern data types, analytics, an

www.oracle.com

파일 다운로드가 완료되면 해당 파일을 아래 경로로 이동

 /root/docker-oracle/docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0

 

3. 이미지 빌드

 /root/docker-oracle/docker-images/OracleDatabase/SingleInstance/dockerfiles 경로에서 이미지 빌드

cd /root/docker-oracle/docker-images/OracleDatabase/SingleInstance/dockerfiles
./buildContainerImage.sh -v 19.3.0 -e

 

빌드 명령어 옵션 참고

약 5분 정도 지난 후 이미지 빌드 완료

 

4. docker 실행

docker run --name oracle-19c \
-e ORACLE_SID=myoracle \
-e ORACLE_PASSWORD=Oracle_2023 \
-p 1521:1521 \
-v /my-oracle/oracle-19c/oradata/:/opt/oracle/oradata \
oracle/database:19.3.0-ee

위와같이 입력하면 아래와 같은 에러가 발생

 

아래 내용을 구글링 해서 보니, docker 에서 실행할 때 리소스 제한이 걸리는데 해당 부분을 아래 명령어로 제어가 가능 하다는 거 같다.

 

https://docs.docker.com/reference/cli/docker/container/run/

 

docker run

 

docs.docker.com

 

그래서 아래와 같이 해당 옵션을 추가하고 실행 하였고 약 20분 정도 뒤에 docker 가 정상적으로 실행 되었다.

docker 실행하면서 oracle 초기화 작업이 진행 되는데 이작업이 생각보다 오래 걸렸다.

이미지 빌드할때 라이트 버전과 빠른 실행 버전이 별도로 있는것 같으니, 다음번 테스트때는 해당 이미지로 빌드 해보는것도 좋을것 같다.

docker run --name oracle-19c \
--ulimit nofile=1024:65536 \
-e ORACLE_SID=myoracle \
-e ORACLE_PASSWORD=Oracle_2023 \
-p 1521:1521 \
-v /my-oracle/oracle-19c/oradata/:/opt/oracle/oradata \
oracle/database:19.3.0-ee

 

docker oracle 로그

위와 같이 DATABASE IS READY TO USE!  가 나타나면 정상적으로 실행이 된 상태이다

 

다음 글에서는 Oracle 접속하여 계정생성 및 DBeaver 접속 확인 해보도록 하겠습니다

 

 

 

 

 

 

 

 

AWS RDS 에서는 CloudWatch 에 포함된 지표 외에 추가적으로 발생하는 현상에 대하여 알람을 제공해 준다

이를 사용하면 RDS를 보다 안전하고 최적의 성능을 유지하여 사용 하는데 도움이 된다

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/rds-cloudwatch-events.sample.html

 

Amazon RDS에 대한 이벤트 개요 - Amazon Relational Database Service

Amazon RDS는 최선의 작업을 기반으로 이벤트를 방출합니다. 알림 이벤트의 순서나 존재 여부에 따라 달라지는 프로그램은 순서가 잘못되거나 누락될 수 있으므로 작성하지 않는 것이 좋습니다.

docs.aws.amazon.com


주로 사용하는 알람 지표

  • DB 재시작
  • DB 종료
  • DB 스토리지 부족
  • 백업 수정
  • 파라미터 변경

전체 지표 

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_Events.Messages.html#USER_Events.Messages.instance

 

Amazon RDS 이벤트 범주 및 이벤트 메시지 - Amazon Relational Database Service

Amazon RDS 이벤트 범주 및 이벤트 메시지 Amazon RDS는 Amazon RDS 콘솔, AWS CLI 또는 API를 사용하여 구독할 수 있는 이벤트 카테고리가 매우 많습니다. DB 클러스터 이벤트 다음 표에는 DB 클러스터가 원본

docs.aws.amazon.com


이벤트 구독 방법

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_Events.Subscribing.html

 

Amazon RDS 이벤트 알림 구독 - Amazon Relational Database Service

Amazon RDS 이벤트 알림 구독 가장 간단한 구독 생성 방법은 RDS 콘솔입니다. CLI 또는 API를 사용하여 이벤트 알림 구독을 생성하려면 먼저 Amazon Simple Notification Service 주제를 만든 후 Amazon SNS 콘솔이

docs.aws.amazon.com

 

 

'AWS' 카테고리의 다른 글

Docker Oracle 계정 생성 및 DBeaver 접속 확인  (0) 2024.07.14
Docker Oracle Image Build  (3) 2024.07.14
EKS fargate 생성을 위한 설정  (0) 2023.12.18
AWS EC2 종료 Lambda with EventBridge  (0) 2023.11.28
AWS EKS LB Controller Install  (0) 2023.09.29

 

AWS EKS 에서 fargate 를 사용하기 위해서는 몇가지의 설정이 필요하다

 

1. faragte profile

2. aws-log comfigmap

 


 

1번 내용인 fargate profile 은 fargate 를 사용하기 위한 IAM Role 을 생성하는 부분으로 아래내용 참고하시면 됩니다

  • fargate profile 생성시 name space 나 lable 를지정할 수 있는대 pod를 생성할때 지정한 name space 나 lable 이 지정되어 있으면 해당 pod 는 fargate 로 생성 된다

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/fargate-profile.html

 

AWS Fargate 프로파일 - Amazon EKS

Amazon EKS가 있는 AWS Fargate은 AWS GovCloud(미국 동부) 및 AWSGovCloud(미국 서부)를 제외한 모든 Amazon EKS 지역에서 사용할 수 있습니다.

docs.aws.amazon.com

 


2번 내용인 aws-log comfigmap 은 fargate 를 cloudwatch 와 연계하기 위한 방법으로 해당 내용이 있어야 EKS 안에서 pod가 정상적으로실행 된다

 - cloudwatch 가 아닌 AWS OpenSearch Service 혹은 Kinesis Data Firehose 로 데이터를 수집 할 수도 있다

 - 제일 간단한 부분은 cloudwatch  로의 통합이라 아래 내용을 주로 사용 한다

 

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/fargate-logging.html

 

Fargate 로깅 - Amazon EKS

일반적인 Fluent Conf에 포함된 주요 단원은 Service, Input, Filter, Output입니다. 하지만 Fargate 로그 라우터는 다음 부분만 수락합니다. Filter 및Output 부분입니다. Parser 부분. 기타 부분을 제공하는 경우

docs.aws.amazon.com

 

  • aws-log 를 사용하기 위해서는 아래 yaml 파일을 EKS 에 배포해야 정상적으로 사용이 가능하다
kind: Namespace
apiVersion: v1
metadata:
  name: aws-observability
  labels:
    aws-observability: enabled

 

kind: ConfigMap
apiVersion: v1
metadata:
  name: aws-logging
  namespace: aws-observability
data:
  flb_log_cw: "false"  # Set to true to ship Fluent Bit process logs to CloudWatch.
  filters.conf: |
    [FILTER]
        Name parser
        Match *
        Key_name log
        Parser crio
    [FILTER]
        Name kubernetes
        Match kube.*
        Merge_Log On
        Keep_Log Off
        Buffer_Size 0
        Kube_Meta_Cache_TTL 300s
  output.conf: |
    [OUTPUT]
        Name cloudwatch_logs
        Match   kube.*
        region region-code
        log_group_name my-logs
        log_stream_prefix from-fluent-bit-
        log_retention_days 60
        auto_create_group true
  parsers.conf: |
    [PARSER]
        Name crio
        Format Regex
        Regex ^(?<time>[^ ]+) (?<stream>stdout|stderr) (?<logtag>P|F) (?<log>.*)$
        Time_Key    time
        Time_Format %Y-%m-%dT%H:%M:%S.%L%z

 

'AWS' 카테고리의 다른 글

Docker Oracle Image Build  (3) 2024.07.14
RDS 이벤트 구독을 통한 RDS 관리  (1) 2024.01.07
AWS EC2 종료 Lambda with EventBridge  (0) 2023.11.28
AWS EKS LB Controller Install  (0) 2023.09.29
AWS EC2/RDS Instance 정보 조회 Lambda 코드  (0) 2023.09.24

 


개요

AWS EC2 를 사용 하다보면 비용을 줄이고자 미사용 시간에 정지를 해야할 필요가 있다

이를 Lambda 와 EventBridge 로 구성하면 모든 EC2 에 대하여 자동으로 관리가 가능하다

 


 

작업내용

Lambda 코드 작성

EventBridge 설정

 


 

상세 작업

 

1. Lambda 코드

  • boto3 ec2 client 를 사용한다
  • ec2.describe_instances() 를 사용하여 현재 생성된 전체 EC2의 Instance_id 를 추출한다
  • ec2 client 의 ec2.stop_instances 를 사용하여 추출한 Instance_id 의 EC2를 종료 한다
import boto3

def lambda_handler(event,context):
    # Get the EC2 client
    ec2 = boto3.client('ec2')
    
    # Get the list of all instances
    describe_instance_assets = ec2.describe_instances()

    
    ec2_instance_list =[]
    for reservation in describe_instance_assets['Reservations']:
        for instance in reservation['Instances']:
            instance_id = instance['InstanceId']
            
            ec2_instance_list.append(instance_id)
            ec2.stop_instances(InstanceIds=[instance_id])
            
    # print(ec2_instance_list)

 

※주의사항

Lambda의 정상적인 실행을 위해서는 Lambda 권한에 EC2 제어 권한이 필요하다

 

 

2. EventBridge 설정

  • EventBridge - 일정 부분에 스케줄을 생성 한다

  • 일정 패턴 편집
  • 원하는 시간대로 설정
  • 시간대를 Asia/Seoul 로 설정하면 현지 시간으로 지정이 가능하다

  • 대상으로 람다 지정
  • 추가 설정 확인(불필요함으로 미지정)

 

  • 위와같이 생성하면 Eventbidge 에서 자동으로 Lambda 를 실행할 권한을 생성하게 된다
  • 설정한 시간대에 EventBridge 가 실행 되고, Lambda 를 호출하여 모든 EC2를 종료 하게 된다

 

 

 

 

'AWS' 카테고리의 다른 글

RDS 이벤트 구독을 통한 RDS 관리  (1) 2024.01.07
EKS fargate 생성을 위한 설정  (0) 2023.12.18
AWS EKS LB Controller Install  (0) 2023.09.29
AWS EC2/RDS Instance 정보 조회 Lambda 코드  (0) 2023.09.24
Route53 라우팅 정책  (0) 2023.08.05

+ Recent posts