Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 69 additions & 0 deletions lectures/ch2/ch2_4_10_lec.qmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
---
title: "2-4장. SQL Database (MariaDB/MySQL)"
---

# 5. **SQL Database (MariaDB/MySQL)**

### **공식 문서**

- 환경 > SQL DB (Ubuntu):

https://docs.openstack.org/ko_KR/install-guide/environment-sql-database-ubuntu.html


[개념 정리]

- 거의 모든 OpenStack 서비스 상태가 **공통 DB(보통 controller)** 에 쌓임.
- 여기서는 **MariaDB**를 controller에 설치하고,

**bind-address를 controller 관리 IP(10.100.100.11)** 로 맞춰줌.


### **5-1. controller 노드에서만**

### **① 패키지 설치**

```yaml
apt install -y mariadb-server python3-pymysql
```

### **② 설정 파일 생성**

문서 기준 경로: /etc/mysql/mariadb.conf.d/99-openstack.cnf

```yaml
cat >/etc/mysql/mariadb.conf.d/99-openstack.cnf << 'EOF'
[mysqld]
bind-address = 10.100.100.11

default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
EOF
```

여기서 bind-address 를 **문서의 10.0.0.11 대신 10.100.100.11** 로 바꿔준 것만 주의.

**③ 서비스 재시작 + secure 설치**

```yaml
service mysql restart

mysql_secure_installation
# 여기서 DB root 암호 = 아까 Security 단계에서 적어둔 DB_ROOT_PASS

# 질문에 대한 답변
Set root password? [Y/n] -> Y
New password: -> DB_ROOT_PASS
Remove anonymous users? [Y/n] -> Y
Disallow root login remotely? [Y/n] -> Y (원격 root 필요 없음)
Remove test database and access to it? [Y/n] -> Y
Reload privilege tables now? [Y/n] -> Y
```

> 요 단계가 끝나면, 나중에 각 서비스 설치할 때
mysql -u root -p 로 DB 만들고, KEYSTONE_DBPASS 같은 걸 써서 계정 만들어 줄 수 있음.
>

47 changes: 47 additions & 0 deletions lectures/ch2/ch2_4_11_lec.qmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
title: "2-4장. Message Queue (RabbitMQ)"
---

# 6. **Message Queue (RabbitMQ)**

### **공식 문서**

- 환경 > 메시지 큐 > Ubuntu:

https://docs.openstack.org/ko_KR/install-guide/environment-messaging-ubuntu.html


[개념 정리]

- 서비스들 사이에서 “이 작업 해라 / 결과 이렇다” 같은 걸

중앙에서 중계하는 **버스** 역할. RabbitMQ 사용.

- 보통 controller에만 띄우고, 각 서비스 transport_url 에 접속 정보 넣는다.

### **controller에서만**

```yaml
apt install -y rabbitmq-server
```

1. 사용자 **`openstack`** 을 추가한다:

```yaml
rabbitmqctl add_user openstack RABBIT_PASS
`Creating user "openstack" ...
**RABBIT_PASS**`적절한 비밀번호로 바꾸세요 .
```

1. 사용자 **`openstack`** 에게 구성/쓰기/읽기 권한을 부여한다.

```yaml
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

Setting permissions for user "openstack" in vhost "/" ...
```

> 나중에 keystone/nova/neutron 설정할 때
transport_url = rabbit://openstack:RABBIT_PASS@controller
이런 식으로 계속 재사용함.
>
46 changes: 46 additions & 0 deletions lectures/ch2/ch2_4_12_lec.qmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
title: "2-4장. Memcached"
---

# 7. **Memcached**

### **공식 문서**

- Memcached (Ubuntu): https://docs.openstack.org/install-guide/environment-memcached-ubuntu.html

[개념 정리]

- Keystone 토큰/세션 같은 걸 메모리에 캐싱해서 성능 올리는 용도.
- controller에만 두고, 다른 노드들이 여기에 붙는다.

### **controller에서만**

### **① 패키지 설치**

```yaml
apt install -y memcached python3-memcache
```

### **② bind 주소를 관리망 IP로 변경**

/etc/memcached.conf 편집:

![image.png](images/ch2_4_img_01.png)

```yaml
# 원래는 -l 127.0.0.1 이런 줄이 있음
# 그 줄을 아래처럼 교체
-l 10.100.100.11
```

**③ 재시작**

```yaml
service memcached restart
```

> 이렇게 하면 compute 같은 다른 노드에서도
10.100.100.11:11211 으로 Keystone 캐시를 공유하게 된다.
>

