Virtualization & Cloud

  1. File > export to OVF…
  2. 내보내기

———————————————————————————————————————————

  • Workstation, Esxi 간의 버전이 맞지 않을 경우 복원이 되지 않는다.
    • 버전을 동일하게 하려면 해당 작업을 진행 한다.
  1. VM > Mange > Chage Haredware Compatibility…
  2. 데이터 저장 경로 지정

3. 버전과 동일하게 생성된 것을 OVF 내보내기 한다.

  • Esxi 새 가상 시스템에서 OVF 파일을 가져오기 하여 진행 한다.

오픈스택(OpenStack)은 클라우드 컴퓨팅 환경을 구축하고 관리하기 위한 오픈 소스 소프트웨어 플랫폼이다. 이를 통해 프라이빗 클라우드 또는 퍼블릭 클라우드 환경을 구축할 수 있으며, 오픈스택은 서버, 네트워크, 스토리지 등의 자원을 가상화하여 사용자가 필요한 만큼 할당하고 관리할 수 있도록 해준다.

———————————————————————————————————————————

  • Rocky 9.4

———————————————————————————————————————————

  • 필수 패키지 설치
dnf update -y
dnf install -y git wget python3-devel python3-pip
  • devStack 클론
useradd -s /bin/bash -d /opt/stack -m stack
  • stack 패스워드 설정
passwd stack

# 패스워드 설정
  • 사용자 전환
su - stack
  • devstack 클론
git clone https://opendev.org/openstack/devstack

cd devstack
  • 설치 설정 파일 작성
vim /opt/stack/devstack/local.conf
[[local|localrc]]
ADMIN_PASSWORD=test
DATABASE_PASSWORD=test
RABBIT_PASSWORD=test
SERVICE_PASSWORD=test
HOST_IP=192.168.1.119
#
enable_service n-cpu
enable_service n-net
enable_service n-api
enable_service n-cond
enable_service n-sch
enable_service n-novnc
enable_service horizon
enable_service q-svc
enable_service q-dhcp
enable_service q-meta
enable_service neutron
#
disable_service q-agt
disable_service q-l3
  • 권한 변경
chown -R stack:stack /opt/stack

chmod -R 755 /opt/stack
  • 설치 실행
./stack.sh

  • 콘솔 컨트롤 가능

local <–> host 통신을 위한 설정

  • 가상 스위치 만들기
  • 네트워크 설정에서 공유
  • 네트워크 상태 확인

Apache, Tomcat 연동 (소스 설치)

  • KTCloud 서버 생성

WEB 서버 설정

  • 종속성 설치
yum -y install wget gcc gcc-c++ make pcre-devel openssl-devel expat-devel httpd-devel
  • 설치 파일 다운로드
  • APR = APR-UTIL 다운로드
https://apr.apache.org/download.cgi
  • PCRE 다운로드
https://www.pcre.org
  • 아파치 다운로드
https://httpd.apache.org/download.cgi
wget https://archive.apache.org/dist/httpd/httpd-2.4.4.tar.gz
     - 다운로드 경로는 /usr/local/src 진행
   
wget https://archive.apache.org/dist/apr/apr-1.5.0.tar.gz
     - 설치된 경로 /httpd/srclib 다운르도 및 압축 해제

wget https://archive.apache.org/dist/apr/apr-util-1.5.1.tar.gz
     - 설치된 경로 /httpd/srclib 다운로드 및 압축 해제
   
wget https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz
     - 설치된 경로 /httpd/srclib 다운로드 및 압축 해제
  • APR configure
cd /usr/local/src/httpd(설치한버전)/srclib/apr-(설치한버전)

./configure --prefix=/usr/local/src/httpd-??/srclib/apr-??

make && make install
  • APR-UTIL configure
cd /usr/local/src/httpd(설치한버전)/srclib/apr-util(설치한버전)

./configure --prefix=/usr/local/src/httpd-??/srclib/apr-util --with-apr=/usr/local/src/httpd-??/srclib/apr-??

make && make install
  • PCRE configure
cd /usr/local/src/httpd(설치한버전)/srclib/pcre-(설치한버전)

./configure --prefix=/usr/local/src/httpd-??/srclib/prce-??

make && make install
  • HTTPD configure
cd /usr/local/src/httpd(설치한버전)

./configure –prefix=/usr/local/src/apache --with-apr=/usr/local/src/httpd-??/srclib/apr-?? --with-apr-util=/usr/local/src/httpd-??/srclib/apr-util --with-pcre=/usr/local/src/httpd-??/srclib/pcre-??

make && make install

# 설치된 httpd configure 진행이 아닌 새로운 디렉토리를 생성하여 configure 진행
  • /usr/local/src/apache/bin 경로 이동하여 apache 실행
./apachectl -v start
  • 프로세스 확인
ps -ef | grep -i apache

curl localhost

WAS 서버 설정

  • JDK 설치 (설치 가능한 jdk 확인)
yum list java*jdk-devel

yum list | grep java 
  • tomcat 설치
# yum 설치로 선택
  • 설치된 버전 확인
java -version

javac -version
  • 프로파일 설정
