실제 물리 서버를 이용한 OpenStack 구축(1) : 환경 설정

NOHHYEONGJUN·2025년 2월 21일

OpenStack

목록 보기
5/23
post-thumbnail

1. IP 설정

Provider Network와 ManageMent Network의 IP를 할당하겠다.

Controller와 Compute를 이 글에서는 con01, com01 으로 사용할 것이다.

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


 

 


오픈스택 가이드의 예제 네트워크 구조이다.

Management Network는 가이드와 같도록 진행하는 것을 추천한다.
(10, 20, 30, 40.. 으로 나누어 Scalability를 보장한다.)

하지만 이 글에서는 con0110.0.0.1 , com0110.0.0.2 로 진행한다.

본인의 상황에 맞게 잘 선택해서 진행하면 된다.


 

 


1. con01

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를 분리해야 한다.


2. com01

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

 

 


2. Management Network 통신 확인

1. con01

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

 

2. com01

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

 

 


3. SSH 설정

각 서버에 접속해 설정해야하므로, ssh 보안 설정을 진행한다.

1. con01 , com01

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

 

 


4. sudo 설정

편의 상, ubuntu 계정으로 루트 권한 진입할 때 비밀번호를 묻지 않도록 한다.

1. con01, com01

최하단에 추가한다.

sudo vi /etc/sudoers

ubuntu ALL=(ALL:ALL) NOPASSWD:ALL

 

 


5. 미러 사이트 변경

패키지 설치 등을 보다 고속으로 진행하기 위해 국내 사이트로 변경한다.

1. con01, com01

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

 

 


6. 시간대 설정

시간대를 서울로 설정한다.

1. con01, com01

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

 

 


7. 필요 유틸리티 설치 및 패키지 업그레이드

필요한 유틸리티를 설치하고 패키지를 업그레이드한다.

1. con01, com01

apt install -y lrzsz net-tools zip bzip2 make gcc perl
apt upgrade -y

reboot

분홍색 박스에서 OK를 선택한다.


 

 


8. 커널 버전 자동 업데이트 금지, 보안 업데이트 자동 수행 설정

커널 버전 변경 시 의도된 동작이 바뀔 수 있으므로 자동 업데이트를 금지한다.

1. con01, com01

sudo -s
apt-mark hold $(uname -r)
apt install unattended-upgrades
dpkg-reconfigure unattended-upgrades

분홍색 박스에서 OK를 선택한다.


 

 


9. NFS 설정

여러 노드들이 파일을 공유하기 위해 설정한다.

1. con01

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

2. com01

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

 

 


10. hosts 파일 수정

IP를 이름으로 사용할 수 있도록 설정한다.

1. con01

vi /etc/hosts

# 127.0.0.1 con01
10.0.0.1 con01
10.0.0.2 com01

cp /etc/hosts /nfs

 

 


11. fstab 수정

부팅 시, 자동 마운트가 아닌 수동 마운트로 설정한다.
(마운트 불가 시, 부팅이 안되거나 느려지는 문제 방지)

1. com01

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/

 

 


12. hosts 설정 확인

IP 주소 대신 이름으로 연결 가능한지 확인한다.

1. con01, com01

ping com01

ping con01

profile
Cloud/DevOps & Network Virtualization에 관심 있는 Engineer입니다. 🐳⚓️👨‍✈️

0개의 댓글