전에 오픈스택 lbaasv2 모니터링 관련 글을 남겼는데 저번달에 댓글로 Gian Kim님께서
설치 방법 요청 하셔서 관련 글을 올립니다.
7월안으로 작성하려 했으나 최근 신규 서비스 오픈이 얼마 남지 않아 늦어 졌습니다….
설치 테스트한 서버는 Ubuntu 14.04와 Ubuntu 16.04에서 설치후 정상 동작 확인 하였으며
오픈 스택 버전도 mitaka, liberty에서 정상 동작 확인 하였습니다.
최근 오픈스택 메뉴얼에서는 컨트롤러 노드와 네트웍 노드를 분리를 하지 않지만 제가
테스트할때는 네트웍 노드를 따로 분리해서 테스트 했습니다.
한개의 노드로 운영시에는 네트웍 노드에 설정할 내용을 컨트롤러 노드에 설정 해주시면 됩니다.
로드 밸런싱은 haproxy로 구동되며 테스트시 openvswitch agent 를 사용하여 테스트 했습니다.
- 패키지 다운로드(컨트롤러 + 네트워크 노드)
root@control-jyh:~# apt-get install neutron-lbaasv2-agent
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음 새 패키지를 설치할 것입니다:
neutron-lbaasv2-agent
0개 업그레이드, 1개 새로 설치, 0개 제거 및 1개 업그레이드 안 함.
5,084 바이트 아카이브를 받아야 합니다.
이 작업 후 64.5 k바이트의 디스크 공간을 더 사용하게 됩니다.
받기:1 http://ubuntu-cloud.archive.canonical.com/ubuntu/ trusty-updates/liberty/main neutron-lbaasv2-agent all 2:7.0.0-0ubuntu1~cloud0 [5,084 B]
내려받기 5,084 바이트, 소요시간 0초 (7,768 바이트/초)
Selecting previously unselected package neutron-lbaasv2-agent.
(데이터베이스 읽는중 ...현재 125863개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../neutron-lbaasv2-agent_2%3a7.0.0-0ubuntu1~cloud0_all.deb ...
Unpacking neutron-lbaasv2-agent (2:7.0.0-0ubuntu1~cloud0) ...
Processing triggers for ureadahead (0.100.0-16) ...
neutron-lbaasv2-agent (2:7.0.0-0ubuntu1~cloud0) 설정하는 중입니다 ...
neutron-lbaasv2-agent start/running, process 20145
Processing triggers for ureadahead (0.100.0-16) ...
- neutron.conf 수정(컨트롤러)
root@control-jyh:/etc/init# vi /etc/neutron/neutron.conf
[DEFAULT]
...
#service_plugins = router
service_plugins = router,neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2
[service_plugins]
device_driver = neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2
- neutron_lbaas.conf 수정(컨트롤러)
root@control-jyh:/etc/init# vi /etc/neutron/neutron_lbaas.conf
[service_providers]
...
service_provider=LOADBALANCERV2:Haproxy:neutron_lbaas.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default
- database에 테이블 업그레이드(컨트롤러)
root@control-jyh:/etc/init# neutron-db-manage --service lbaas upgrade head
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
Running upgrade for neutron-lbaas ...
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
OK
- neutron-server 재시작(컨트롤러)
root@control-jyh:/etc/init# service neutron-server restart
neutron-server stop/waiting
neutron-server start/running, process 24398
- lbaas v2 서비스 수동 시작으로 설정(컨트롤러 노드)
root@control-jyh:~# cd /etc/init
root@control-jyh:/etc/init# echo "manual" > neutron-lbaasv2-agent.override
# 컨트롤러와 네트웍 노드를 같은 서버에서 운영한다면 자동 실행해야 하기에 이 부분은 건너 뛰자.
- enable_lb 옵션 True 확인(컨트롤러 노드)
root@control-jyh:/etc/init# cat /etc/openstack-dashboard/local_settings.py |grep enable_lb
'enable_lb': True,
- neutron.conf 수정(네트워크 노드)
root@network-jyh:/etc/init# vi /etc/neutron/neutron.conf
[DEFAULT]
...
#service_plugins = router
service_plugins = router,neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2
[service_plugins]
device_driver = neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2
- neutron_lbaas.conf 수정(네트워크 노드)
root@network-jyh:/etc/init# vi /etc/neutron/neutron_lbaas.conf
[service_providers]
...
service_provider=LOADBALANCERV2:Haproxy:neutron_lbaas.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default
- lbaas_agent.ini 수정(네트워크 노드)
root@network-jyh:~# vi /etc/neutron/lbaas_agent.ini
[DEFAULT]
...
debug = True
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
- neutron-lbaasv2-agent 재시작(네트워크 노드)
root@network-jyh:~# service neutron-lbaasv2-agent restart
neutron-lbaasv2-agent stop/waiting
neutron-lbaasv2-agent start/running, process 11602
- neutron agent 확인(컨트롤러)
root@control-jyh:/etc/init# neutron agent-list
+--------------------------------------+----------------------+-------------+-------+----------------+---------------------------+
| id | agent_type | host | alive | admin_state_up | binary |
+--------------------------------------+----------------------+-------------+-------+----------------+---------------------------+
| 023189ea-fe2f-4708-ba4f-5f91a9fb0523 | HyperV agent | 145-45 | :-) | True | neutron-hyperv-agent |
| 08f540f0-a906-4542-b006-dd70b86c5243 | HyperV agent | 145-46 | :-) | True | neutron-hyperv-agent |
| 1ef55ed2-cc19-4cba-b806-823d492916ca | Open vSwitch agent | network-jyh | :-) | True | neutron-openvswitch-agent |
| 24ff662f-a412-4645-a1e3-101c1f105512 | DHCP agent | network-jyh | :-) | True | neutron-dhcp-agent |
| 6dd9baa5-7cf2-4266-95b1-7144ee9a1704 | Metadata agent | network-jyh | :-) | True | neutron-metadata-agent |
| d3ec2293-603c-4673-993c-5290836ea083 | L3 agent | network-jyh | :-) | True | neutron-l3-agent |
| e5f670d4-3ea0-4b37-bf53-5626445c7c5e | Loadbalancerv2 agent | network-jyh | :-) | True | neutron-lbaasv2-agent |
+--------------------------------------+----------------------+-------------+-------+----------------+---------------------------+
- mitaka 버전 일시 monitoring 관련 소스 수정
root@nl-210-45:/var/lib/neutron/lbaas/v2# cat /usr/lib/python2.7/dist-packages/neutron_lbaas/services/loadbalancer/drivers/haproxy/templates/haproxy_base.j2
global
daemon
user nobody
group {{ usergroup }}
log /dev/log local0
log /dev/log local1 notice
stats socket {{ sock_path }} mode 0666 level user
defaults
log global
retries 3
option redispatch
timeout connect 5000
timeout client 50000
timeout server 50000
listen 0.0.0.0
bind :8080
mode http
stats enable
stats uri /
stats hide-version
stats refresh 5s
stats show-legends
stats show-desc
stats auth dicaniu:password --> 추가하며 계정, 비번은 알아서 할당하면된다.
{% block proxies %}{% endblock proxies %}
root@nl-210-45:/var/lib/neutron/lbaas/v2# haproxy -v
HA-Proxy version 1.6.3 2015/12/25
Copyright 2000-2015 Willy Tarreau <willy@haproxy.org>
# mitaka 버전에서는 haproxy 버전이 1.6대 이다.
- liberty 버전 일시 monitoring 관련 소스 수정
root@nl-210-39:~# cat /usr/lib/python2.7/dist-packages/neutron_lbaas/services/loadbalancer/drivers/haproxy/templates/haproxy_base.j2
global
daemon
user nobody
group {{ usergroup }}
log /dev/log local0
log /dev/log local1 notice
stats socket {{ sock_path }} mode 0666 level user
defaults
log global
retries 3
option redispatch
timeout connect 5000
timeout client 50000
timeout server 50000
listen stats :8080
mode http
stats enable
stats uri /
stats hide-version
stats refresh 5s
stats show-legends
stats show-desc
stats auth dicaniu:password
{% block proxies %}{% endblock proxies %}
root@nl-210-39:~# haproxy -v
HA-Proxy version 1.5.14 2015/07/02
Copyright 2000-2015 Willy Tarreau <willy@haproxy.org>
# liberty 버전에서는 haproxy 버전이 1.5대 이다.
8월중순까지 지켜만 보다 독촉하는 것 같아 글도 못 드리고 기다리고 있었는데, 어제 확인했습니다. 테스트 해 보겠습니다. 감사합니다.
혹시 이게 Web UI에서는 안 보이는 건가요?
neutron agent-list까지는 보이는데, web page에서는 network에 load balancer가 보이질 않습니다. 시간 되시면 답변 부탁드립니다.
Web UI로 보이지 않는 점을 제외하고는 잘 사용하고 있습니다. liberty, mitaka, newton에서 모두 잘 작동하는 것 확인했습니다. 늦었지만 감사의 마음 전합니다. 감사합니다.
바빠서 댓글을 지금 보았네요……죄송….
일단 대쉬 보드상에는 lbaasv2 버전으로는 보이지가 않습니다.
그리고 실제 사용할때 자잘한 문제 점이 있네요.
L3, DHCP 에이전트 처럼 다운시 자동으로 넘어가는 기능도 아직 보이지
않습니다…..
암튼 도움이 되셧다니 다행이네요.