clouds
DESCRIPTION
add3 slides forTRANSCRIPT
![Page 1: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/1.jpg)
Библиотеки и фреймворки для построения клаудов
Данилов КонстантинMirantis
koder-ua.blogspot.com
![Page 2: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/2.jpg)
Виртуализация, какие ресурсы используются напрямую
• None : QEMU
• CPU : KVM, VmWare, HyperV
• Host HW Drivers : Xen pvirt, KVM + VirtIO, VmWare tools, ...
• OS Kernel : LXC, Solaris Zones
![Page 3: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/3.jpg)
Тестирование
![Page 4: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/4.jpg)
Изолированное исполнение
![Page 5: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/5.jpg)
Использование ПО из другой среды
![Page 6: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/6.jpg)
Виртуализация
![Page 7: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/7.jpg)
![Page 8: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/8.jpg)
Виртуальные сети
Управление образами
![Page 9: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/9.jpg)
Миграция
Балансировка
![Page 10: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/10.jpg)
API
• addImage(path, …) => id
• setImage(id, root_passwd=“…”, …)
• startVM(config, …) => (id, ip, …)
• stopVM(id)
• ……….
![Page 11: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/11.jpg)
![Page 12: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/12.jpg)
libvirt
![Page 13: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/13.jpg)
<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](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/14.jpg)
vm.img + "<vm>..</vm>"+
url = "provider://session"
conn = libvirt.open(url)
conn.createXML(cfg)
=
![Page 15: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/15.jpg)
Hypervisor
VM VM VMVMVM
virsh
virsh
My Cloud
You Cloud
They Cloud
libvirt API
Hypervisor API
![Page 16: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/16.jpg)
# virsh list
# virsh create config_file.xml
# virsh stop domain_id
# virsh ANY_LIBVIRT_API
![Page 17: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/17.jpg)
Linux kernel : iptables, routes, etc
InternelLocal
network
VM VM VM VM
dnsmasqDHCPDNS
Virtual network #1 Virtual network #2
libvirtbin
Network settings
![Page 18: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/18.jpg)
<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](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/19.jpg)
libguestfs
![Page 20: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/20.jpg)
Client program
libguestfs
Service VMwith Linux
Disk image
RPC
![Page 21: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/22.jpg)
$ guestfish << _EOF_
add disk.img
run
mount /dev/vg_guest/lv_root /
write /etc/motd "Welcome, new users"
_EOF_
![Page 23: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/23.jpg)
shell + virsh + guestfish
=
![Page 24: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/24.jpg)
Другие задачи
• Вспомогательные сетевые функции - scapy
• Балансировка нагрузки
• Мониторинг - graphit
• Автодеплой - chef, fabric, …
• ……
![Page 25: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/25.jpg)
github.com/koder-ua/tiny_cloud
локальное облако на python в ~300 строк
![Page 26: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/26.jpg)
Проблемы такого решения
![Page 27: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/27.jpg)
![Page 28: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/28.jpg)
Q &A
![Page 29: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/29.jpg)
![Page 30: Clouds](https://reader035.vdocuments.net/reader035/viewer/2022062710/559705f11a28abcd0e8b45e6/html5/thumbnails/30.jpg)
Облака