일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- fargate
- 오픈스택
- 프로젝트
- AWS
- eslint
- 젠킨스
- rocky
- kubernetes
- openstack
- IaaS
- xenserver app&desk
- jenkins
- eks
- microservices
- 설치
- OOP
- 마이크로서비스
- 가상 데스크탑 환경
- app&desk
- server base computing
- 머신러닝
- sagemaker
- 객체지향
- 쿠버네티스
- 로키
- 서버 베이스 컴퓨팅
- 구축
- centos7
- no-param-reassign
- serverless
- Today
- Total
IT
[openstack] 3.5 네트워킹 서비스 설치(neutron) - centos7 오픈스택 설치 및 구축 프로젝트 (rocky 버전) 본문
[openstack] 3.5 네트워킹 서비스 설치(neutron) - centos7 오픈스택 설치 및 구축 프로젝트 (rocky 버전)
abcee 2019. 3. 29. 05:323. 구성 과정
3.5 네트워킹 서비스 설치
3.5.1 개념
○ vxlan은 가상화 서버의 vm들이 직접 arp table을 보유하고 vSwitch에서 이러한 table을 관리함
○ vxlan은 ip, mac을 encapsulation해서 네트워크를 넘나들 수 있도록 network overlay 기술을 적용함
3.5.2 Controller Node
○ 전제 조건
• DB 설정
- root계정으로 DB 연결
# mysql -u root -p
- neutron 데이터베이스 생성
MariaDB [(none)] CREATE DATABASE neutron;
- neutron 데이터베이스 접근 권한 부여
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
IDENTIFIED BY 'It1';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
IDENTIFIED BY 'It1';
• admin 만 사용할 수 있는 명령을 쓰기 위해 admin 인증
$ . admin-openrc
• Neutron Service credentials
- neutron 유저 생성
$ openstack user create --domain default --password-prompt neutron
- neutron 유저가 service 프로젝트에 대한 admin 권한을 부여 받도록 역할 할당
$ openstack role add --project service --user neutron admin
- neutron라는 이름의 network 타입 service를 서비스 카탈로그에 등록
$ openstack service create --name neutron \
--description "OpenStack Networking" network
• Networking service API 엔드포인트 생성
- 외부 통신이 가능한 네트워크 인터페이스를 통해 network 서비스를 사용할 수 있도록 public endpoint를 서비스 카탈로그에 추가
$ openstack endpoint create --region RegionOne \
network public http://controller:9696
- 내부 네트워크 인터페이스를 통해 network 서비스를 사용할 수 있도록 internal endpoint를 서비스 카탈로그에 추가
$ openstack endpoint create --region RegionOne \
network internal http://controller:9696
- 관리용 네트워크 인터페이스를 통해 network 서비스를 사용할 수 있도록 admin endpoint를 서비스 카탈로그에 추가
$ openstack endpoint create --region RegionOne \
network admin http://controller:9696
○ 네트워킹 옵션 구성
• provider 네트워크에 인스턴스를 연결하는 것만 지원하는 옵션 1과 private 네트워크를 구축하는 것도 가능한 옵션 2가 있음
• 옵션 2 동일 구성
- 패키지 설치
○ openstack-neutron, openstack-neutron-ml2, openstack-neutron-linuxbridge, ebtables 패키지 설치
# yum install -y openstack-neutron openstack-neutron-ml2 \
openstack-neutron-linuxbridge ebtables
- 서버 구성 요소 설정
○ /etc/neutron/neutron.conf
# vi /etc/neutron/neutron.conf
○ /etc/neutron/neutron.conf
[DEFAULT]
# ml2 플러그인 활성화, 라우터 활성화, overlapping ip 활성화
core_plugin = ml2
service_plugins = router
# overlapping ip 활성화
allow_overlapping_ips = true
# rabbitmq 엑세스 설정
transport_url = rabbit://openstack:It1@controller
# 인증 방법 keystone 으로 설정
auth_strategy = keystone
# nova에 네트워크 토폴로지 변경을 알리도록 설정
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
[database]
# 726
# 데이터베이스 액세스 설정
connection = mysql+pymysql://neutron:It1@controller/neutron
[keystone_authtoken]
# 851
# Indendity Service 액세스 구성
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = It1
[nova]
# 1101
# Indentity Service 액세스 구성
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = It1
[oslo_concurrency]
# 1222
# lock_path 설정
lock_path = /var/lib/neutron/tmp
- ML2 설정
○ Linux 브리지 메커니즘을 사용하여 인스턴스에 대한 계층 2 (브리징 및 스위칭) 가상 네트워킹 인프라를 구축
○ /etc/neutron/plugins/ml2/ml2_conf.ini
# vi /etc/neutron/plugins/ml2/ml2_conf.ini
○ /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
# 128
# flat, vlan, vxlan 활성화
type_drivers = flat,vlan,vxlan
# vxlan 의 tenant 네트워크 활성화
tenant_network_types = vxlan
# linuxbridge와 l2population 활성화
mechanism_drivers = linuxbridge,l2population
# 포트확장 드라이버 사용 설정
extension_drivers = port_security
[ml2_type_flat]
# 183
# provider를 flat 네트워크로 구성
flat_networks = provider
# vxlan 범위 설정
vni_ranges = 1:1000
[securitygroup]
# 257
# 보안 그룹 규칙 효율성 향상 설정
enable_ipset = true
- Linux 브릿지 에이전트 구성
○ 인스턴스에 대한 계층 2 (브리징 및 스위칭) 가상 네트워킹 인프라를 구축하고 보안 그룹을 처리
○ /etc/neutron/plugins/ml2/linuxbridge_agent.ini
# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
○ /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
#146
# 실제 인터페이스를 provider로 매핑
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
[vxlan]
#201
# overlay 네트워크를 활성화 하고 controller의 관리자용 ip를 overlay 인터페이스 ip로 설정, l2_population 설정
enable_vxlan = true
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
l2_population = true
[securitygroup]
# 182
# 보안 그룹 사용 설정 및 iptables 방화벽 구성
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
○ /usr/sbin/modprobe br_netfilter 명령을 통해 bridge 모듈 로딩
# /usr/sbin/modprobe br_netfilter
○ sysctl -a | grep net.bridge.bridge-nf-call-ip6tables 명령을 통해 모듈 상태 1인지(nonbypass) 확인
# sysctl -a | grep net.bridge.bridge-nf-call-ip6tables
○ sysctl -a | grep net.bridge.bridge-nf-call-iptables 명령을 통해 모듈 상태 1인지(nonbypass) 확인
# sysctl -a | grep net.bridge.bridge-nf-call-iptables
- 3계층 에이전트 구성
○ 셀프 서비스 가상 네트워크에 라우팅 및 NAT 서비스를 제공함
○ /etc/neutron/l3_agent.ini 파일에서 linuxbridge 인터페이스로 드라이버 구성
# vi /etc/neutron/l3_agent.ini
[DEFAULT]
# ...
interface_driver = linuxbridge
- DHCP 에이전트 구성
○ 가상 네트워크에 DHCP 서비스를 제공
- /etc/neutron/dhcp_agent.ini 파일에서 [default] 섹션 수정 : linuxbridge 인터페이스로 구성, dhcp 드라이버 구성, 메타데이터 격리를 활성화하여 provider 네트워크의 인스턴스가 네트워크를 통해 메타데이터에 엑세스 할수 있도록 구성
# vi /etc/neutron/dhcp_agent.ini
[DEFAULT]
# ...
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
○ 메타 데이터 에이전트 구성
• 자격 증명과 같은 구성 정보를 인스턴스에 제공
• /etc/neutron/metadata_agent.ini 파일에서 [default] 섹션 구성 : 메타 데이터의 호스트 및 암호 설정
$ vi /etc/neutron/metadata_agent.ini
[DEFAULT]
# ...
nova_metadata_host = controller
metadata_proxy_shared_secret = METADATA_SECRET
○ 네트워킹 서비스를 사용하도록 nova service 구성
• /etc/nova/nova.conf 파일에서 [neutron] 섹션 수정 : Identity Service 엑세스 설정 및 메타데이터 프록시 활성화 및 비밀번호 설정
$ vi /etc/nova/nova.conf
[neutron]
# 7663
url = http://controller:9696
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = It1
service_metadata_proxy = true
metadata_proxy_shared_secret = It1
○ 마무리
• 네트워킹 서비스 초기화 스크립트(/etc/neutron/plugin.ini) 가 없으면 ML2 플러그인 구성파일 로부터 심볼링 링크 형성
# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
• neutron 데이터베이스 초기화
# 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
• compute API 서비스 재 시작
# systemctl restart openstack-nova-api.service
• neutron.server, neutron-linuxbridge-agent, neutron-dhcp-agent, neutron-metadata-agent 서비스가 부팅 시 시작되도록 등록하고 서비스를 시작한다.
# systemctl enable neutron-server.service \
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
neutron-metadata-agent.service
# systemctl start neutron-server.service \
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
neutron-metadata-agent.service
• 옵션2의 경우 3계층 서비스를 위해 neutron-l3-agent 서비스를 등록하고 서비스를 시작한다.
# systemctl enable neutron-l3-agent.service
# systemctl start neutron-l3-agent.service
3.5.3 Compute Node
○ 패키지 설치
# yum install -y openstack-neutron-linuxbridge ebtables ipset
○ 공통 구성
• /etc/neutron/neutron.conf
# vi /etc/neutron/neutron.conf
• [/etc/neutron/neutron.conf]
[database]
# compute 노드는 데이터베이스에 직접 접근하지 않으므로 주석처리
[DEFAULT]
# rabbitMQ 엑세스 설정
transport_url = rabbit://openstack:It1@controller
# 인증으로 keystone 사용 설정
auth_strategy = keystone
[keystone_authtoken]
# 844
# Identity Service 액세스 설정
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = It1
[oslo_concurrency]
# 1205
# lock_path 구성
lock_path = /var/lib/neutron/tmp
○ 네트워킹 옵션 구성
• 옵션 2 동일 구성
- Linux 브릿지 에이전트 구성
○ 인스턴스에 대한 계층 2 (브리징 및 스위칭) 가상 네트워킹 인프라를 구축하고 보안 그룹을 처리
○ /etc/neutron/plugins/ml2/linuxbridge_agent.ini
# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
○ /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
#146
# 실제 인터페이스를 provider로 매핑
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
[vxlan]
#201
# overlay 네트워크를 활성화하고 controller의 관리자용 ip를 overlay 인터페이스 ip로 설정, l2_population 설정
enable_vxlan = true
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
l2_population = true
[securitygroup]
# 182
# 보안 그룹 사용 설정 및 iptables 방화벽 구성
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
○ /usr/sbin/modprobe br_netfilter 명령을 통해 bridge 모듈 로딩
# /usr/sbin/modprobe br_netfilter
○ sysctl -a | grep net.bridge.bridge-nf-call-ip6tables 명령을 통해 모듈 상태 1인지(nonbypass) 확인
# sysctl -a | grep net.bridge.bridge-nf-call-ip6tables
○ sysctl -a | grep net.bridge.bridge-nf-call-iptables 명령을 통해 모듈 상태 1인지(nonbypass) 확인
# sysctl -a | grep net.bridge.bridge-nf-call-iptables
○ 네트워킹 서비스를 사용하도록 nova service 구성
• /etc/nova/nova.conf 파일에서 Identity Service 액세스 구성
# vi /etc/nova/nova.conf
[neutron]
[neutron]
# 7657
url = http://controller:9696
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
○ 마무리
• 변경사항을 적용하도록 openstack-nova-compute 서비스 재시작
# systemctl restart openstack-nova-compute.service
• neutron-linuxbridge-agent 서비스가 부팅 시 시작되도록 등록하고 서비스를 시작한다.
# systemctl enable neutron-linuxbridge-agent.service
# systemctl start neutron-linuxbridge-agent.service
3.5.4 검증
○ admin 인증
/*
admin 권한으로 CLI 명령을 쓰기 위해 admin 인증
*/
$ . admin-openrc
○ network 확장 리스트 확인
$ openstack extension list --network
○ agent list 확인
$ openstack network agent list