All posts

IT

문제

EKS에 CI/CD 파이프라인 배포 환경에서 API 서버 배포 간 간헐적으로 서버 연결에 오류가 발생.

해결 과정

CI/CD 파이프라인을 전체적으로 검토하고, Kubernetes에 설정된 Health Check 설정 확인.
백엔드 개발자들과 이슈 공유 후, API 서버 설정된 graceful shutdown 설정 파악.
API 서버의 설정 보다 pod의 종료 대기 시간이 짧아 API 서버에서 처리 중인 요청이 pod 종료로 인해 끊김.

조치

pod의 종료 대기 시간을 애플리케이션 보다 길게 설정하여 문제 해결.

문제

모니터링 알람을 통해 DB 스토리지 사용률 90% 초과 감지, 이어서 웹 서비스 장애 발생.

스토리지 사용률이 급상승되어 100%가 되었고 이에 Read-only 상태로 변경되어 장애가 발생한 것으로 확인.

해결 과정

스토리지 용량을 확장한 후, MSSQL을 재시작하여 임시 조치.

임시 조치 후 스토리지 사용량은 복구 되었고,

로그를 분석해보니 Auto Shrink 기능에 오류가 발생해 tempdb 용량이 급격하게 상승한 것으로 파악.

Auto Shrink는 IO와 CPU 리소스를 많이 사용하는데,

MSSQL 점유 리소스와 스케쥴러 작동으로 인해 사용 가능한 리소스가 부족해 오류 발생한 것으로 파악.

정상적인 스케쥴러 작동 및 인스턴스 비용을 고려하여 CPU 점유 설정은 유지.

동일한 이슈로 장애가 발생하지 않도록 tempdb에 대한 maxsize를 설정.

후속 조치

tempdb에 대한 maxsize를 설정.

 

참고링크

https://www.sqlshack.com/sql-server-auto-shrink-database-property/

스팸 필터 솔루션에서 로그인 문제가 있어 LDAP 연동으로 변경함.

변경 후, 사용자만 동기화되고 그룹 메일은 동기화 되지 않음.

수동으로 그룹 메일을 추가했으나, 동기화 될 때마다 수동으로 추가한 계정이 삭제 됨.

솔루션 업체 측에서 해결이 불가능하다고 답변 받았으나, LDAP 동기화 필터 수정으로 해결 함.

 

 

# 기존 LDAP 동기화 필터 설정 (LDAP 사용자만 동기화)

(&(objectCategory=person)(objectClass=user)(cn=*))

# 변경 값(사용자 또는 그룹 동기화)

(|(&(objectCategory=person)(objectClass=user)(cn=*))(&(objectCategory=group)(cn=*)))

여러 필터 쿼리를 조합하여 원하는 객체만 필터 가능하며,

ldap 다른 논리 연산자와는 다르게 연산자가 연산 대상 앞에 온다.

(<연산자>(피연산자1)(피연산자2)(···))

따라서 아래와 같이 설명할 수 있다.

(&(objectCategory=person)(objectClass=user)(cn=*))
	=> 모든 user 객체

(&(objectCategory=group)(cn=*))
	=> 모든 group 객체
    
(|(&(objectCategory=person)(objectClass=user)(cn=*))(&(objectCategory=group)(cn=*)))
	=> 모든 user 객체 또는 모든 group 객체

 

LDAP Base DN과 LDAP 동기화 속성이 되어있기 때문에 원하는 ou내에 있는 메일이 있는 계정만 동기화 가능.

# LDAP BASE DN
ou=<ORGANIZATION>,dc=<DOMAIN>,dc=co,dc=kr

# LDAP 동기화 속성
mail=mail,name=displayName

 

 

참고 사이트:

https://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx

 

Active Directory: LDAP Syntax Filters - TechNet Articles - United States (English) - TechNet Wiki

 

social.technet.microsoft.com

 

ubuntu 초기 설치 시 디스크 구성할 때 사이즈를 적게 설정하여 확장이 필요했다.

$ df -Th
Filesystem                         Size  Used Avail Use% Mounted on
udev                               7.8G     0  7.8G   0% /dev
tmpfs                              1.6G  1.4M  1.6G   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   11G   11G   32M 100% /

📝 vg-unbuntu--lv 볼륨 확장 하기.

 

- 순서 -

1. 파티션 생성

2. LVM 설정

3. LVM 볼륨 확장

 

 

1. 파티션 생성

먼저 남은 용량으로 새로운 파티션을 생성한다.

$ sudo fdisk /dev/sda

