OpenStack 운영
dashboard(Horizon) 과 시간대 설정
- 오픈스택 접속; dashboard(Horizon)
- http://<OpenStack_IP>/dashboard/project/
- openstack은 타임아웃 시간을 늘릴수 없다. 그래서 로그인 정보를 저장..
- Compute 개요의 (간략학 요약의 대시보드) 데이터가 정확하지않다.
- 오른쪽 사용자 이름 , 왼쪽 프로젝트 이름
- 프로젝트(cf. GCP); 자원을 관리하기 위한 그룹 (Azure; 리소스 그룹)
- 사용자 설정; 시간대 설정
- 관리자라 메뉴가 4개이다.
- 💦 admin 사용자만 관리라는 메뉴가 있다. (❗ 퍼블릭 서브넷 설정)
- 인증을 위한 패스워드 2가지
- Horizon에 대한 Password(CONFIG_DEFAULT_PASSWORD)
- CLI를 위한 Password(CONFIG_KEYSTONE_ADMIN_PW)
- 필요하다면 Horizon 패스워드 변경 가능
네트워크 설정
- 외부 네트워크 설정 - 관리자; admin
- 내부 네트워크 설정 - 테넌트
- 네트워크 설정 순서
- 네트워크 -> 라우터 -> 보안그룹 -> ... 메뉴의 위에서 아래로 수행
- 네트워크와 라우터, NIC 설정; 외부네트워크(admin 관리) - (테넌트) 프로젝트 탭의 (내부)네트워크 - 라우터 추가(설정) - 내부 인터페이스 추가 및 연결
외부 네트워크 설정 해보기 (Neutron)
- 관리 탭 ➡ 네트워크 ➡ 네트워크 생성
- 네트워크
- 공급자 네트워크 유형:
Flat
브릿지를 제공하기 위한 네트워크 Driver 유형
- 물리적인 네트워크:
extnet
기본값이나 직접 타이핑; 다른 명칭을 할 수 있으나 extnet
으로 처리
- 서브넷
- 서브넷 이름 지정
- 전체 네트워크 주소 설정(192.168.0.0/21)
- 게이트 웨이 IP 지정
- 게이트웨이 비활성화 (외부 네트워크 기준으로는 IP를 할당 받기 때문)
- 서브넷 세부 정보
- DHCP 서버 역할이 필요없음.(IP 할당 받는 포지션; DHCP 역할을 수행하면 IP충돌 발생 O)
- 가용할 Host IP 대역 입력
192.168.5.151,192.168.5.200
; 공백 없이 입력
- 결과
내부 네트워크 설정
- 프로젝트 탭 ➡ 네트워크 ➡ 네트워크 생성
- 네트워크; 이름 설정
- 서브넷; 이름, 네트워크 주소, 게이트웨이 IP 설정
- 서브넷 세부 정보; DHCP 사용 체크, NS 서버 정보 입력
- 결과
- 토폴로지 결과 확인
라우터 생성
- 프로젝트 탭 ➡ 라우터 ➡ 라우터 생성
- 라우터 정보 입력
- snat (source nat): vm 기준으로 내부 ip-변환 -> 외부 ip
- dnat (destination nat): vm 기준으로 내부 ip <- 변환-외부ip
- 라우터 생성 결과; 라우터 생성만으로는 외부 네트워크와 내부 네트워크가연동 되지 않는다.
라우팅 설정
- 추가한 내부 인터페이스는 Internal Subnet 대역의 게이트웨이 인터페이스(GW-NIC) 역할을 수행
- 생성한 라우터 이름 클릭 - 인터페이스
💨 내부 인터페이스 추가하기
💨 서브넷 설정하기
- 내부인터페이스 추가 결과
- 토폴리지 확인
- 트래픽이 잘 가나 확인 (반드시 win10에서 ping 수행)
보안 그룹
- 기본 그룹은 사용하지 않겠다.
- 기본값 egress/ingress 모두 허용
- 프로젝트 탭 ➡ 보안 그룹 ➡ 보안 그룹 생성 클릭
- 보안 그룹 이름 지정
생성한 보안 그룹 (open-web)에 규칙 추가
- HTTP, SSH, HTTPS, ICMP 추가
- ping test 목적으로 ICMP 추가, 일반적으로 설정 안하는게 좋음(보안취약)
- 사용자 정의 규칙도 추가가능
- 결과
- (VM에서) 내보냄 > egress(나간다) > outbound
- (VM에서) 들어옴 > ingress(들어오다) > inbound
- 0.0.0.0/0(모든_ipv4), ::/0(모든_ipv6), anywhere, 위치무관
- 거부 deny block (설정하지 않으면 거부), 수락 allow (설정하면 수락)
Floating IP(유동 IP)
- Public 네트워크로부터 Instance를 Access하기 위한 IP
- 내부와 외부를 연결하기 위한 외부용 IP, NAT의 외부 IP 같은 역할인데 좀 다르다.
- 50개 아이피를 사용가능(192.168.5.151~192.168.5.200)
- 프로젝트 탭 ➡ Floating ➡ 프로젝트에 IP 할당
- Floating IP로 끌어다 쓸 네트워크 Pool 선택
- 범위 안에서 랜덤한 IP 할당
- 2개를 추가해 3개로 만들어 보기
Compute 설정
- Compute 자원 설정의 흐름
- 이미지 ➡ 키 페어 ➡ 맨마지막 인스턴스(VM)
Images; 이미지
- Compute 탭 ➡ 이미지 ➡ 이미지 생성
- 이미지 상세 정보 입력
- 테스트용 OS cirros로 이미지 생성
- 결과
- CentOS7 이미지 추가
- Ubuntu18 이미지 추가
Key Pairs; 키 페어
- Compute 탭 ➡ 키 페어 ➡ 키 페어 생성
- 생성 시 다운로드까지 수행
instances; 인스턴스
- Compute 탭 ➡ 인스턴스 ➡ 인스턴스 시작
- 인스턴스 시작(Launch; 생성)
- 세부정보
인스턴스 이름 지정(cirros), Next
- 소스 *
인스턴스와 볼륨의 설정 및 생명주기 설정(같이 삭제, 볼륨 유지)
cirros 🔼 체크
- Flavor *
인스턴스의 컴퓨트, 메모리 및 스토리지 용량에 대한 크기를 설정
m1.tiny 🔼 체크
- 네트워크 *
internal_network ✔ (external 설정 X, 외부 네트워크가 필요하다면 Floating IP 할당)
- 네트워크 포트 - 디폴트, Next
- 보안 그룹 - default 제거 후 직접 설정한 보안 그룹(open-web) 사용, Next
- 만들어둔 Key Pair 자동 세팅 Next
- 나머지 구성 기본 값, 인스턴스 시작
- 결과
- Internal 네트워크 대역대의 랜덤한 IP Address가 할당됨.
Floating IP 연결
- Internal 네트워크상의 Private Instance 에 유동 IP 연결
- 1:1 nat (Floating IP와 VM 인스턴스와 연동)
- 할당 결과
- Floating IP 결과 확인
- SSH로 원격 접속
초간단 웹서버 구축
nohup sh -c "while true; do echo -e 'HTTP/1.0 200 OK\r\n\r\nserver' | sudo nc -l -p 80 ; done" &
후 curl 127.0.0.1
후 192.168.5.156(cirros floating ip)
로 접속 해보면
- 현재 PC에서만 접속이 되도록 보안 그룹 규칙 변경
- 보안그룹 규칙 삭제(모든 http) / 추가 (내 IP만; 다른 IP 주소 및 스마트폰 등에서 접속 거부)
- /32(특수비트; ip 하나만 의미)
인스턴스 콘솔 접속하기
인스턴스 볼륨 추가 하기
- 프로젝트 탭 ➡ 볼륨 ➡ 볼륨 ➡ + 볼륨 생성
- 사용가능
- 볼륨 할당
- 볼륨 할당 결과
추가한 볼륨 인스턴스에 붙이기
$ lsblk
$ sudo mkfs -t xfs /dev/vdb
; 디스크 포멧
$ sudo mount /dev/vdb /mnt/
; 디스크 마운트
df -h
참고
- Neutron
- 공급자 네트워크 유형: Flat 브릿지를 제공하기 위한 네트워크 유형이다.
- 물리적인 네트워크:
extnet
기본값인데 작성해준다. 다른 명칭을 할 수 있으나 extnet
으로 처리하자
- .img, .qcow2 는 KVM에서 다루는 파일 확장자이다.
클라우드 이미지 다운로드
Horizon Session_TIMEOUT 늘리기
- 최대 세션 제한 시간은 32비트 부호 있는 정수로 표현할 수 있는 최대값
- 단위(초)
\# vi /etc/keystone/keyston.conf
----------------------------------------
[token]
...
...
expiration = 43200
----------------------------------------
- openstack-dashboard/local_settings 수정
## 43200 (12시간)
\# vi /etc/openstack-dashboard/local_settings
----------------------------------------
SESSION_TIMEOUT = 1800 -> 43200 (12시간)
----------------------------------------
## 웹서버 재시작
\# systemctl restart httpd
위 내용을 토대로 chat gpt 정리해준 것
Sure, I can summarize the steps to increase the session timeout for Keystone and Horizon:
- Keystone token expiration time:
- SSH into the Keystone server.
- Navigate to the
/etc/keystone
directory.
- Edit the
keystone.conf
file using a text editor like vi
.
- Locate the
[token]
section in the file.
- Set the
expiration
parameter to the desired value in seconds.
- Save and close the
keystone.conf
file.
- Restart the Apache service to apply the changes.
- Horizon session timeout:
Keep in mind that these changes will affect all users of the Keystone and Horizon services, so it's important to set reasonable values for the expiration time and session timeout that balance security with usability.