vim /etc/profile
source /etc/profile

# 소스 적용
  • server.xml 설정
vim /usr/local/src/apache-tomcat-??/conf/server.xml
  • 톰캣 실행
/usr/local/tomcat8/apache-tomcat-8.5.84/bin

./startup.sh
  • MOD_JK 설치 (아파치 서버)
# 톰캣 커텍터 다운로드
http://tomcat.apache.org/download-connectors.cgi

wget https://dlcdn.apache.org/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.48-src.tar.gz

# 경로는 /usr/local/src 다운로드 후 압축 해제
  • configure 설정
cd /usr/local/src/tomcat-connectors-(설치한버전)/native

configure –with-apxs=/apache(아파치 설치 경로)/bin/apxs
 
make && make install
  • MOD_JK 설치 확인
/usr/local/apache/modules
  • httpd.conf 수정
    • 맨 하단에 기입
vim /usr/local/src/apache/conf/httpd.conf
  • 461 라인 주석 제거
  • workers.properties 생성
vim /usr/local/src/apache/conf/workers.properties
  • localhost 설정
    • vim /usr/local/src/apache/conf/extra/httpd-vhosts.conf
# 아파치 및 톰캣 실행

아파치(서버) 설치경로 /bin에서 ./apachectl start
톰캣(서버) 설치경로 /bin에서 ./startup.sh start 

공인 IP를 설정하여 ssunmini.com 통신 설정

  • 패스스루 하여 공인 ip 설정
  • proxmox shell 접속
    • proxmox는 데비안
    • manual 부분을 dhcp 로 변경
vi /etc/network/interfaces

auto vmbr2
iface vmbr2 inet manual   #dhcp
        bridge-ports ???????
        bridge-stp off
        bridge-fd 0
  • 통신 확인
[root@node1 date]# ifconfig


test: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 211.219.146.224  
        
test2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.23  

  • 현재 사용 중인 Proxmox Server 사양
    • E5-2650 v4
    • ECC Ram 32GB

작성 준비중

  • 웹 서비스의 가용성을 확보하기 위한 로드 밸런서를 구성
    Product & Services > Networking > Load Balancer 를 선택. 그리고 상단의 + 로드 밸런서 생성선택
    선택 항목 중, 애플리케이션 로드밸런서 생성을 클릭
  • 로드밸런서 설정
    • 로드 밸런서 이름: test-lb
      Network : Public IP
      부하 처리 성능: Small
      대상 VPC : test1-vpc
      서브넷 선택: KR-2 / test1-vpc-lb-sub1
  • Target Group 선택 전체 서버 리스트에서 test1-org1과 test1-org2를 적용서버 항목으로 추가
  • 정상적으로 적용이 되면 다음과 같이 상태는 운영 중으로 나오게 된다.
    • 로드 밸런서에 접속하기 위해서는 접속정보 항목(도메인 이름)을 복사하여 웹 브라우저 주소창에 입력해야 한다.
  • 웹 브라우저에서 접속하여 새로고침을 누르면, LB 기능으로 인해 test1-org1 과 test1-org2 서버에 분산되어 접속하게 되는 것을 확인할 수 있다.

  • 초기화 스크립트
    Product & Services > Server > Init Script > + Script 생성 선택
  • 스크립트 이름 : test-script
  • OS 타입 : Linux
    Sciprt 항목 내용에 Box의 내용을 복사하여 붙여넣음
    스크립트의 내용은 서버 부팅 후 아파치 웹서버와 PHP를 설치하고 테스트 페이지를 다운받은 후, 설정 내용을 수정 후 아파치 웹서버를 기동하는 스크립트
#!/bin/bash
Wget -O /etc/yum.repos.d/Rocky-Extras.repo
http://init.ncloud.com/server/linux/repo/rocky8/Rocky-Extras.repo
yum clean all

yum -y install httpd php mariadb-server php-mysqlnd
sleep 60
cd /var/www/html

wget https://kr.object.ncloudstorage.com/ncp-manual/handson/lab.tgz

tar xvfz lab.tgz

/usr/bin/cp -rf php.conf /etc/httpd/conf.d/php.conf
/usr/bin/cp -rf www.conf /etc/php-fpm.d/www.conf

systemctl enable mariadb
systemctl enable httpd
systemctl enable php-fpm

systemctl start mariadb
systemctl start httpd
systemctl start php-fpm

구성: Rocky Linux 9.6 에 Kolla-Ansible로 OpenStack 설치.
네트워크: 내부망 ens18, 외부망 ens19 → 수동IP + Floating IP 구성
지원: CLI 및 Horizon 완벽 연동


1. OS 및 환경 준비

1.1 패키지 설치 및 Docker 구성

dnf update -y
dnf install -y epel-release git vim python3 python3-pip python3-devel gcc libffi-devel \
  openssl-devel libselinux-python3 ansible lvm2 chrony bash-completion dnf-plugins-core

dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y docker-ce docker-ce-cli containerd.io
systemctl enable --now docker

1.2 네트워크 커널 파라미터 설정

cat <<EOF | tee /etc/sysctl.d/99-openstack.conf
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
EOF

