1. Devstack 설치
Devstack 이란?
- DevStack 은 빠르고 쉽게 오픈스택의 핵심 컴포넌트를 구축하기 위한 스크립트이다,
- OpenStack 프로젝트의 다양한 기능을 테스트하기 위한 용도로도 사용된다.
주요 구성요소
DevStack을 이용하면 다음과 같은 구성 요소들을 쉽게 구성할 수 있다.
- Nova: 가상의 서버를 생성 및 관리
- Glance: 서버의 이미지 생성 및 관리
- Cinder: 블록 스토리지를 생성 및 관리
- Neutron: 가상의 네트워크 생성 및 관리
- Keystone: 사용자에 대한 인증
- Swift: 오브젝트 스토리지를 구성
- Horizon: Horizon 대시보드를 통해 GUI 환경에서 오픈스택의 구성요소들을 컨트롤 가능
swap 설정
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
다음과 같은 명령으로 stack 사용자 계정을 생성합니다.
sudo useradd -s /bin/bash -d /opt/stack -m stack
생성한 stack 계정 권한으로 /opt/stack 경로 내의 모든 디렉터리 소유주와 소유 그룹을 변경한다.
sudo chown stack:stack -R /opt/stack/
생성한 사용자의 sudo 권한을 부여합니다.
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
sudo chmod 755 /opt/stack
sudo su - stack
devstack 설치
sudo apt-get update
sudo apt install git -y
git clone https://opendev.org/openstack/devstack
cd devstack
git checkout stable/2024.1
가상 floating(pub ip) 대역 생성
bridge-utils 패키지를 이용하여 가상의 프로바이더 네트워크를 구성한다.
# 가상의 provider network를 구성하는 이유
CSP에서 제공하는(여기선 nhn cloud) 인스턴스를 생성하면 외부와 통신 가능한 NIC 포트 하나가 제공되고,
이것은 클라우드 제공업체에 의해 관리되기 때문에 openstack내에서 provider network 대역대를 생성하지 못하여,
인스턴스 내부에서 가상 브릿지를 만들어 그것으로 provider network를 제공했다.
참고: https://printf.kr/14
이 패키지로 네트워크 인터페이스 카드 여러개를 논리적으로 하나로 묶어, 브릿지를 만들 수 있다.
sudo apt install bridge-utils net-tools
아래 명령으로 mybr0 브릿지를 생성
sudo brctl addbr mybr0
생성한 mybr0 브릿지 인터페이스에 192.168.100.1 아이피를 할당하고 서브넷은 255.255.255.0 으로 초기화를 한 후, 링크 상태를 활성화
sudo ifconfig mybr0 192.168.100.1 netmask 255.255.255.0 up
iptables 를 이용해 패킷이 라우터로 사용되는 호스트를 통과하도록 Forward Chain 정책을 정의하여 패킷 포워딩 규칙을 설정
sudo iptables -I FORWARD -j ACCEPT
mybr0 인터페이스에 할당된 사설 아이피에 대한 패킷을 postrouting 체인을 선언해 외부 네트워크에서 액세스가 가능하도록 NAT 규칙을 설정
sudo iptables -t nat -I POSTROUTING -s 192.168.100.0/24 -j MASQUERADE
DevStack 을 설치하면 기본적으로 OS에 설정된 아이피로 Horizon 을 비롯한 API endpoint 가 지정된다.
클라우드 인스턴스에 설정된 아이피는 사설 아이피이므로 DevStack 설정 파일인 local.conf 파일에 외부 통신이 가능한 인스턴스의 공인 아이피 정보를 넣어주고, 그 아이피로 바인딩 할 수 있도록 루프백 인터페이스에 아이피를 설정합니다.
루프백 인터페이스에 대한 바인딩 설정은 아래와 같이 진행합니다.
# 할당받은_공인_IP란? ssh 접근 할때 사용한 IP
sudo ip addr add $할당받은_공인_IP/32 dev lo
openstack 설치
데브스택의 구성은 local.conf 파일을 통해 설정할 수 있습니다.
이 파일의 샘플은 devstack/samples 경로에 위치하며, DevStack 설치를 진행할 때에는 /devstack 디렉터리에서 local.conf 파일을 생성하여 진행한다.
$ pwd # local.conf 파일 설정 경로
/opt/stack/devstack
local.conf 파일 설정
$ vi local.conf # vi를 이용해 local.conf 파일을 설정합니다.
[[local|localrc]]
HOST_IP=$할당받은_공인IP
FORCE=yes
ADMIN_PASSWORD=$패스워드_설정
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
# Enable designate
enable_plugin designate https://opendev.org/openstack/designate
enable_service designate,designate-central,designate-api,designate-worker,designate-producer,designate-mdns
DESIGNATE_BACKEND_DRIVER=pdns4
DESIGNATE_POOL_MANAGER_CACHE_DRIVER=memcache
# Disable services
disable_service etcd3
disable_service ovn
disable_service ovn-controller
disable_service ovn-northd
disable_service q-ovn-metadata-agent
# Use openvswitch as the ml2 plugin driver
Q_AGENT=openvswitch
# Enable Neutron services neutron-server, neutron-openvswitch-agent,
# neutron-dhcp-agent, neutron-l3-agent and neutron-metadata-agent
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
## Neutron options
# 인스턴스에 할당할 Floating ip 대역
FLOATING_RANGE="192.168.100.0/24"
# 인스턴스 fixed ip 대역
IPV4_ADDRS_SAFE_TO_USE="10.0.0.0/22"
Q_FLOATING_ALLOCATION_POOL=start=192.168.100.50,end=192.168.100.250
PUBLIC_NETWORK_GATEWAY="192.168.100.1"
PUBLIC_INTERFACE=mybr0
# Open vSwitch provider networking configuration
Q_USE_PROVIDERNET_FOR_PUBLIC=True
OVS_PHYSICAL_BRIDGE=br-ex
PUBLIC_BRIDGE=br-ex
OVS_BRIDGE_MAPPINGS=public:br-ex
[[post-config|/$Q_PLUGIN_CONF_FILE]]
[ml2]
type_drivers=flat,gre,vlan,vxlan
tenant_network_types=vxlan
mechanism_drivers=openvswitch,l2population
[agent]
tunnel_types=vxlan,gre
designate를 설치하면 powerdns라는 서비스가 실행되는데,
해당 서비스가 53port를 사용하기때문에 systemd-resolved 서비스와 port 충돌이 발생해 devstack 설치가 실패하니 서비스 중지
$ sudo systemctl disable --now systemd-resolved.service
$ sudo vi /etc/resolv.conf
nameserver 8.8.8.8
설정이 끝났으면, stack.sh스크립트를 실행하여 설치를 진행한다.
$ ll stack.sh
-rwxrwxr-x 1 stack stack 46210 Jul 6 15:29 stack.sh*
$ ./stack.sh # 스크립트 실행
참고 ) 멘토링 자료
설치가.. 되다가 말아..너무 렉걸림
서버 사양의 문제인게 확실하다.. 갑자기 서버가 죽었다.
으이쒸~!!
오래 기다렸는데,,
아하... 서버 사양을 변경해서 다시 설치하겠다.
램이 적어도 4GB 는 되어야 해서 사양 업글완료.
위 명령어중에 브릿지 추가 명령어가 왜인지는 모르겠으나 제대로 안되어있었다.
지피티씨가 알려줬다.
>>>>
여전히 `mybr0`라는 네트워크 장치가 존재하지 않아 발생하는 오류가 보입니다. 이 문제를 해결하기 위해 몇 가지 추가 단계를 시도해 보세요.
1. `mybr0` 브리지 생성
먼저, `mybr0` 브리지를 다시 생성해 보세요. 다음 명령어를 사용합니다:
sudo ip link add name mybr0 type bridge
sudo ip link set dev mybr0 up
2. Open vSwitch에 포트 추가
`mybr0`를 Open vSwitch에 추가하려면 다음 명령어를 사용하세요:
sudo ovs-vsctl add-br mybr0
3. `mybr0`와 `br-ex` 연결
`mybr0`를 `br-ex`와 연결해야 합니다. 다음 명령어를 사용하여 포트를 추가합니다:
sudo ovs-vsctl add-port br-ex mybr0
4. OVS 상태 확인
변경 사항을 적용한 후, Open vSwitch의 상태를 다시 확인합니다:
sudo ovs-vsctl show
5. 시스템 재부팅
위의 방법으로도 문제가 해결되지 않는 경우, 시스템을 재부팅하여 네트워크 설정을 초기화해 볼 수 있습니다.
6. OVS 서비스 상태 확인
Open vSwitch 서비스가 정상적으로 실행되고 있는지 확인합니다:
sudo systemctl status openvswitch-switch
서비스가 실행되고 있지 않다면, 다음 명령어로 시작합니다:
sudo systemctl start openvswitch-switch
위 명령어를 . 다입력하지는 않았고, 브릿지만 생성해주고 잘 생성되었는지만 확인했다.
애초에 만들고나서 ./stack.sh 돌리면 알아서 해주니까...
반복적으로 발생하는 오류는 사람을 미치게해요!!!
심지어 서버를 몇번이나 변경해봄
또 이러네
이 글을 보았을때, designate 관련 오류일 수 있다고 해서 designate 가 관련된 설정은 모두 local.conf 파일에서 지워줬다.
https://bugs.launchpad.net/designate/+bug/2036402
추가로 , devstack 의 최신 branch (stable)의 버전이 변경되었다는걸 이제야 확인을 해서
checkout 을 해줬음
git checkout stable/2024.2
으어어아으ㅏ어아ㅡ아어으~~~~~!!!!드디어 됨
추측건대,,사유는 버전 문제 or designate 문제이다...
아마 이 두가지가 겹쳐있을 것이라 추측된다.
왜냐하면 최근에 designate 버전이 업그레이드 되었다는걸 들었고 (달마시안..? 으로, 이게 달마시안 버전이 과연 designate 만 업뎃된건지 openstack 전체가 업뎃된건지는 기억이 안난다)
이를 반영해서 설치했어야 할 것같다..
문제가 생겼다.
대시보드에 접속하려고만 하면 자꾸 서버가 꺼진다.
이게무슨,,
오픈스택..이렇게나 무거운 프로그램인가
일단 이 부분은 서버 사양을 올리던지 해서 로그 보고 해결해야할것같다. 킹받는다.
해결을 했다.
예준님께서 알려준,,, swap 관련
https://blog.naver.com/PostView.nhn?blogId=hanajava&logNo=221516060597
보면 원래 kswapd 이 swap 을 위해서 막~동작하고있었는데, 내가 swap 을 설정안해줘서 못찾아서 계속 가지고 있는것이었다ㅏ.
근데이제 키스톤이 안되는..
devstack 은 서버를 재부팅 하면 동작이 안된다고 한다.
테스트 용도라서... ;;
2. openstack 과 모니터링
평소에 프로젝트를 진행하면서 로그,모니터링 쪽을 너무 안했다는 생각이 들어서,,
이왕 오픈스택 구축한김에
한번 이 과제를 목표 삼아 구축해보겠다!
아래 리소스들을 보며 고민해보았다.
https://velog.io/@dojun527/series/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C
https://m.blog.naver.com/olpaemi/221079933888
https://openstack-kr.github.io/2018/session1/track_4_1
그냥 둘 다 하면 될 것 같다.
챌린지니까,,
3. Grafana로 Openstack 리소스 모니터링하기
음 이건 제품같음.. 사실 잘 몰겠음
https://grafana.com/solutions/openstack/monitor/
https://serverfault.com/questions/1145058/how-can-i-monitor-openstack-with-prometheus-and-grafana
https://www.reddit.com/r/openstack/comments/1dfpi3m/openstackexporter_grafana/
오우 어떻게 해야하지..
그라파나 설치는 매뉴얼대로 하면되는데, 이걸 오픈스택이랑 어떻게 연결할지는 좀 더 알아봐야할 것 같다.
나 어려운길을 가고있는걸까>...?
'☁️2024 > Openstack' 카테고리의 다른 글
NHN cloud instance 로 openstack 구축하고 모니터링하기 #1 (5) | 2024.10.22 |
---|---|
Openstack 기여하기 #4 (0) | 2024.10.04 |
swift - 오브젝트 스토리지 동작 원리 (4) | 2024.09.26 |
Openstack 기여하기 #3 (0) | 2024.09.12 |
Openstack 기여 하기 #2 (2) | 2024.09.02 |