Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
ToastCloud:
OpenStack 기반의 클라우드 구축과 운영
ⓒ 2015 NHN Entertainment Corp.
이병준 / 수석 / 클라우드개발팀
NHN ENTERTAINMENT
KRNet 2015
ToastCloud: 게임 회사를 주요 고객으로 하는
클라우드 서비스
http://cloud.toast.com
2014년 하반기부터 서비스 시작
7 / Toast Cloud: OpenStack 기반의 구축과 운영
ToastCloud
• 서비스 제공자로서의 ToastCloud
– 인프라 서비스 (IaaS)
• Compute
• Network
• Storage
– 상품 서비스 (PaaS)
• Analytics
– Game Analytics
– Log & Crash Search
• Game
– Leaderboard (Ranking)
• Common
– Launching
– IAP (In-App Purchase)
• 이외에도 다양한 상품들을 개발 중
8 / Toast Cloud: OpenStack 기반의 구축과 운영
ToastCloud는 국내 유일의
OpenStack 기반 IaaS 사업자입니다
하지만 OpenStack 기반의 클라우드 서비스는
절대 간단한 일이 아니었고 우리는 그 사실을
너무 늦게 알았… (오열)
그리고 우리가 배운 교훈들
교훈 #1 대부분의 문제는
설정에서 비롯된다
초기
윈도 98창사 이래 가장 자주 다시 깔았던 SW
13 / Toast Cloud: OpenStack 기반의 구축과 운영
Saltstack
• Role 기반으로 설정을 내릴 수 있다
• 대부분의 배포 시스템이 그렇듯이, master가 털리면 모든 노드를 공격 가능 – 미니언 노드에 사설 키를 설정할 수 있으나 일단 해당 키가 마스터에 넘어가면
제어권은 통째로 마스터에게 전달됨
– Salt 미니언 키들을 전부 암호화 해서 암호화를 해제하지 않으면 salt master 프로그램을 실행할 수 없도록 하는 것도 한 가지 방법
• Salt master의 1회 실행 후에는 다시 암호화
• 물론 보안에 취약한 구간이 존재하므로 완벽한 방법은 아니고, AAA 구현 필요
openstack-nova-api: service: - order: 301 - enable: True - running - watch: - file: /etc/nova/nova.conf - require: - pkg: openstack-nova-api-pkgs
14 / Toast Cloud: OpenStack 기반의 구축과 운영
Crowbar
• OpenStack-focused deployment framework
– https://www.youtube.com/watch?v=J4BpqwMuIc8
– OpenCrowbar (aka v2) - https://crowbar.github.io/home.html
https://www.openstack.org/summit/san-diego-2012/openstack-summit-sessions/presentation/crowbar-for-openstack-deployments
http://www.slideshare.net/shane_gibson/open-stack-hong-kong-summit-2013
Mellanox
교훈 #2 VxLAN은 아직
느리다
중기
DPDK STT
18 / Toast Cloud: OpenStack 기반의 구축과 운영
Stateless Transport Tunneling (STT)
• NSX가 지원하는 대안적 tunneling protocol – 대부분 NIC이 기본적으로 지원하는 TCP Offloading의 혜택을 누릴 수 있음
• http://www.plexxi.com/2014/01/stateless-transport-tunneling-stt-meets-network/
– 최적 구성에서 Line speed에 근접하는 성능
19 / Toast Cloud: OpenStack 기반의 구축과 운영
Mellanox ConnectX-3 Pro EN Dual-Port 10 Gbps Ethernet Adapter Card
• 주요 기능 (MCX312B-XCCT)
– 1us MPI ping latency
– Up to 10GbE per port
– Dual-Port
– PCI Express 3.0 (up to 8GT/s)
– CPU offload of transport operations
– Application offload
– Precision Clock Synchronization
– HW Offloads for NVGRE and VXLAN encapsulated traffic
– End-to-end QoS and congestion control
– Hardware-based I/O virtualization
– RoHS-R6
• 가격
– $235.00
• 10G Intel NIC에 비해 크게 비싸지 않음 (카드 종류에 따라서는 오히려 저렴…)
20 / Toast Cloud: OpenStack 기반의 구축과 운영
Intel Adapters
• 종류 – X5** 시리즈 (Ethernet Converged Network Adapter) 등등 – 대체로 Intelligent offloads 기능이 들어가있는 최신 adapter 들이
VXLAN offload 지원
• 소개자료 – http://www.intel.com/content/dam/www/public/us/en/documents/technology-
briefs/overlay-networks-using-converged-network-adapters-brief.pdf – http://www.vmware.com/files/pdf/techpaper/VMware-vSphere-VXLAN-Perf.pdf – Works well with Openvswitch 1.10+ – ethtool -K ethX tx-udp_tnl-segmentation [ off | on ]
82599EB 10-Gigabit SFI/SFP+ Network Connection NIC Performance
21 / Toast Cloud: OpenStack 기반의 구축과 운영
Hierarchical Port-Binding in Kilo
• Allows Neutron port to bind multiple network segments together
교훈 #3 Neutron Network Node는 (아직) 쓸만한 물건이 아니다
말기
HA는 요령부득 게다가 DVR과 같이 돌릴 수도 없… (JUNO)
23 / Toast Cloud: OpenStack 기반의 구축과 운영
JUNO에서의 Neutron HA 테스트 (1)
• 테스트 시나리오
External (enp2s0f1) – 10.24.137.96/27 (255.255.255.224)
Controller/ Horizon
Compute Network #1 Network #2 Ext-node (for test)
10.24.148.21 10.24.148.22 10.24.148.23 10.24.148.25 10.24.148.26
Mgmt (enp2s0f0)
unnumbered unnumbered 10.24.137.101
Service (ens2f0) – tunnel network
172.20.1.22 172.20.1.23 172.20.1.25
√ √ √ √ √
√
#1: neutron create-router demo-router neutron router-gateway-set demo-router ext-net
#2: ping 10.24.137.XXX
24 / Toast Cloud: OpenStack 기반의 구축과 운영
JUNO에서의 Neutron HA 테스트 (2)
• 테스트 항목 (1)
시험항목 목적 결과
1 systemctl stop neutron-l3-agent L3 agent의 장애에 따른 영향 측정 • 영향 없음
2 systemctl stop \ neutron-openvswitch-agent
openvswitch agent의 장애에 따른 영향 측정
• ovs의 인터페이스 등을 다시 설정하면서 수 ms 가량의 지연 발생
3 systemctl stop openvswitch openvswitch 자체 장애에 따른 영향 측정
• 중단 후 15~20초 내에 public IP에 대한 ping 단절
• BACKUP router는 아무 반응 없음 • Systemctl start openvswitch를 다시 하면
ping 다시 재개되고 BACKUP이었던 라우터가 즉각 MASTER가 됨
• 노드의 상태를 완전 복구하려면 openvswitch 소실 노드에서 systemctl restart neutron-openvswitch-restart
• MASTER였던 openvswitch 소실 노드는 BACKUP 노드로 전환됨
4 reboot MASTER 노드 시스템 전체적인 장애에 따른 영향 측정
• BACKUP이었던 노드가 MASTER가 됨 • 9초 가량 PING 단절 • reboot된 노드를 복구하면 30초 가량
ping 단절 발생 • 복구된 노드는 BACKUP 노드가 됨
25 / Toast Cloud: OpenStack 기반의 구축과 운영
JUNO에서의 Neutron HA 테스트 (3)
• 테스트 항목 (2)
시험항목 목적 결과
5 MASTER 측 ip link set br-ens2f0 down
서비스 link failure emulation을 통한 영향 측정
• Bridge down은 아무 영향 없음
6 MASTER 측 ip link set ens2f0 down 서비스 link failure emulation을 통한 영향 측정
• BACKUP 라우터가 MASTER로 전환됨 • 8초 뒤에 PING 재개 • 기존 MASTER 노드는 그대로 MASTER로
남아 있음 • 링크를 복구하면 14초 후에 기존 MASTER
노드가 BACKUP으로 전환됨 • PING에는 영향 없음
7 MASTER 측 ip link set br-ex down outgoing (external) 링크 소실에 따른 영향 측정
• Bridge down은 아무 영향 없음
8 MASTER 측 ip link set enp2s0f1 down
outgoing (external) 링크 소실에 따른 영향 측정
• 외부 네트워크와의 통신 장애만 발생 • HA 라우터간에는 절체 없음 • ip link set enp2s0f1 up으로 복구됨
9 Router 삭제 후 IP namespace도 함께 사라지는지의 여부 시험
설정의 정상적 복원 여부 테스트
• neutron router-delete로 라우터를 삭제한 이후 ip netns로 확인해보면 HA 라우터에 할당되어 있던 namespace가 삭제되지 않고 남아 있음
• 이후 신규 라우터 생성시 새로운 namespace가 생성됨
• 수동 삭제 필요
26 / Toast Cloud: OpenStack 기반의 구축과 운영
JUNO에서의 Neutron HA 테스트 (4)
• 결론
– Openvswitch daemon의 소실 시 anomaly 발생
• Openvswitch 문제 때문에 두 노드 간 통신이 안 되는 경우에 대한 특별한 대책이 없음
– 하나의 HA router set 당 하나의 segment (VLAN ID)를 사용함
• 단, VXLAN으로 이행할 경우에는 특별한 문제 없음
– 절체 시간
• 최소 9+초 최대 30+초
• 중단 노드를 복구하는 동안에도 쓸데없는 서비스 중단이 발생
– 외부 네트워크와의 링크를 담당하는 NIC이나 LINK가 사라질 경우에는 대책이 없음
• 장점
– 구성이 간단(?)함
– 여러 노드에 동시에 HA router 프로세스를 설치할 수 있음
• 1:N 구성이 가능함
27 / Toast Cloud: OpenStack 기반의 구축과 운영
전망 (1)
• Kilo?
– Dragonflow
• https://github.com/stackforge/dragonflow
• SDN 기술을 사용하여 EW 트래픽을 Network Node로부터 분리
• L3 High-Availability 문제를 해결하려 시도
• 상용 수준까지는 아직 갈 길이…
28 / Toast Cloud: OpenStack 기반의 구축과 운영
전망 (2)
• 동작 방식
1. Classify the traffic
2. Forward to the appropriate element:
1. If it is ARP, forward to the ARP Responder table
2. If routing is required (L3), forward to the L3 Forwarding table (which implements a virtual router)
3. All L2 traffic and local subnet traffic are offloaded to the NORMAL pipeline handled by ML2
4. North/South traffic is forwarded to the network node (SNAT)
29 / Toast Cloud: OpenStack 기반의 구축과 운영
전망 (3)
교훈 #4 공인 IP 고갈이
순식간
말기
클라우드 스택은 IP 하나로 여러 VM이 포트를 나눠서 쓸 수 있건만…
그래서 준비했습니다
V6!! (Kilo+)
교훈 #5 OpenStack을
함부로 의심하지 말 것
말기
OpenStack이 언제나 문제의 원흉은 아니다
32 / Toast Cloud: OpenStack 기반의 구축과 운영
최근 많은 문제를 일으킨 Linux Update: NetworkManager
• 알려진 문제점들
– /etc/sysconfig/network-scripts/ifcfg-xxx 파일의 정적 구성 무력화
• IP 주소 설정
• Bonding 구성
– Network manager를 통해 설정하지 않은 구성은 전부 round-robin으로 override
• MAC 주소가 존재하는 모든 bridge에 대해 DHCP DISCOVER 전송
– 네트워크가 다량의 DHCP 트래픽으로 오염
교훈 #6 OpenStack을 자주 의심할 것
말기
Kilo에서 교정된 버그 개수가 7000+
34 / Toast Cloud: OpenStack 기반의 구축과 운영
도입 전략
• OpenStack을 도입하고 싶으면 가급적 아무 것도 고치지 말라
– 언제 무엇이 바뀔 지 모른다
– 굳이 뭘 하고 싶다면 새로운 플러그인을 만들라
– 그렇더라도 소스코드는 속속들이 읽으라
• 고치고 싶다면 Committer가 되라
– 그럴 생각이 없다면 손대지 말자
– 당신이 더한 코드 덕분에 Upgrade가 힘들어진다
– OpenStack을 Upgrade하는 가장 쉬운 방법은 “덮어쓰기”
• 좋은 운영 인력을 확보하라
– 좋은 운영 인력이란?
• OpenStack 커뮤니티의 동향을 주의 깊게 살피고
• 기능 테스트를 상시 진행할 수 있으며
• 전체 시스템 업그레이드 없이 패치를 진행할 수 있는 역량이 있고
• OpenStack 기반 개발에 대한 PM 역할을 할 수 있는 역량이 있으며
• OpenStack에서 생긴 문제에 대한 기본적 Troubleshooting 역량이 있을 것
교훈 #7 VM 밀도와
단가
말기
하나의 서버에 몇 개의 VM을 우겨 넣을 수 있나
36 / Toast Cloud: OpenStack 기반의 구축과 운영
LXD
• LXC 기반
– Ubuntu가 지원하는 Container 기술
• LXD
– 컨테이너 기술 위에 구축된 하이퍼바이저
– VM들은 커널 이미지 공유
Why use LXD
37 / Toast Cloud: OpenStack 기반의 구축과 운영
LXD and OpenStack
교훈 #8 OVS안에선 대체 무슨 일이?
말기
알면 알수록 복잡한 OVS
39 / Toast Cloud: OpenStack 기반의 구축과 운영
Complexity
40 / Toast Cloud: OpenStack 기반의 구축과 운영
DON (Diagnosing OVS in Neutron)
• Automates basic troubleshooting steps
– http://docs.openstack.org/openstack-ops/content/network_troubleshooting.html
42 / Toast Cloud: OpenStack 기반의 구축과 운영
Future of DON
• Should be a part of Horizon
• And now, going open-source
마지막 교훈: OpenStack DevOps는 어떤 모습이어야 하는가
말기
44 / Toast Cloud: OpenStack 기반의 구축과 운영
개발 (dev)
설치 (deploy)
테스트 (test)
운영 (ops)
뭔가를 열심히 개발하거나…
OpenStack의 새 기능을 신속하게 써보고 싶거나…
문제가 없다면… 깔아도 되는 건가
DevOps?
45 / Toast Cloud: OpenStack 기반의 구축과 운영
Ubuntu Openstack CI
• https://launchpad.net/ubuntu-openstack-ci – Multi-node deployment, deployed from source – Tempest
• https://github.com/openstack/tempest • http://docs.openstack.org/developer/tempest/
46 / Toast Cloud: OpenStack 기반의 구축과 운영
Canonical’s OpenStack CI-as-a-Service
https://www.openstack.org/summit/vancouver-2015/summit-videos/presentation/openstack-ci-as-a-service
47 / Toast Cloud: OpenStack 기반의 구축과 운영
Landscape - AutoPilot (1)
48 / Toast Cloud: OpenStack 기반의 구축과 운영
Landscape - AutoPilot (2)
We are hiring!
감사합니다