Post

프로젝트 좀보이드(Project Zomboid) 서버 고도화④ - neutron, horizon 설치

프로젝트 좀보이드(Project Zomboid) 서버 고도화④ - neutron, horizon 설치

서버 구축기 이어서

이번에는 Openstack 구성에서 가장 어려운 부분인, 네트워크를 담당하는 neutron을 설치하는 시간이다.

모든 요소의 설치는 DB 생성→openstack 사용자 생성→패키지 설치 및 설정 파일 수정→DB 동기화 및 서비스 시작 순으로 이루어진다.

마찬가지로 모든 비밀번호는 openstack으로 통일하기로 한다.

Neutron 설치

neutron 등록

말 안해도 알겠죠~? DB부터 설치~

1
mysql -u root
1
2
3
4
5
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'openstack';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'openstack';
FLUSH PRIVILEGES;
exit;
1
2
# openstack 관리자 권한 활성화
source ~/admin-openrc
1
2
3
# neutron 사용자 생성
openstack user create --domain default --password openstack neutron
openstack role add --project service --user neutron admin
1
2
# neutron 서비스 등록
openstack service create --name neutron --description "OpenStack Networking" network
1
2
3
4
# 엔드포인트 등록
openstack endpoint create --region RegionOne network public http://172.30.1.86:9696
openstack endpoint create --region RegionOne network internal http://172.30.1.86:9696
openstack endpoint create --region RegionOne network admin http://172.30.1.86:9696

이렇게 neutron 엔포 등록까지 끝났으면… 여기서부터 어려워진다.

OpenVSwitch 설치

OpenVSwitch는 VM에 가상 네트워크를 할당해주는 가상 스위치이다.

쉽게 말하면 서버 안에 가상의 공유기를 만들어 VM들이 서로 데이타를 주고받거나 외부와 통신하게 해 주는 것이다.

※ 스위치란? : 네트워크 통신이 어디 컴퓨터로 가야 하는지를 결정해주는 장치. 컴퓨터의 MAC 주소를 기준으로 판단한다

암튼 openstack도 이걸로 VM용 네트워크를 만들어줘야 한다. 설치하자면

1
2
# openstack용 OVS 팩키지 설치
dnf install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch ebtables ipset
1
2
# OVS 활성화
systemctl enable --now openvswitch

활성화까지 끝났음 OVS 세팅의 첫 단계는 VM들이 외부 네트워크(인터넷)과 통신할 수 있도록 가상 브릿지를 생성하는 것이다.

가상 브릿지 생성은 OVS로 가상 스위치(공유기)를 하나 만드는 것이라 생각하면 된다.

1
2
# 인터넷 연결용 가상 브릿지 생성. 여기서는 br-ex라는 이름
ovs-vsctl add-br br-ex

Neutron 설정

1
vi /etc/neutron/neutron.conf

neutron.conf 파일을 열고 아래와 같이 수정해준다.

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
32
33
34
35
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true
transport_url = rabbit://openstack:openstack@172.30.1.86
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true

[database]
connection = mysql+pymysql://neutron:openstack@172.30.1.86/neutron

[keystone_authtoken]
www_authenticate_uri = http://172.30.1.86:5000
auth_url = http://172.30.1.86:5000
memcached_servers = 172.30.1.86:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = openstack

[nova]
auth_url = http://172.30.1.86:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = openstack

[oslo_concurrency]
lock_path = /var/lib/neutron/tmp

그 다음, ml2_conf.ini, openvswitch_agent.ini 파일도 수정해 준다.

ml2_conf.ini는 neutron이 어떤 네트워크 가상화 기술을 사용할 것인지를 정하고,
openvswitch_agent.ini는 neutron이 사용할 OVS 설정을 정의하는 파일이다.

1
vi /etc/neutron/plugins/ml2/ml2_conf.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = openvswitch,l2population
extension_drivers = port_security

[ml2_type_flat]
flat_networks = external

[ml2_type_vxlan]
vni_ranges = 1:1000

[securitygroup]
enable_ipset = true
1
vi /etc/neutron/plugins/ml2/openvswitch_agent.ini
1
2
3
4
5
6
7
8
9
10
11
[agent]
tunnel_types = vxlan
l2_population = true

[ovs]
# 외부망(external)에서 아까 만든 br-ex 브릿지를 사용하겠다는 뜻
bridge_mappings = external:br-ex
local_ip = 172.30.1.86

