프로젝트 좀보이드(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을 접속하면 된다!
화면에 Domain과 User Name, Password를 입력하라고 하는데
https://kreator-kaebal.github.io/posts/Zomboid4/
여기서 설정한 관리자 계정 정보를 입력하면 된다.
링크에서는 Domain을 Default, User Name은 admin, Password는 (각자 입력한 관리자비번)으로 되어 있으니 이렇게 치고 입력하면 로그인이 될 것이다!
다음 시간
다음 시간에는 cinder 설치와 실제 VM 생성을 진행해 보겠다…