sysctl --system
modprobe br_netfilter

2. Kolla-Ansible 설치 및 구성

2.1 Python 가상환경 및 Kolla 설치

python3 -m venv /root/kolla-venv
source /root/kolla-venv/bin/activate
pip install --upgrade pip wheel

git clone https://opendev.org/openstack/kolla-ansible
cd kolla-ansible
git checkout stable/2024.1
pip install -r requirements.txt
pip install .

2.2 Kolla 설정 디렉토리 준비

mkdir -p /etc/kolla
cp -r etc/kolla/* /etc/kolla/
cp -r ansible/inventory/* /etc/kolla/
kolla-genpwd

2.3 /etc/kolla/globals.yml 예시

kolla_base_distro: "rocky"
kolla_install_type: "source"
openstack_release: "2024.1"

network_interface: "ens18"
neutron_external_interface: "ens19"

enable_openvswitch: "yes"
neutron_plugin_agent: "openvswitch"

enable_haproxy: "no"
enable_heat: "yes"
enable_cinder: "no"
kolla_internal_vip_address: "192.168.1.63"
enable_nova_libvirt: "yes"
nova_compute_virt_type: "kvm"
libvirt_type: "kvm"

2.4 외부 NIC(ens19) 비활성화

nmcli connection add type ethernet ifname ens19 con-name ens19 ipv4.method disabled ipv6.method ignore
nmcli connection up ens19
ip a show ens19  # inet 없음 확인

2.5 Kolla-Ansible 배포

source /root/kolla-venv/bin/activate
cd /etc/kolla
ansible-galaxy install -r /root/kolla-ansible/requirements.yml

kolla-ansible -i ./all-in-one bootstrap-servers
kolla-ansible -i ./all-in-one prechecks
kolla-ansible -i ./all-in-one deploy
kolla-ansible post-deploy
source /etc/kolla/admin-openrc.sh

3. OpenStack 리소스 설정 (네트워크, 이미지, 인스턴스 등)

3.1 키페어 / 보안그룹 설정

openstack keypair create mykey > mykey.pem
chmod 600 mykey.pem

openstack security group rule create default --protocol icmp
openstack security group rule create default --protocol tcp --dst-port 22

3.2 외부/내부 네트워크 구성

openstack network create external-net \
  --provider-network-type flat \
  --provider-physical-network physnet1 \
  --external --share

openstack subnet create external-subnet \
  --network external-net \
  --subnet-range 192.168.1.0/24 \
  --gateway 192.168.1.1 \
  --allocation-pool start=192.168.1.105,end=192.168.1.200 \
  --dns-nameserver 8.8.8.8 --no-dhcp

openstack network create internal-net

openstack subnet create internal-subnet \
  --network internal-net \
  --subnet-range 10.0.0.0/24 \
  --gateway 10.0.0.1 \
  --dns-nameserver 8.8.8.8

openstack router create my-router
openstack router set my-router --external-gateway external-net
openstack router add subnet my-router internal-subnet

3.3 이미지 업로드 / Flavor 생성

openstack image create "rocky9.6-cli" \
  --disk-format qcow2 \
  --container-format bare \
  --file Rocky-9-GenericCloud-Base.latest.x86_64.qcow2 \
  --public

openstack flavor create m1.small  --vcpus 1 --ram 2048  --disk 20
openstack flavor create m1.medium --vcpus 2 --ram 4096  --disk 40
openstack flavor create m1.large  --vcpus 4 --ram 8192  --disk 80

4. 인스턴스 생성 및 Floating IP 연동

4.1 유동 IP (DHCP)

openstack server create rocky9.6-medium \
  --image rocky9.6-cli \
  --flavor m1.medium \
  --nic net-id=<internal-net-ID> \
  --key-name mykey \
  --security-group default

4.2 고정 IP (수동 지정)

openstack port create \
  --network <internal-net-ID> \
  --fixed-ip ip-address=<원하는-IP> \
  my-fixed-port

openstack server create rocky9.6-medium \
  --image rocky9.6-cli \
  --flavor m1.medium \
  --nic port-id=<my-fixed-port-ID> \
  --key-name mykey \
  --security-group default

4.3 Floating IP 연결

# CLI
openstack floating ip create external-net
openstack server add floating ip <인스턴스명> <Floating IP>
# Horizon
1. 인스턴스 → 작업 → 유동 IP 연결
2. 사용 가능 IP 선택 or 생성
3. 내부 IP + Floating IP 모두 표시되면 성공

5. 점검 및 운영

인스턴스 / 네트워크 상태 확인

openstack server list
openstack server show <인스턴스명>
openstack port list --network internal-net
openstack network agent list
docker logs nova_compute
docker logs neutron_server

SSH 접속

ssh -i mykey.pem rocky@<Floating-IP>

요약

항목내용
OSRocky Linux 9.6
설치Kolla-Ansible (2024.1)
설치형태단일 노드 (All-in-One)
주요 인터페이스ens18 (내부망), ens19 (외부망)
지원 기능Floating IP, 유동/고정 IP, Horizon
웹 UIhttp://<서버 IP> (admin 로그인)