
Provider Network와 ManageMent Network의 IP를 할당하겠다.
Controller와 Compute를 이 글에서는 con01, com01 으로 사용할 것이다.
학습을 위해 진행해보는 것이면
Controller,Compute로 진행하는 것을 추천하며,
실제 운영 환경으로 사용할 것이면con01,com01처럼 확장 가능한 호스트명으로 사용할 것을 추천한다.
(OpenStack Installation을 바탕으로 진행하며, 가이드에서는 Controller, Compute로 사용한다.)

오픈스택 가이드의 예제 네트워크 구조이다.
Management Network는 가이드와 같도록 진행하는 것을 추천한다.
(10, 20, 30, 40.. 으로 나누어 Scalability를 보장한다.)
하지만 이 글에서는 con01은 10.0.0.1 , com01은 10.0.0.2 로 진행한다.
본인의 상황에 맞게 잘 선택해서 진행하면 된다.
ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether -----------------------------
3: enp4s0f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether -----------------------------
4: enp4s0f1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether -----------------------------
5: enp4s0f2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether -----------------------------
6: enp4s0f3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether -----------------------------
물리 인터페이스가 2개 이상 있어야 한다.
cd /etc/netplan/
ls
00-installer-config.yaml
sudo vi 00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
enp3s0:
addresses:
- 192.168.1.23/24
nameservers:
addresses:
- 8.8.8.8
search: []
routes:
- to: default
via: 192.168.1.1
enp4s0f0:
addresses:
- 10.0.0.1/24 # Controller = 10.0.0.1 할당
version: 2
netplan apply
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether -----------------------------
inet 192.168.1.23/24 brd 192.168.1.255 scope global enp3s0
valid_lft forever preferred_lft forever
inet6 fe80::----------------------------- scope link
valid_lft forever preferred_lft forever
3: enp4s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether -----------------------------
inet 10.0.0.1/24 brd 10.0.0.255 scope global enp4s0f0
valid_lft forever preferred_lft forever
inet6 ----------------------------- scope link
valid_lft forever preferred_lft forever
4: enp4s0f1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether -----------------------------
5: enp4s0f2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether -----------------------------
6: enp4s0f3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether -----------------------------
Provider Network, Management Network 각각에 IP를 할당했다.
실제 스위치를 이용해 Management Network를 분리해야 한다.
ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp1s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether -----------------------------
3: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether -----------------------------
altname enp0s31f6
con01과 동일하게 진행한다.
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether -----------------------------
inet 10.0.0.2/24 brd 10.0.0.255 scope global enp1s0
valid_lft forever preferred_lft forever
inet6 -----------------------------
valid_lft forever preferred_lft forever
3: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether -----------------------------
altname enp0s31f6
inet 192.168.1.24/24 brd 192.168.1.255 scope global eno1
valid_lft forever preferred_lft forever
inet6 -----------------------------
valid_lft forever preferred_lft forever
ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.301 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.251 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.248 ms
64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=0.249 ms
64 bytes from 10.0.0.2: icmp_seq=5 ttl=64 time=0.254 ms
ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.301 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.251 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.248 ms
64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=0.249 ms
64 bytes from 10.0.0.1: icmp_seq=5 ttl=64 time=0.254 ms
각 서버에 접속해 설정해야하므로, ssh 보안 설정을 진행한다.
sudo vi /etc/ssh/sshd_config
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin no
Port <원하는 포트 번호>
sudo systemctl restart sshd
포트도 다른 값으로 변경해준다.
(22번 그대로 사용 시, 보안에 취약하다.)
설정 후에도 password로 접속이 가능한 문제 발생 시
sudo grep -i passwordauthentication /etc/ssh/sshd_config.d/*
PasswordAuthentication yes
cd /etc/ssh/sshd_config.d/
ls
50-cloud-init.conf
sudo vi 50-cloud-init.conf
PasswordAuthentication no
sudo systemctl restart sshd
sudo grep -i passwordauthentication /etc/ssh/sshd_config.d/*
PasswordAuthentication no
편의 상, ubuntu 계정으로 루트 권한 진입할 때 비밀번호를 묻지 않도록 한다.
최하단에 추가한다.
sudo vi /etc/sudoers
ubuntu ALL=(ALL:ALL) NOPASSWD:ALL
패키지 설치 등을 보다 고속으로 진행하기 위해 국내 사이트로 변경한다.
sudo -s
cd /etc/apt
cp sources.list sources.list.v1
sed -i 's/http:\/\/kr.archive.ubuntu.com/https:\/\/ftp.kaist.ac.kr/g' /etc/apt/sources.list
apt update
시간대를 서울로 설정한다.
timedatectl set-timezone Asia/Seoul; timedatectl
Local time: Wed 2025-02-19 13:25:14 KST
Universal time: Wed 2025-02-19 04:25:14 UTC
RTC time: Wed 2025-02-19 04:25:14
Time zone: Asia/Seoul (KST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
필요한 유틸리티를 설치하고 패키지를 업그레이드한다.
apt install -y lrzsz net-tools zip bzip2 make gcc perl
apt upgrade -y
reboot
분홍색 박스에서 OK를 선택한다.
커널 버전 변경 시 의도된 동작이 바뀔 수 있으므로 자동 업데이트를 금지한다.
sudo -s
apt-mark hold $(uname -r)
apt install unattended-upgrades
dpkg-reconfigure unattended-upgrades
분홍색 박스에서 OK를 선택한다.
여러 노드들이 파일을 공유하기 위해 설정한다.
sudo -s
apt install -y nfs-kernel-server nfs-common
mkdir -p /nfs/
chown nobody:nogroup /nfs
vi /etc/exports
/nfs 10.0.0.0/24(rw,all_squash,sync,no_subtree_check)
exportfs -avr
exporting 10.0.0.0/24:/nfs
apt install -y nfs-common
showmount -e 10.0.0.1
Export list for 10.0.0.1:
/nfs 10.0.0.0/24
mkdir -p /nfs
마운트 안되었을 시
sudo mount 10.0.0.1:/nfs /nfs
IP를 이름으로 사용할 수 있도록 설정한다.
vi /etc/hosts
# 127.0.0.1 con01
10.0.0.1 con01
10.0.0.2 com01
cp /etc/hosts /nfs
부팅 시, 자동 마운트가 아닌 수동 마운트로 설정한다.
(마운트 불가 시, 부팅이 안되거나 느려지는 문제 방지)
vi /etc/fstab
10.0.0.1:/nfs /nfs nfs noauto 0 0
mount /nfs
ls -al /nfs
total 12
drwxr-xr-x 2 nobody nogroup 4096 Feb 19 13:47 .
drwxr-xr-x 21 root root 4096 Feb 19 13:55 ..
-rw-r--r-- 1 root root 343 Feb 19 13:47 hosts
cp /nfs/hosts/ /etc/
IP 주소 대신 이름으로 연결 가능한지 확인한다.
ping com01
ping con01