Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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
Tags more
Archives
Today
Total
관리 메뉴

요리사에서 IT개발자로

OpenStack Dalmatian 기반 Web/DB 서버 구축 가이드 본문

AWS

OpenStack Dalmatian 기반 Web/DB 서버 구축 가이드

H.S-Backend 2024. 11. 13. 16:11

1. 사전 준비 작업

SELinux 및 방화벽 비활성화

sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
systemctl disable --now firewalld
dnf update -y
reboot

네트워크 구성 및 서비스 설정

NetworkManager 비활성화

systemctl disable --now NetworkManager
systemctl enable --now network
 
 

네트워크 설정
/etc/sysconfig/network-scripts/ifcfg-ens160 파일을 수정합니다.

TYPE=Ethernet
BOOTPROTO=none
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=10.0.0.131
NETMASK=255.255.255.0
GATEWAY=10.0.0.2
DNS1=8.8.8.8
DNS2=168.126.63.1

적용 및 연결 확인

reboot
ping google.com

2. OpenStack 설치 및 설정

설치

dnf config-manager --enable crb
dnf install -y centos-release-openstack-dalmatian
dnf install -y openstack-packstack
dnf install -y network-scripts

Packstack 설정

Answer 파일 생성

 
packstack --gen-answer-file /root/answers.txt

Answer 파일 수정
주요 설정은 아래와 같습니다:

sed -i 's/CONFIG_DEFAULT_PASSWORD=.*/CONFIG_DEFAULT_PASSWORD=test1234/' /root/answers.txt
sed -i 's/CONFIG_KEYSTONE_ADMIN_PW=.*/CONFIG_KEYSTONE_ADMIN_PW=test1234/' /root/answers.txt
sed -i 's/CONFIG_CINDER_VOLUMES_SIZE=.*/CONFIG_CINDER_VOLUMES_SIZE=80G/' /root/answers.txt
sed -i 's/CONFIG_HEAT_INSTALL=.*/CONFIG_HEAT_INSTALL=y/' /root/answers.txt
sed -i 's/CONFIG_NEUTRON_ML2_TYPE_DRIVERS=.*/CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vxlan,flat/' /root/answers.txt

OpenStack 설치

 
packstack --answer-file /root/answers.txt

python 설치 

dnf install -y python3-requests python3-openstackclient python3-chardet

3. Admin 프로젝트 및 유저 설정

Admin 설정

source keystonerc_admin
 

프로젝트 생성

openstack project create --domain Default --description "CLI Project" cli-project

OpenStack에서 Default도메인과 cli-project프로젝트에 속하는
cli-user 사용자 계정을 생성하며, 비밀번호는 프롬프트에서 입력받습니다.

openstack user create --domain Default --project cli-project --password-prompt cli-user

해당 유저의 권한 변경

openstack role add --project cli-project --user cli-user member
openstack user list

openstack flavor 리스트 확인

openstack flavor list

openstack flavor 생성

openstack flavor create --vcpus 1 --ram 1024 --disk 10 --id 6 m1.micro

openstack Network 구성

openstack network create --provider-network-type flat --provider-pyhsical-network extnet --external-network

openstack 서브넷 생성

openstack subnet create --network external-network --subnet-range 10.0.0.0/24 --allocation-pool start=10.0.0.200,end=10.0.0.250 --gateway 10.0.0.2 --no-dhcp external-subnet

CLI 유저 생성  및 구성

useradd cli-user
passwd cli-user

 
cli-user로 접근 ->

 
unset OS_SERVICE_TOKEN
export OS_USERNAME=cli-user export
OS_PASSWORD='test1234'
export OS_REGION_NAME=RegionOne
export OS_AUTH_URL=http://10.0.0.131:5000/v3
export PS1='[\u@\h \W(cli-user)]\$ '
export OS_PROJECT_NAME=cli-project
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3
네트워크 확인

4. 네트워크 및 인스턴스 설정 & 보안그룹 설정

