1. OpenStack 핵심 컴포넌트 및 역할#
1. HORIZON — 통합 웹 대시보드 서비스#
- 핵심 기능: 클라우드 관리자와 일반 테넌트가 클라우드 리소스를 시각적으로 할당·모니터링할 수 있는 Web 기반 Dashboard 그래픽 관리 콘솔을 제공합니다.
2. NOVA — 컴퓨트 리소스 관리 서비스#
- 핵심 기능: 클라우드 환경의 가상화 컴퓨트 리소스(
nova-compute)를 관리·설정합니다.
- 역할 분담:
- Controller 제어 노드:
nova-api, nova-scheduler, nova-conductor 등의 스케줄링 서비스를 실행합니다. 사용자가 클라우드 인스턴스 생성을 요청하면 nova-api가 요청을 수신·파싱하고, nova-scheduler가 정책에 따라 최적의 컴퓨트 노드를 선택해 부하를 스케줄링합니다.
- Compute 컴퓨트 노드: 클라우드 인스턴스를 실제로 호스팅하는 워커 노드(KVM, VMware ESXi, Xen 등 이기종 하이퍼바이저 지원).
- 제어 노드의 고가용성과 성능 병목:
- 제어 노드는 모든 API 게이트웨이, 데이터베이스, 메시지 큐를 담당하여 고가용성·성능 부하가 발생한다.
3. GLANCE — 이미지 서비스#
- 핵심 기능: OS 이미지의 발견, 등록, 검색 및 스토리지 관리를 담당합니다.
- 일반적인 디스크 이미지 형식:
- KVM 일반 형식:
qcow2(씬 프로비저닝 및 Copy-on-Write, COW 지원);
- VMware 일반 형식:
vmdk.
- 배포 권장: 일반적으로 고가용성을 위해 제어 노드에 통합·배치하여 배포합니다.
4. SWIFT — 오브젝트 스토리지 서비스#
- 핵심 기능: 고가용·분산·최종 일관성 객체 스토리지 서비스(Object Storage)를 제공하며, 정적 비정형 데이터, 클라우드 인스턴스 시스템 이미지, 전체 데이터 백업 등에 특화되어 있다.
5. NEUTRON — 소프트웨어 정의 네트워크(SDN)#
- 핵심 기능: 클라우드 환경에서 네트워크 서비스(NaaS)를 제공하며 가상 라우터, 스위치, 보안 그룹, 플로팅 IP, 노드 간 트래픽 연결을 관리합니다.
- 네트워크 기술: VLAN, VXLAN, Geneve 및 분산 가상 라우팅(DVR)을 완전 지원;
- 하드웨어 SDN 모드: 프로덕션 환경에서는 보통 2대의 전용 네트워크 노드를 배치해 액티브-액티브 또는 액티브-스탠바이 클러스터를 구성한다.
6. CINDER — 블록 스토리지 서비스#
- 핵심 기능: 클라우드 인스턴스용 영구 블록 스토리지(클라우드 디스크)를 제공하며 동적 연결·분리·스냅샷·확장이 가능하다.
- 백엔드 연동 능력:
- 기존 스토리지 어레이 연동: 화웨이 OceanStor, IBM, EMC 등 하이엔드 하드웨어 스토리지;
- 오픈소스 분산 스토리지 연동: Ceph RBD, GlusterFS 등.
- 백엔드 메커니즘: 사용자가 클라우드 디스크를 신청하면 Cinder는 지시를 백엔드 스토리지 시스템으로 하위 전달하며, 본질적으로 물리/분산 스토리지 내에 LUN을 할당·매핑한다.
- 비교 설명: 객체 스토리지(예: 바이두 왕판, Swift, S3)는 블록 디바이스로 직접 포맷·마운트하여 클라우드 인스턴스 파일 시스템으로 쓸 수 없지만, Cinder 블록 디바이스는 직접 포맷해 마운트해 사용할 수 있다.
7. HEAT — 오케스트레이션 서비스#
- 핵심 기능: 선언형 템플릿(HOT 템플릿 또는 AWS CloudFormation 형식)을 기반으로 그래픽 오케스트레이션이나 스크립트를 통해 다수의 VM, 데이터베이스 클러스터, 네트워크 토폴로지, 모니터링 정책을 원클릭으로 자동 일괄 배포한다.
8. CEILOMETER — 계측 모니터링 서비스#
- 핵심 기능: 물리·가상 리소스의 성능 지표, 가동 시간, 사용량을 수집한다.
- 퍼블릭 클라우드 시나리오: API 호출량, 네트워크 송출량, 컴퓨트 시간을 기록하고 과금 시스템과 연동;
- 프라이빗 클라우드 시나리오: 테넌트 할당량 수준을 모니터링하고 리소스 과다 사용·유휴를 식별해 용량 계획을 지원한다.
9. KEYSTONE — 통합 인증 및 권한 부여 서비스#
- 핵심 기능: OpenStack 전체 보안의 초석으로, 플랫폼 전반의 테넌트(Project), 사용자(User), 역할(Role), 서비스 카탈로그, 토큰 인증을 담당한다.
- 엔터프라이즈 아이덴티티 연합:
- 기업의 기존 Windows Active Directory(AD) 또는 Linux OpenLDAP과 원활히 통합해 엔터프라이즈급 통합 계정 single sign-on(SSO)을 구현한다;
- 워크플로우 승인 및 권한 격리(화웨이 클라우드 예시):
- 클라우드 인스턴스 다단계 신청·승인 워크플로우 지원(최대 5단계 승인);
- “삼권 분립” 보안 원칙을 관철(보안 담당자, 시스템 관리자, 감사자가 권한을 분리해 관리);
- 고객사 자체 개발 OA/BPM 승인 흐름 시스템 연동을 지원한다.
핵심 컴포넌트 기능 요약표:#
| 컴포넌트 이름 |
코드 명칭 |
핵심 서비스 기능 |
| Horizon |
Dashboard |
통합 Web 그래픽 관리 콘솔 |
| Nova |
Compute |
컴퓨트 리소스 라이프사이클 및 인스턴스 스케줄링 관리 |
| Glance |
Image |
VM 이미지 스토리지 및 버전 등록 |
| Swift |
Object |
대규모 비정형 객체 스토리지 서비스 |
| Neutron |
Network |
소프트웨어 정의 네트워크(SDN), 라우팅 및 보안 그룹 관리 |
| Cinder |
Block |
클라우드 인스턴스 영구 블록 스토리지(클라우드 디스크) 관리 |
| Heat |
Orchestration |
인프라-as-Code(IaC) 다중 리소스 스택 오케스트레이션 |
| Ceilometer |
Metering |
리소스 사용량 통계, 모니터링 계량 및 할당량 분석 |
| Keystone |
Identity |
통합 신원 인증, 인가 토큰 및 서비스 카탈로그 관리 |
2. OpenStack 배포 계획(Victoria 에디션)#
1. 배포 방식 비교#
- 오픈소스 수동 배포: 컴포넌트를 하나씩 컴파일·설정—번거롭고 복잡하며 보통 기반 메커니즘 심층 학습용;
- 도구 기반 자동화 배포:
- Ansible 배포(예: OpenStack-Ansible, Kolla-Ansible);
- Packstack 배포: Red Hat가 오픈소스로 제공하는 Puppet 기반 자동화 신속 전달 도구(본 실전에서 채택);
2. 클러스터 노드 사양 및 네트워크 계획#
(1) Controller 제어 노드(1대)#
- 탑재 컴포넌트:
- API 서비스:
nova-api, cinder-api, glance-api, neutron-server 등;
- 기반 서비스: MariaDB / MySQL, RabbitMQ 메시지 큐, Memcached, Keystone;
- 네트워크 및 관리 서비스: 네트워크 노드 외부 라우팅 포워딩, 로컬 YUM 캐시, Chrony 시간 동기화 서버.
- 시스템 사양 요구:
- CPU: 4 vCPU 이상
- 메모리: 4GB 이상
- 디스크: 100GB 사용 가능 디스크 공간
- NIC: 네트워크 카드 3개(NIC 1은 인터넷 접속용 브릿지 모드, NIC 2·3은 호스트 전용 모드로 내부 트래픽)
- IP 주소 계획:
- 내부 관리 IP: 192.168.100.10
- 외부 접속 IP: 192.168.10.10
(2) Compute 컴퓨트 노드(1대)#
- 탑재 컴포넌트:
nova-compute, 네트워크 L2 Agent(Open vSwitch Agent)
- 시스템 사양 요구:
- CPU: 4 vCPU 이상
- 메모리: 8GB 이상(최소 4GB)
- 디스크: 100GB 디스크 공간
- NIC: 네트워크 카드 3개(전부 호스트 전용 모드)
- IP 주소 계획:
(3) YUM 저장소 서버 + Chrony 시간 동기화 서버(1대)#
- 시스템 사양 요구:
- CPU: 2 vCPU
- 메모리: 2GB
- NIC: 네트워크 카드 2개(하나는 인터넷 브릿지로 공개 시각 동기화 및 상위 저장소용, 다른 하나는 호스트 전용으로 내부 노드 제공)
- IP 주소 계획:
- 외부 IP: 192.168.10.11
- 내부 IP: 192.168.100.20
환경 하향 조정 안내: 개인용 컴퓨터 하드웨어 자원이 부족하면 최소 2대의 VM으로 압축할 수 있다(제어 노드를 YUM 소스 및 시간 동기화 서버로 겸용하고, 컴퓨트 노드 1대를 추가). 주의: 모든 노드의 시스템 시각은 매우 일치해야 하며 시계 드리프트는 5분을 초과해서는 안 된다. 그렇지 않으면 Keystone 핸드셰이크와 메시지 큐 통신이 완전히 실패한다.
3. OpenStack 자동화 배포 실전 절차#
단계 1: YUM 저장소 서버 및 Chrony 시간 동기화 서버 구축#
1. 네트워크 인터페이스 설정#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# 1. 내부 통신 NIC ens160 설정
[root@Cloud ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=none
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.100.20
PREFIX=24
# 2. 인터넷 연결용 NIC ens192 설정(공개 NTP 동기화용)
[root@Cloud ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens192
TYPE=Ethernet
BOOTPROTO=none
NAME=ens192
DEVICE=ens192
ONBOOT=yes
PROXY_METHOD=none
BROWSER_ONLY=no
IPADDR=192.168.10.11
PREFIX=24
GATEWAY=192.168.10.1
DNS1=192.168.10.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
UUID=03da7500-2101-c722-2438-d0d006c28c73
# 설정을 적용하기 위해 NIC 재시작
[root@Cloud ~]# nmcli connection down ens160 ; nmcli connection up ens160
Connection 'ens160' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1)
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
[root@Cloud ~]# nmcli connection down ens192 ; nmcli connection up ens192
Connection 'ens192' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
|
2. 로컬 CD-ROM YUM 저장소 설정#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[root@Cloud ~]# cd /etc/yum.repos.d/
[root@Cloud yum.repos.d]# mkdir bak
[root@Cloud yum.repos.d]# mv CentOS-Linux-* bak/
# OS 설치 ISO 마운트
mount /dev/cdrom /media/
# CD-ROM 로컬 저장소 설정 파일 작성
[root@Cloud ~]# cat > /etc/yum.repos.d/dvd.repo << 'EOF'
> [BaseOS]
> name=BaseOS
> baseurl=file:///media/BaseOS
> gpgcheck=0
>
> [AppStream]
> name=AppStream
> baseurl=file:///media/AppStream
> gpgcheck=0
> EOF
|
3. Chrony 시간 동기화 서버 설정#
OpenStack은 노드 간 시각 동기화 요구가 매우 엄격하므로 먼저 시간 소스를 설정한다:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# /etc/chrony.conf 편집
[root@Cloud ~]# vim /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
pool ntp.tencent.com iburst
# Allow NTP client access from local network.
allow 192.168.100.0/24
# Serve time even if not synchronized to a time source.
local stratum 10
# 시간 동기화 서비스 재시작 및 검증
[root@Cloud ~]# systemctl restart chronyd.service
[root@Cloud ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 106.55.184.199 2 6 17 2 -224us[ -144us] +/- 54ms
# 방화벽 및 SELinux 비활성화
[root@Cloud ~]# systemctl disable firewalld.service --now
[root@Cloud ~]# setenforce 0
[root@Cloud ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
|
4. httpd 기반 로컬 웹 YUM 저장소 구축#
CentOS 8 및 OpenStack Victoria 소프트웨어 저장소를 HTTP 미러 소스로 게시하여 모든 클러스터 노드가 가져오도록 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
# 1. Apache 웹 서비스 설치 및 시작
[root@Cloud ~]# yum -y install httpd
[root@Cloud ~]# systemctl enable httpd --now
# 2. 디렉터리 생성 및 이미지 파일 마운트
[root@Cloud ~]# mkdir /isos
[root@Cloud ~]# mkdir -p /var/www/html/centos8
[root@Cloud ~]# mkdir -p /var/www/html/openstack
# 베이스 시스템 CD 및 OpenStack Victoria 설치 이미지 마운트
[root@Cloud ~]# mount /dev/cdrom /var/www/html/centos8/
[root@Cloud ~]# mount /isos/26-CentOS8-4-OSP-Victoria.iso /var/www/html/openstack/
# 3. 마운트를 /etc/fstab에 영구 기록
[root@Cloud ~]# vim /etc/fstab
/dev/cdrom /var/www/html/centos8 iso9660 defaults 0 0
/isos/26-CentOS8-4-OSP-Victoria.iso /var/www/html/openstack iso9660 defaults 0 0
# 4. HTTP YUM 저장소 파일 설정
[root@Cloud ~]# vim /etc/yum.repos.d/dvd.repo
[BaseOS]
name=BaseOS
baseurl=http://192.168.100.20/centos8/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=http://192.168.100.20/centos8/AppStream
gpgcheck=0
[root@Cloud ~]# vim /etc/yum.repos.d/openstack.repo
[centos-advanced-virtualization]
name=centos-advanced-virtualization
baseurl=http://192.168.100.20/openstack/centos-advanced-virtualization
gpgcheck=0
[centos-nfv-openvswitch]
name=centos-nfv-openvswitch
baseurl=http://192.168.100.20/openstack/centos-nfv-openvswitch
gpgcheck=0
[centos-rabbitmq-38]
name=centos-rabbitmq-38
baseurl=http://192.168.100.20/openstack/centos-rabbitmq-38
gpgcheck=0
[PowerTools]
name=PowerTools
baseurl=http://192.168.100.20/openstack/PowerTools
gpgcheck=0
[centos-ceph-nautilus]
name=centos-ceph-nautilus
baseurl=http://192.168.100.20/openstack/centos-ceph-nautilus
gpgcheck=0
[centos-openstack-victoria]
name=centos-openstack-victoria
baseurl=http://192.168.100.20/openstack/centos-openstack-victoria
gpgcheck=0
[extras]
name=extras
baseurl=http://192.168.100.20/openstack/extras
gpgcheck=0
# 5. 작성한 repo 파일을 각 제어 노드와 컴퓨트 노드에 일괄 배포
[root@Cloud ~]# scp /etc/yum.repos.d/dvd.repo /etc/yum.repos.d/openstack.repo root@192.168.100.10:/etc/yum.repos.d/
[root@Cloud ~]# scp /etc/yum.repos.d/dvd.repo /etc/yum.repos.d/openstack.repo root@192.168.100.11:/etc/yum.repos.d/
|
단계 2: 클러스터 각 노드 시스템 환경 초기화#
1. Controller 제어 노드 초기화(192.168.100.10)#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# 1. 관리 네트워크 ens160 설정
[root@Controller ~]# nmcli connection modify ens160 ipv4.addresses 192.168.100.10/24 ipv4.method manual autoconnect yes
[root@Controller ~]# nmcli connection down ens160 ; nmcli connection up ens160
# 2. 외부 네트워크 NIC ens224 설정
[root@Controller ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens224
TYPE=Ethernet
BOOTPROTO=none
NAME=ens224
DEVICE=ens224
ONBOOT=yes
[root@Controller ~]# nmcli connection reload
[root@Controller ~]# nmcli connection modify ens224 ipv4.addresses 192.168.10.10/24 ipv4.gateway 192.168.10.1 ipv4.dns 192.168.10.1 ipv4.method manual autoconnect yes
[root@Controller ~]# nmcli connection down ens224 ; nmcli connection up ens224
# 3. Chrony NTP 클라이언트 설정
[root@Controller ~]# vim /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
pool 192.168.100.20 iburst
[root@Controller ~]# systemctl restart chronyd.service
[root@Controller ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.100.20 3 6 377 24 -22us[ -46us] +/- 43ms
# 4. 호스트명 설정
[root@Controller ~]# hostnamectl set-hostname Controller
# 5. 방화벽 및 SELinux 비활성화
[root@Controller ~]# systemctl disable firewalld.service --now
[root@Controller ~]# setenforce 0
[root@Controller ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
# 6. 클러스터 /etc/hosts 해석 설정
[root@Controller ~]# vim /etc/hosts
192.168.100.10 Controller
192.168.100.11 Compute
# 7. 기본 시스템 repo 캐시 정리
[root@Controller ~]# cd /etc/yum.repos.d
[root@Controller yum.repos.d]# mkdir -p bak && mv CentOS-Linux-* bak/
|
2. Compute 컴퓨트 노드 초기화(192.168.100.11)#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# 1. 관리 네트워크 설정
[root@Compute ~]# nmcli connection modify ens160 ipv4.addresses 192.168.100.11/24 ipv4.method manual autoconnect yes
[root@Compute ~]# nmcli connection down ens160 ; nmcli connection up ens160
# 2. Chrony NTP 클라이언트 설정
[root@Compute ~]# vim /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
pool 192.168.100.20 iburst
[root@Compute ~]# systemctl enable chronyd.service --now
# 3. 호스트명 설정
[root@Compute ~]# hostnamectl set-hostname Compute
# 4. 방화벽 및 SELinux 비활성화
[root@Compute ~]# systemctl disable firewalld.service --now
[root@Compute ~]# setenforce 0
[root@Compute ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
# 5. 클러스터 hosts 해석 설정
[root@Compute ~]# vim /etc/hosts
192.168.100.10 Controller
192.168.100.11 Compute
# 6. 기본 시스템 repo 정리
[root@Compute ~]# cd /etc/yum.repos.d
[root@Compute yum.repos.d]# mkdir -p bak && mv CentOS-Linux-* bak/
|
⚠️ 핵심 점검점: 이 시점에서 모든 VM을 종료하고 문제 발생 시 신속히 롤백할 수 있도록 통합 스냅샷을 촬영할 것을 권장한다.
단계 3: Packstack 자동화 응답 파일 배포#
1. Packstack 배포 도구 설치#
제어 노드(Controller)에서 실행:
1
|
[root@Controller ~]# yum -y install openstack-packstack
|
2. 기본 응답 파일 생성#
1
|
[root@Controller ~]# packstack --gen-answer-file=/root/answers.txt
|
네트워크 방식 설명: OpenStack Victoria는 OVN(Open Virtual Network)과 기존 OVS(Open vSwitch) 모두를 지원한다.
3. 응답 파일 파라미터 정밀 커스터마이징#
1
2
|
# 자동 감지된 외부 IP를 내부 관리 IP 192.168.100.10으로 일괄 치환
[root@Controller ~]# sed -i 's/192.168.10.10/192.168.100.10/g' /root/answers.txt
|
/root/answers.txt를 편집하고 다음 핵심 설정 항목을 확인·수정한다:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# 1. 컴퓨트 노드 클러스터 IP 목록 지정(쉼표 구분)
CONFIG_COMPUTE_HOSTS=192.168.100.11
# 2. Keystone 관리자 root 초기 비밀번호 설정
CONFIG_KEYSTONE_ADMIN_PW=000000
# 3. Demo 테넌트 네트워크 비활성화(프로덕션 규범)
CONFIG_PROVISION_DEMO=n
# 4. Heat 오케스트레이션 컴포넌트 지원 활성화
CONFIG_HEAT_INSTALL=y
# 5. Neutron 코어 드라이버 및 네트워크 유형 설정(ML2 + OVS)
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=geneve,flat,vxlan,vlan
CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch
CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vxlan
CONFIG_NEUTRON_L2_AGENT=openvswitch
# 6. OVS 외부 네트워크 브리지 바인딩 설정(물리 외부 NIC ens224 연결)
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=extnet:br-ex
CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:ens224
# 7. 사전 스토리지 할당량 용량 설정
CONFIG_SWIFT_STORAGE_SIZE=20G
CONFIG_CINDER_VOLUMES_SIZE=50G
|
⚠️ 핵심 점검점: 응답 파일 수정 후, 다시 모든 VM을 종료하고 스냅샷을 촬영할 것을 권장한다.
4. 원클릭 자동화 배포 실행#
전원 켠 후 제어 노드에서 배포 명령 실행:
1
|
[root@Controller ~]# packstack --answer-file=/root/answers.txt
|
배포 스크립트는 Puppet을 기반으로 모든 노드에서 소프트웨어 소스 설정, 데이터베이스 테이블 생성, 메시지 큐 클러스터 구축, 인증서 생성, 각 컴포넌트 협조 통합 테스트를 자동으로 완료한다. 완료되면 터미널에 Dashboard 로그인 URL과 keystonerc_admin 환경 변수 파일 경로를 출력한다.
4. Linux 시스템 로그 관리 및 OpenStack 장애 해결#
1. Linux Rsyslog 로그 레벨 및 설정 아키텍처#
Linux 시스템에서 시스템 하위 계층과 대부분의 서비스 로그는 rsyslog 데몬에 의해 중앙 집중 관리된다.
- 설정 파일 확인:
1
2
|
rpm -qc rsyslog
# 핵심 메인 설정 파일: /etc/rsyslog.conf
|
로그 규칙 구문 분석:#
1
|
서비스 유형(Facility).로그 레벨(Priority) 로그 저장 경로
|
일반적인 설정 예시:
1
2
3
4
5
6
7
8
9
|
# 1. 시스템 일반 메시지:
# 모든 서비스의 >=info 레벨 로그를 기록하되 메일, 인증 보안, cron 로그 제외
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# 2. 디버그 로그:
*.debug /var/log/debug
# 3. 오류 수준 로그:
*.err /var/log/error.log
|
- 구문 규칙 핵심 사항:
mail: 서비스 유형(Facility);
info: 로그 우선순위 레벨;
.: 이상(>=) 의 우선순위 로그 메시지에 일치함을 나타냄;
*.info: 모든 서비스의 >= info 레벨 로그가 대상 파일에 집계되어 기록됨을 의미한다.
실시간 동적 로그 모니터링 명령:#
1
2
3
4
5
|
# 시스템 로그 끝 출력 추적
tail /var/log/messages
# 실시간 로그 스트림 지속 수신
tail -f /var/log/messages
|
2. OpenStack 커스텀 서비스 로그 트러블슈팅 가이드#
트러블슈팅 원칙: 각 컴포넌트는 보통 독립적인 커스텀 로그 파일 체계(/var/log/<컴포넌트명>/ 하위)를 갖는다. 컴포넌트에 이상이 있으면 먼저 해당 컴포넌트 전용 로그를 확인하고, 커스텀 로그가 없을 때만 시스템 전역 로그 /var/log/messages로 돌아가 확인한다.
실전 사례: Neutron 네트워크 서비스 장애 위치 확인#
배포 또는 운영 중 가상 네트워크 생성이 실패하거나 OVS 포트가 올라오지 않으면, 정규식 매칭으로 오류와 경고를 직접 포착할 수 있다:
1
2
3
4
5
|
# 1. 모든 Neutron 로그에서 정규식으로 오류·경고 필터링
tail -f /var/log/neutron/*.log | grep -iE '(err|warn)'
# 2. neutron-server 핵심 API 서비스 로그를 심층 확인하고 매칭 항목 전후 3줄 컨텍스트 출력:
tail -f /var/log/neutron/server.log | grep -iE -A3 -B3 '(err|warn)'
|
파라미터 설명:
-i: 대소문자 무시;
-E: 확장 정규식 매칭 (err|warn) 활성화;
-A 3 (After): 매칭 행 이후 3줄 출력;
-B 3 (Before): 매칭 행 이전 3줄 출력.