---
62 changes: 62 additions & 0 deletions lectures/ch2/ch2_4_13_lec.qmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
title: "2-4장. Etcd"
---

# **8. Etcd**

### **공식 문서**

- Etcd (Ubuntu): https://docs.openstack.org/install-guide/environment-etcd-ubuntu.html

[개념 정리]

- Nova/Neutron 등에서 **분산 락 / 서비스 상태 / 설정** 등을 저장하는

경량 key-value 스토어.

- 역시 controller에 하나만 띄우는 구조.

### **controller에서만 (Ubuntu 24.04 기준)**

### **① 패키지 설치**

```
apt install -y etcd-server
```

(Ubuntu 24.04는 etcd-server 패키지 이름이 맞다고 문서에 명시.)

**②/etc/default/etcd 수정**

문서 예제에서 10.0.0.11 되어 있는 부분을 **10.100.100.11** 로 바꿔서 넣어주면 됨:

초기 파일은 아래와 같은 형태다. 기존 내용을 확인한 뒤, 아래 설정을 추가한다.

![image.png](images/ch2_4_img_02.png)

```
cat >/etc/default/etcd << 'EOF'
ETCD_NAME="controller"
ETCD_DATA_DIR="/var/lib/etcd"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"

ETCD_INITIAL_CLUSTER="controller=http://10.100.100.11:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.100.100.11:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.100.100.11:2379"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://10.100.100.11:2379"
EOF
```

![image.png](images/ch2_4_img_03.png)

### **③ 서비스 enable + 재시작**

```
systemctl enable etcd
systemctl restart etcd
systemctl status etcd #상태확인
```

---
20 changes: 20 additions & 0 deletions lectures/ch2/ch2_4_14_lec.qmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
title: "2-4장. 여기까지 체크 포인트"
---

## **여기까지 체크 포인트**

이제 환경 챕터 기준으로는:

- Security – 비밀번호 변수 정의, 랜덤 암호 준비
- Host networking – controller/compute IP/라우팅/hosts 설정
- NTP – chrony로 시간 동기화
- OpenStack packages – cloud-archive:epoxy 활성화 + openstackclient 설치
- SQL DB – controller에 MariaDB 설치 + bind-address 10.100.100.11
- Message queue – controller에 RabbitMQ + openstack 유저 생성
- Memcached – controller에 설치, 10.100.100.11 로 바인딩
- Etcd – controller에 etcd-server 설정

이 상태면 설치 가이드 목차에서 다음으로

**“OpenStack 서비스 설치(Install OpenStack services)” → Minimal deployment for 2025.1 (Epoxy)** 단계로 진행한다.
37 changes: 37 additions & 0 deletions lectures/ch2/ch2_4_15_lec.qmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
title: "2-4장. Epoxy 버전 OpenStack 서비스 설치 순서"
---

# 9. 이제 본격적으로 에폭시 버전 오픈스택 설치!

https://docs.openstack.org/install-guide/openstack-services.html

**OpenStack 서비스 설치 (Epoxy)**

### **Epoxy 최소 구성 설치 순서 (공식)**

1. Identity – **Keystone** 설치
2. Image – **Glance** 설치
3. **Placement** 설치
4. Compute – **Nova** 설치
5. Networking – **Neutron** 설치

그 다음 권장 컴포넌트는 Horizon(대시보드), Cinder(블록스토리지)이다.

이번 답변에서는 **1번 Keystone을 공식 문서 순서대로** 순서대로 진행한다

(Keystone까지 완전히 돼야 Glance/Nova/Neutron에서 openstack CLI가 제대로 먹음.)

---

[Keystone 설치](ch2_4_17_lec.qmd)

[Glance 설치](ch2_4_18_lec.qmd)

[Placement](ch2_4_19_lec.qmd)

[Nova](ch2_4_20_lec.qmd)

[Neutron](ch2_4_21_lec.qmd)

[Horizon](ch2_4_22_lec.qmd)
24 changes: 24 additions & 0 deletions lectures/ch2/ch2_4_16_lec.qmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
title: "2-4장. 최종 확인"
---

# 10. 최종확인

```bash
source /root/admin-openrc.sh

# Nova / compute 상태
openstack compute service list
openstack hypervisor list

# Neutron 에이전트 상태
openstack network agent list

# 이미지 / flavor / 네트워크가 있는지
openstack image list
openstack flavor list
openstack network list
```

![image.png](images/ch2_4_img_04.png)

Loading