네트워크 생성

openstack network create --provider-network-type flat --provider-physical-network extnet --external external-network
openstack subnet create --network external-network --subnet-range 172.16.0.0/24 \ --allocation-pool start=172.16.0.200,end=172.16.0.250 --gateway 172.16.0.2 --no-dhcp external-subnet
내부 네트워크 및 라우터 생성
openstack network create --project $projectID --provider-network-type vxlan internal-network
projectID=$(openstack project list | grep cli-project | awk '{print $2}')
openstack subnet create --network internal-network --subnet-range 10.255.0.0/24  --gateway 10.255.0.1 --dhcp --dns-nameserver 8.8.8.8 --dns-nameserver 168.126.63.1 internal-subnet
 
 
openstack router create router
openstack router set --external-gateway external-network router
 
openstack router add subnet router internal-subnet
openstack floating ip create external-network

보안그룹 생성

openstack security group create cli-sg-web

보안그룹의 포트 번호 추가

openstack security group rule create --protocol icmp --ingress cli-sg-web
openstack security group role create --protocol tcp --dst-port 80 cli-sg-web
openstack security group role create --protocol tcp --dst-port 22 cli-sg-web

 
Database 보안 그룹 생성

openstack security group create cli-sg-db

Database 보안그룹의 포트 번호 추가

openstack security group rule create --protocol icmp --ingress cli-sg-web
openstack security group role create --protocol tcp --dst-port 3306 cli-sg-web
openstack security group role create --protocol tcp --dst-port 22 cli-sg-web

MobaXterm 에 Rocky9과 Ubuntu 이미지 업로드

openstack image create --file Rocky-9-GenericCloud-Base.latest.x86_64.qcow2 --disk-format qcow2 rocky9
openstack image create --file noble-server-cloudimg-amd64.img --disk-format qcow2 ubuntu24
openstack image list 

 
키페어 생성

ssh-keygen -t rsa -> 엔터 -> no -> 엔터 -> ls .ssh

Openstack에 키페어 등록

openstack keypair create --public-key ~/.ssh/id_rsa.pub cli-key

5. 인스턴스 생성

Web 서버 생성

User Data 스크립트: user-web.sh

vi user-web.sh

#!/bin/bash
timedatectl set-timezone Asia/Seoul
dnf install -y httpd systemctl enable --now httpd echo "<h1>webserver</h1>" > /var/www/html/index.html
 

인스턴스 생성

netID=$(openstack subnet list | grep internal-subnet | awk '{print $6}')
 
WebServer 생성
 
openstack server create --flavor m1.micro --image rocky9 --security-group cli-sg-web --nic net-id=
$netID
 --key-name cli-key --boot-from-volume 10 --user-data user-web.sh webserver openstack server add floating ip webserver 

floating ip 할당

openstack server add floating ip webserver 10.0.0.208

console 화면 확인

openstack console url show webserver

 

DB 서버 생성

User Data 스크립트: user-db.sh

 
#!/bin/bash
apt-get update -y
apt-get install -y mariadb-server
mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'test1234';"
mysql -e "DELETE FROM mysql.user WHERE User='';"
mysql -e "DROP DATABASE IF EXISTS test;"
mysql -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';"
mysql -e "FLUSH PRIVILEGES;" sed -i "s/^bind-address.*/#bind-address = 127.0.0.1/" /etc/mysql/mariadb.conf.d/50-server.cnf
systemctl restart mariadb
mysql -uroot -ptest1234 <<EOF
CREATE USER 'wpuser'@'%' IDENTIFIED BY 'Test1234!';
CREATE DATABASE IF NOT EXISTS wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'%';
FLUSH PRIVILEGES;
EOF

인스턴스 생성

openstack server create --flavor m1.micro --image ubuntu24 --security-group cli-sg-db \ --nic net-id=
$netID
 --key-name cli-key --boot-from-volume 10 --user-data user-db.sh dbserver
반응형