Clouds

30
Библиотеки и фреймворки для построения клаудов Данилов Константин Mirantis koder-ua.blogspot.com

description

add3 slides for

Transcript of Clouds

Page 1: Clouds

Библиотеки и фреймворки для построения клаудов

Данилов КонстантинMirantis

koder-ua.blogspot.com

Page 2: Clouds

Виртуализация, какие ресурсы используются напрямую

• None : QEMU

• CPU : KVM, VmWare, HyperV

• Host HW Drivers : Xen pvirt, KVM + VirtIO, VmWare tools, ...

• OS Kernel : LXC, Solaris Zones

Page 3: Clouds

Тестирование

Page 4: Clouds

Изолированное исполнение

Page 5: Clouds

Использование ПО из другой среды

Page 6: Clouds

Виртуализация

Page 7: Clouds
Page 8: Clouds

Виртуальные сети

Управление образами

Page 9: Clouds

Миграция

Балансировка

Page 10: Clouds

API

• addImage(path, …) => id

• setImage(id, root_passwd=“…”, …)

• startVM(config, …) => (id, ip, …)

• stopVM(id)

• ……….

Page 11: Clouds
Page 12: Clouds

libvirt

Page 13: Clouds

<domain type='qemu'>

<memory>219136</memory> <vcpu>1</vcpu>

<devices> <emulator>/usr/bin/qemu</emulator>

<disk type=“block” device=“disk” >

<source dev=“/tmp/img.bin” />

<target dev=“had” bus=“ide” />

</disk>

</devices> </domain>

Page 14: Clouds

vm.img + "<vm>..</vm>"+

url = "provider://session"

conn = libvirt.open(url)

conn.createXML(cfg)

=

Page 15: Clouds

Hypervisor

VM VM VMVMVM

virsh

virsh

My Cloud

You Cloud

They Cloud

libvirt API

Hypervisor API

Page 16: Clouds

# virsh list

# virsh create config_file.xml

# virsh stop domain_id

# virsh ANY_LIBVIRT_API

Page 17: Clouds

Linux kernel : iptables, routes, etc

InternelLocal

network

VM VM VM VM

dnsmasqDHCPDNS

Virtual network #1 Virtual network #2

libvirtbin

Network settings

Page 18: Clouds

<network>

<ip address='192.168.122.1‘

netmask='255.255.255.0'>

<dhcp>

<range start='192.168.122.40'

end='192.168.122.254' />

</dhcp>

</ip>

</network>

Page 19: Clouds

libguestfs

Page 20: Clouds

Client program

libguestfs

Service VMwith Linux

Disk image

RPC

Page 21: Clouds

gfs = guestfs.GuestFS()

gfs.add_drive_opts(disk_path, format=format)

gfs.launch()

gfs.mount ("/dev/sda1", "/")

gfs.write(fname, …)

gfs.tar_out("/", ….)

hiveXXX, virt-XXX, …….

Более 400 функций в API

Page 22: Clouds

$ guestfish << _EOF_

add disk.img

run

mount /dev/vg_guest/lv_root /

write /etc/motd "Welcome, new users"

_EOF_

Page 23: Clouds

shell + virsh + guestfish

=

Page 24: Clouds

Другие задачи

• Вспомогательные сетевые функции - scapy

• Балансировка нагрузки

• Мониторинг - graphit

• Автодеплой - chef, fabric, …

• ……

Page 25: Clouds

github.com/koder-ua/tiny_cloud

локальное облако на python в ~300 строк

Page 26: Clouds

Проблемы такого решения

Page 27: Clouds
Page 28: Clouds

Q &A

Page 29: Clouds
Page 30: Clouds

Облака