[securitygroup]
firewall_driver = iptables_hybrid

l3_agent, dhcp_agent 설정

이것은 VM이 OVS를 통해 IP를 자동으로 받아오도록 하는 설정으로

l3_agent는 VM의 L3 계층(IP)를 설정하는 파일이고,
dhcp_agent는 VM의 DHCP(IP 자동 할당)을 설정하는 파일이다.

1
vi /etc/neutron/l3_agent.ini
1
2
3
[DEFAULT]
interface_driver = openvswitch
external_network_bridge =
1
vi /etc/neutron/dhcp_agent.ini
1
2
3
4
[DEFAULT]
interface_driver = openvswitch
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

neutron DB 동기화 및 시작

위 설정들이 neutron DB에 들어가도록 동기화해 준다.

1
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
1
2
3
# neutron 실행, nova가 neutron 설정을 읽도록 api도 재시작
systemctl restart openstack-nova-api
systemctl enable --now neutron-server neutron-openvswitch-agent neutron-dhcp-agent neutron-metadata-agent neutron-l3-agent

그리고 openstack network agent list를 했을 때 DHCP agent, L3 agent, vSwitch, Metadata가 전부 :) 상태이면 성공이다!

Horizon 설치

이제 AWS 콘솔 같이 Openstack의 웹 대쉬보드를 담당하는 Horizon을 설치하자.

1
dnf install -y openstack-dashboard

팩키지로 openstack-dashboard를 설치하면 아래 설정 파일에 들어가

1
vi /etc/openstack-dashboard/local_settings
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
32
33
34
35
36
37
38
39
OPENSTACK_HOST = "172.30.1.86"
ALLOWED_HOSTS = ['*', '172.30.1.86', 'localhost']

...

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache',
        'LOCATION': '172.30.1.86:11211',
    }
}

...

OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

...

OPENSTACK_NEUTRON_NETWORK = {
    'enable_router': True,
    'enable_quotas': True,
    'enable_ipv6': False,
    'enable_distributed_router': False,
    'enable_ha_router': False,
    'enable_fip_topology_check': False,
}

...

TIME_ZONE = "Asia/Tokyo"
WEBROOT = '/dashboard/'
LOGIN_URL = '/dashboard/auth/login/'
LOGOUT_URL = '/dashboard/auth/logout/'
LOGIN_REDIRECT_URL = '/dashboard/'

위 항목을 위와 같이 수정해 준다.

참고로 local_settings 파일은 파이썬 파일이기 때문에, 들여쓰기에 주의하자!

그 다음 대쉬보드 conf 파일을 열어

1
vi /etc/httpd/conf.d/openstack-dashboard.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
WSGIDaemonProcess dashboard
WSGIProcessGroup dashboard
WSGISocketPrefix run/wsgi
# 아래 줄 추가
WSGIApplicationGroup %{GLOBAL}

WSGIScriptAlias /dashboard /usr/share/openstack-dashboard/openstack_dashboard/wsgi.py
Alias /dashboard/static /usr/share/openstack-dashboard/static

<Directory /usr/share/openstack-dashboard/openstack_dashboard>
  Options All
  AllowOverride All
  Require all granted
</Directory>

<Directory /usr/share/openstack-dashboard/static>
  Options All
  AllowOverride All
  Require all granted
</Directory>

수정이 끝나면 설정을 웹 서버에 반영하기 위해

1
2
3
4
5
6
# 설정 파일 apache 권한으로 수정
chown -R apache:apache /usr/share/openstack-dashboard/static
chown -R apache:apache /etc/openstack-dashboard
chmod 644 /etc/openstack-dashboard/local_settings

systemctl restart httpd memcached

아파치 웹 서버와 memcached를 재시작해 주고
웹 브라우저에서 http://172.30.1.86/dashboard을 접속하면 된다!

zom6-img1

화면에 Domain과 User Name, Password를 입력하라고 하는데

https://kreator-kaebal.github.io/posts/Zomboid4/
여기서 설정한 관리자 계정 정보를 입력하면 된다.

링크에서는 Domain을 Default, User Name은 admin, Password는 (각자 입력한 관리자비번)으로 되어 있으니 이렇게 치고 입력하면 로그인이 될 것이다!

다음 시간

다음 시간에는 cinder 설치와 실제 VM 생성을 진행해 보겠다…

This post is licensed under CC BY 4.0 by the author.