Command (m for help): n
Partition number (4-128, default 4): 4
First sector (33552384-104857566, default 33552384):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (33552384-104857566, default 104857566):
Created a new partition 4 of type 'Linux filesystem' and of size 34 GiB.
Command (m for help): w

$ fdisk -l /dev/sda
Disk /dev/sda: 50 GiB, 53687091200 bytes, 104857600 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: F2AFDAB9-654E-4E24-9388-108FBCC1026A

Device        Start       End  Sectors Size Type
/dev/sda1      2048      4095     2048   1M BIOS boot
/dev/sda2      4096   2101247  2097152   1G Linux filesystem
/dev/sda3   2101248  33552383 31451136  15G Linux filesystem
/dev/sda4  33552384 104857566 71305183  34G Linux filesystem

 

2. LVM 설정

LVM에서 사용할 수 있도록 볼륨을 생성해준다.

$ sudo pvscan
  PV /dev/sda3   VG ubuntu-vg       lvm2 [<15.00 GiB / 0    free]
  Total: 1 [<15.00 GiB] / in use: 1 [<15.00 GiB] / in no VG: 0 [0   ]
  
$ sudo pvcreate /dev/sda4
  Physical volume "/dev/sda4" successfully created.
  
$ sudo pvscan
  PV /dev/sda3   VG ubuntu-vg       lvm2 [<15.00 GiB / 0    free]
  PV /dev/sda4                      lvm2 [34.00 GiB]
  Total: 2 [<49.00 GiB] / in use: 1 [<15.00 GiB] / in no VG: 1 [34.00 GiB]

 

생선한 볼륨을 확장을 원하는 VG에 확장 시켜준다.

$ sudo sudo vgdisplay ubuntu-vg | grep "VG Size"
  VG Size               15.00 GiB

$ sudo vgextend ubuntu-vg /dev/sda4
  Volume group "ubuntu-vg" successfully extended
  
$ sudo sudo vgdisplay ubuntu-vg | grep "VG Size"
  VG Size               48.99 GiB

 

3. LVM 볼륨 확장

볼륨을 확인하고, 확장 시킨다.

파일시스템이 ext4인 경우에는 resize2fs 명령어를 통해 확장된 용량을 적용 해줘야 한다.

$ sudo lvscan
  ACTIVE            '/dev/ubuntu-vg/ubuntu-lv' [<11.00 GiB] inherit
  ACTIVE            '/dev/ubuntu-vg/lv-swap' [4.00 GiB] inherit
  
$ sudo lvextend -l +100%FREE -n /dev/ubuntu-vg/ubuntu-lv
  Size of logical volume ubuntu-vg/ubuntu-lv changed from <11.00 GiB (2815 extents) to 44.99 GiB (11518 extents).
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.
  
$ sudo lvscan
  ACTIVE            '/dev/ubuntu-vg/ubuntu-lv' [44.99 GiB] inherit
  ACTIVE            '/dev/ubuntu-vg/lv-swap' [4.00 GiB] inherit

$ sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 6
The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 11794432 (4k) blocks long.

 

❗ 최종 확인

부족했던 볼륨 사이즈가 확장되었다!

$ df -Th
Filesystem                        Type      Size  Used Avail Use% Mounted on
udev                              devtmpfs  7.8G     0  7.8G   0% /dev
tmpfs                             tmpfs     1.6G  1.4M  1.6G   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4       45G   11G   32G  25% /

 

'IT > System' 카테고리의 다른 글

[MSSQL] Auto Shrink 장애  (1) 2024.11.07
[AD] LDAP 동기화 필터링  (2) 2021.11.24
[Oracle] DB 이관하기(Windows to Ubuntu)  (0) 2021.10.18
[CentOS] YumRepo Error: All mirror URLs are not using ftp  (0) 2021.07.21
[CentOS] rc.local 활성화  (0) 2021.07.08

기존 환경:

Windows 2008 Std

 

변경:

Ubuntu 20.04, docker

 

 

1. 전체 백업 진행

> exp userid=유저명/비밀번호 file='C:\full.dmp' full=y

2. 컨테이너 구성 

$ sudo docker pull jaspeen/oracle-xe-11g
$ sudo docker run --name oracle11g -d -p 1521:1521 jaspeen/oracle-xe-11g

📌 이미지 'jaspeen/oracle-xe-11g'의 DB 계정 정보는 system/oracle 이다.

 

3. 백업본 복사 및 복원 진행

$ sudo docker cp /tmp/full.dmp /home/ oracle11g
$ sudo docker exec -it oracle11g imp userid=system/oracle file=/home/full.dmp full=y