SlideShare a Scribd company logo
1 of 32
Download to read offline
LXC on Ganeti 
Yuto Kawamura(kawamuray) 
Email: kawamuray.dadada@gmail.com
Google summer of Code 
● Global program that offers students stipends to write code for open source 
projects 
● 4420 students 
● 6313 proposals 
● (don’t know how much of them were accepted)
Improve LXC support 
● Project accepted by Ganeti on Google Summer of Code 2014 
● Objective 
○ Improve LXC support on Ganeti 
○ Fix existing broken implementation 
○ Add unit tests 
○ Setup QA 
○ Add additional features 
● Mentored by Hrvoje Ribicic
LXC 
● An userspace interface for the Linux kernel containment features 
● Operating System level virtualization 
● Composed by two Linux kernel features 
○ Namespace - Isolation for pid, ipc, mount, net, user between 
containers and the host 
○ Cgroup - Hardware resource limitation
× Console 
× Reboot(soft) 
× Memory ballooning 
✔ Network(veth) 
× Migration(stopped) 
× Migration(live) 
△ Verification 
LXC version: any 
Before and After 
✔ Console 
✔ Reboot(soft) 
✔ Memory ballooning 
✔ Network(veth) 
△ Migration(stopped) 
× Migration(live) 
✔ Verification 
LXC version: >= 1.0.0
● cpu_mask: Cpu mask. Same as other hypervisors but no support for vcpus 
pinning 
● lxc_cgroup_use: Cgroup subsystems list. Correspond to lxc.cgroup.use 
configuration parameter 
● lxc_devices: The list of devices ACL. 
● lxc_drop_capabilities: List of capabilities which should be dropped for an 
instance. 
● lxc_tty: Number of ttys(ptys) created for an instance. 
● lxc_startup_wait: Time to wait until a daemonized instance state changed 
to RUNNING. 
Parameters
Parameters 
● lxc_extra_config: For extra configuration parameters 
○ Separating by comma is problem 
○ Planning to introduce a functionality to read the value from a file
How to try? 
1. Enable cgroup subsystems(if needed) 
a. cpuset, memory, devices, cpuacct 
b. Debian: Need “cgroup_enable=memory” in kernel argument 
2. Install LXC >= 1.0.0 
3. Check your kernel configuration 
$ sudo lxc-checkconfig 
--- Namespaces --- 
Namespaces: enabled 
Utsname namespace: enabled 
Ipc namespace: enabled 
Pid namespace: enabled 
User namespace: enabled 
Network namespace: enabled 
Multiple /dev/pts instances: 
enabled ...
4. 
5. 
6. 
How to try? 
gnt-cluster modify  
--enabled-hypervisors=kvm,lxc  # enable lxc hv 
--nic-parameters mode=bridge,link=br0 # your brdige interface 
gnt-cluster verify # Checks your environment by LXC hypervisor 
gnt-instance add  
-H lxc  # use LXC hypervisor! 
-o debootstrap+default  
-t drbd -s 8G lxc-instance1.ganeti 
↑ will automatically modify the fstab of the instance to make it proper for the 
LXC container(riba is working for it) 
It’s all! Easy right?
● Log file 
Tips - How to debug? 
○ $PREFIX/var/log/ganeti/lxc/<instance name>.<instance uuid>.log 
■ Logs from lxc-start command 
■ Mainly used when your instance didn’t started 
○ $PREFIX/var/run/ganeti/lxc/<instance name>.console 
■ Logs from processes inside the container(init, rc, etc.) 
■ See when you cannot use `gnt-instance console …`
Implementations
Basic policy 
● LXC containers are managed by command line tools 
○ lxc-start, lxc-stop, lxc-ls, lxc-info … 
● Not using lxc python library(written in python3)
Instance Start 
1. lxc-start -n <instance name> … 
-f $PREFIX/var/run/ganeti/lxc/<instance name>.conf 
2. lxc-wait -n <instance name> -s RUNNING 
a. with timeout specified by the lxc_startup_wait hvparam
Instance Stop 
● Soft shutdown 
○ lxc-stop --nokill -n <instance name> 
■ Send SIGPWR to the init 
● Overwritable with lxc.haltsignal 
■ Wait until init exits 
● Hard(forced) shutdown 
○ lxc-stop --kill -n <instance name> 
■ Send SIGKILL to the init 
■ Container killed without normal shutting down process
Instance Reboot 
● Soft reboot 
○ lxc-stop --reboot -n <instance name> 
■ Send SIGINT to the init 
○ Requires CAP_SYS_BOOT 
● Hard rebot 
○ Same as other hypervisors 
■ soft shutdown && start
Memory ballooning 
● Use Cgroup memory subsystem 
● memory.limit_in_bytes 
● memory.memsw.limit_in_bytes 
● Shrinking memory will fail if the kernel can’t reclaim memory from 
processes inside the container
Cgroup filesystem 
● Differences between distributions/rc system 
1. Search /proc/mounts for line having type == cgroup && <subsystem> in 
options 
2. If not found, do: mount -t cgroup -o <subsystem> <subsystem> 
$PREFIX/var/run/lxc/cgroup/<subsystem>
Storage mount 
● LXC can’t handle raw storage device 
● Need to prepare per-pertition(mountable) device file for a LXC rootfs 
● Use kpartx(1) 
○ Create device maps for over partitions segments detected 
○ Suppose every environment have it(because OS scripts uses it) 
kpartx -a 
/dev/drbdX /dev/loopY 
/dev/mapper/loopYp1 
/dev/mapper/loopYp1 
Per-partition 
device files
Storage mount 
● Use first partition as a rootfs 
○ lxc.rootfs = /dev/mapper/loopNp1 
● You may have to increase the number of max_loop
Quality 
● Tested on Debian Linux/Gentoo Linux with LXC 1.0.0 and 1.0.5 
● Passed basic QA 
but … 
● Need more example of use 
● Possibly contains platform(distribution) related problems 
○ especially around the cgroup
What’s next?
Future candidates 
● Two level isolation(IOW, containers inside a Virtual Machine) 
● LXC instance migration
Two level isolation 
KVM1 for userA 
Container 1 Container 2 
Container 3 
KVM2 for userB 
Container 1 Container 2 
Hardware/OS Container 3 
level Isolation 
noded 
with attribute? 
noded 
with attribute?
Instance Migration 
● LXC has no migration functionality 
● Have to implement it on our own
Checkpoint/Restore 
● Implemented by project CRIU (http://criu.org/) 
● Able to dump a running processes into serialized images 
○ Serialized in protocol buffers format 
/path/to/checkpoint/dir 
----- Memory image 
----- Namespaces info 
----- File descriptors 
----- Cgroup info 
----- TCP sockets 
----- Network informations
lxc-checkpoint
LXC migration 
Source host Destination host 
/dev/loopX drbd drbd /dev/loopX 
LXC 
instance 
4. lxc-checkpoint -r 
... 
2. Transfer images 
via rsync(or what ever) 
1. lxc-checkpoint ... 
LXC 
instance 
Checkpoint images Checkpoint images 
3. Create 
partition 
mapping 
5. Destroy 
partition 
mapping
Instance migration 
● Already have working implementation 
○ https://github.com/kawamuray/ganeti/commits/topic-lxc-migration 
● but … 
○ its temporaily implementation 
○ still have lot of restrictions 
○ requires patched criu 
■ https://github.com/kawamuray/criu 
○ requires patched lxc 
■ https://github.com/kawamuray/lxc 
● will be solved soon(by sending patches to originals and by fixing 
implementation)
Demo
We really want 
● Example of use 
○ on many platforms(Debian, RHEL6/7, …) 
● Bug report 
● Realistic use case 
● Desired functionality 
○ possibly I can handle it from both Ganeti and LXC aspect
Special thanks to Riba 
For your great mentorship!
Questions? 
Opinions? 
Ideas? 
Requests?

More Related Content

What's hot

Testing Wi-Fi with OSS Tools
Testing Wi-Fi with OSS ToolsTesting Wi-Fi with OSS Tools
Testing Wi-Fi with OSS ToolsAll Things Open
 
Container & kubernetes
Container & kubernetesContainer & kubernetes
Container & kubernetesTed Jung
 
Kubernetes internals (Kubernetes 해부하기)
Kubernetes internals (Kubernetes 해부하기)Kubernetes internals (Kubernetes 해부하기)
Kubernetes internals (Kubernetes 해부하기)DongHyeon Kim
 
Kernel Recipes 2015 - Porting Linux to a new processor architecture
Kernel Recipes 2015 - Porting Linux to a new processor architectureKernel Recipes 2015 - Porting Linux to a new processor architecture
Kernel Recipes 2015 - Porting Linux to a new processor architectureAnne Nicolas
 
What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...
What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...
What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...ScaleGrid.io
 
nginx: writing your first module
nginx: writing your first modulenginx: writing your first module
nginx: writing your first moduleredivy
 
Docker on openstack by OpenSource Consulting
Docker on openstack by OpenSource ConsultingDocker on openstack by OpenSource Consulting
Docker on openstack by OpenSource ConsultingOpen Source Consulting
 
Make Your Containers Faster: Linux Container Performance Tools
Make Your Containers Faster: Linux Container Performance ToolsMake Your Containers Faster: Linux Container Performance Tools
Make Your Containers Faster: Linux Container Performance ToolsKernel TLV
 
Bypassing ASLR Exploiting CVE 2015-7545
Bypassing ASLR Exploiting CVE 2015-7545Bypassing ASLR Exploiting CVE 2015-7545
Bypassing ASLR Exploiting CVE 2015-7545Kernel TLV
 
Deploying MongoDB sharded clusters easily with Terraform and Ansible
Deploying MongoDB sharded clusters easily with Terraform and AnsibleDeploying MongoDB sharded clusters easily with Terraform and Ansible
Deploying MongoDB sharded clusters easily with Terraform and AnsibleAll Things Open
 
PGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky Haryadi
PGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky HaryadiPGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky Haryadi
PGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky HaryadiEqunix Business Solutions
 
Container-relevant Upstream Kernel Developments
Container-relevant Upstream Kernel DevelopmentsContainer-relevant Upstream Kernel Developments
Container-relevant Upstream Kernel DevelopmentsDocker, Inc.
 
Couch to OpenStack: Nova - July, 30, 2013
Couch to OpenStack: Nova - July, 30, 2013Couch to OpenStack: Nova - July, 30, 2013
Couch to OpenStack: Nova - July, 30, 2013Trevor Roberts Jr.
 
Cinder Live Migration and Replication - OpenStack Summit Austin
Cinder Live Migration and Replication - OpenStack Summit AustinCinder Live Migration and Replication - OpenStack Summit Austin
Cinder Live Migration and Replication - OpenStack Summit AustinEd Balduf
 
[오픈소스컨설팅] Linux Network Troubleshooting
[오픈소스컨설팅] Linux Network Troubleshooting[오픈소스컨설팅] Linux Network Troubleshooting
[오픈소스컨설팅] Linux Network TroubleshootingOpen Source Consulting
 
Coredns nodecache - A highly-available Node-cache DNS server
Coredns nodecache - A highly-available Node-cache DNS serverCoredns nodecache - A highly-available Node-cache DNS server
Coredns nodecache - A highly-available Node-cache DNS serverYann Hamon
 
Linux kernel debugging
Linux kernel debuggingLinux kernel debugging
Linux kernel debugginglibfetion
 
Apache httpd reverse proxy and Tomcat
Apache httpd reverse proxy and TomcatApache httpd reverse proxy and Tomcat
Apache httpd reverse proxy and TomcatJean-Frederic Clere
 
Neutron Network Namespaces and IPtables--A Technical Deep Dive
Neutron Network Namespaces and IPtables--A Technical Deep DiveNeutron Network Namespaces and IPtables--A Technical Deep Dive
Neutron Network Namespaces and IPtables--A Technical Deep DiveMirantis
 

What's hot (20)

Testing Wi-Fi with OSS Tools
Testing Wi-Fi with OSS ToolsTesting Wi-Fi with OSS Tools
Testing Wi-Fi with OSS Tools
 
Container & kubernetes
Container & kubernetesContainer & kubernetes
Container & kubernetes
 
Kubernetes internals (Kubernetes 해부하기)
Kubernetes internals (Kubernetes 해부하기)Kubernetes internals (Kubernetes 해부하기)
Kubernetes internals (Kubernetes 해부하기)
 
Kernel Recipes 2015 - Porting Linux to a new processor architecture
Kernel Recipes 2015 - Porting Linux to a new processor architectureKernel Recipes 2015 - Porting Linux to a new processor architecture
Kernel Recipes 2015 - Porting Linux to a new processor architecture
 
What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...
What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...
What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...
 
nginx: writing your first module
nginx: writing your first modulenginx: writing your first module
nginx: writing your first module
 
Docker / Ansible
Docker / AnsibleDocker / Ansible
Docker / Ansible
 
Docker on openstack by OpenSource Consulting
Docker on openstack by OpenSource ConsultingDocker on openstack by OpenSource Consulting
Docker on openstack by OpenSource Consulting
 
Make Your Containers Faster: Linux Container Performance Tools
Make Your Containers Faster: Linux Container Performance ToolsMake Your Containers Faster: Linux Container Performance Tools
Make Your Containers Faster: Linux Container Performance Tools
 
Bypassing ASLR Exploiting CVE 2015-7545
Bypassing ASLR Exploiting CVE 2015-7545Bypassing ASLR Exploiting CVE 2015-7545
Bypassing ASLR Exploiting CVE 2015-7545
 
Deploying MongoDB sharded clusters easily with Terraform and Ansible
Deploying MongoDB sharded clusters easily with Terraform and AnsibleDeploying MongoDB sharded clusters easily with Terraform and Ansible
Deploying MongoDB sharded clusters easily with Terraform and Ansible
 
PGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky Haryadi
PGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky HaryadiPGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky Haryadi
PGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky Haryadi
 
Container-relevant Upstream Kernel Developments
Container-relevant Upstream Kernel DevelopmentsContainer-relevant Upstream Kernel Developments
Container-relevant Upstream Kernel Developments
 
Couch to OpenStack: Nova - July, 30, 2013
Couch to OpenStack: Nova - July, 30, 2013Couch to OpenStack: Nova - July, 30, 2013
Couch to OpenStack: Nova - July, 30, 2013
 
Cinder Live Migration and Replication - OpenStack Summit Austin
Cinder Live Migration and Replication - OpenStack Summit AustinCinder Live Migration and Replication - OpenStack Summit Austin
Cinder Live Migration and Replication - OpenStack Summit Austin
 
[오픈소스컨설팅] Linux Network Troubleshooting
[오픈소스컨설팅] Linux Network Troubleshooting[오픈소스컨설팅] Linux Network Troubleshooting
[오픈소스컨설팅] Linux Network Troubleshooting
 
Coredns nodecache - A highly-available Node-cache DNS server
Coredns nodecache - A highly-available Node-cache DNS serverCoredns nodecache - A highly-available Node-cache DNS server
Coredns nodecache - A highly-available Node-cache DNS server
 
Linux kernel debugging
Linux kernel debuggingLinux kernel debugging
Linux kernel debugging
 
Apache httpd reverse proxy and Tomcat
Apache httpd reverse proxy and TomcatApache httpd reverse proxy and Tomcat
Apache httpd reverse proxy and Tomcat
 
Neutron Network Namespaces and IPtables--A Technical Deep Dive
Neutron Network Namespaces and IPtables--A Technical Deep DiveNeutron Network Namespaces and IPtables--A Technical Deep Dive
Neutron Network Namespaces and IPtables--A Technical Deep Dive
 

Similar to LXC on Ganeti

Docker 原理與實作
Docker 原理與實作Docker 原理與實作
Docker 原理與實作kao kuo-tung
 
Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)Dobrica Pavlinušić
 
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013dotCloud
 
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Docker, Inc.
 
Talk 160920 @ Cat System Workshop
Talk 160920 @ Cat System WorkshopTalk 160920 @ Cat System Workshop
Talk 160920 @ Cat System WorkshopQuey-Liang Kao
 
Linuxcon Barcelon 2012: LXC Best Practices
Linuxcon Barcelon 2012: LXC Best PracticesLinuxcon Barcelon 2012: LXC Best Practices
Linuxcon Barcelon 2012: LXC Best Practiceschristophm
 
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo..."Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...Yandex
 
Security of Linux containers in the cloud
Security of Linux containers in the cloudSecurity of Linux containers in the cloud
Security of Linux containers in the cloudDobrica Pavlinušić
 
Docker and-containers-for-development-and-deployment-scale12x
Docker and-containers-for-development-and-deployment-scale12xDocker and-containers-for-development-and-deployment-scale12x
Docker and-containers-for-development-and-deployment-scale12xrkr10
 
Fedora Virtualization Day: Linux Containers & CRIU
Fedora Virtualization Day: Linux Containers & CRIUFedora Virtualization Day: Linux Containers & CRIU
Fedora Virtualization Day: Linux Containers & CRIUAndrey Vagin
 
2. Vagin. Linux containers. June 01, 2013
2. Vagin. Linux containers. June 01, 20132. Vagin. Linux containers. June 01, 2013
2. Vagin. Linux containers. June 01, 2013ru-fedora-moscow-2013
 
Docker Introduction, and what's new in 0.9 — Docker Palo Alto at RelateIQ
Docker Introduction, and what's new in 0.9 — Docker Palo Alto at RelateIQDocker Introduction, and what's new in 0.9 — Docker Palo Alto at RelateIQ
Docker Introduction, and what's new in 0.9 — Docker Palo Alto at RelateIQJérôme Petazzoni
 
Docker Introduction + what is new in 0.9
Docker Introduction + what is new in 0.9 Docker Introduction + what is new in 0.9
Docker Introduction + what is new in 0.9 Jérôme Petazzoni
 
Scaling Up Logging and Metrics
Scaling Up Logging and MetricsScaling Up Logging and Metrics
Scaling Up Logging and MetricsRicardo Lourenço
 
Ippevent : openshift Introduction
Ippevent : openshift IntroductionIppevent : openshift Introduction
Ippevent : openshift Introductionkanedafromparis
 
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)Kevin Lynch
 
Java and Containers - Make it Awesome !
Java and Containers - Make it Awesome !Java and Containers - Make it Awesome !
Java and Containers - Make it Awesome !Dinakar Guniguntala
 
Let's Containerize New York with Docker!
Let's Containerize New York with Docker!Let's Containerize New York with Docker!
Let's Containerize New York with Docker!Jérôme Petazzoni
 

Similar to LXC on Ganeti (20)

Docker 原理與實作
Docker 原理與實作Docker 原理與實作
Docker 原理與實作
 
Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)
 
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
 
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
 
Talk 160920 @ Cat System Workshop
Talk 160920 @ Cat System WorkshopTalk 160920 @ Cat System Workshop
Talk 160920 @ Cat System Workshop
 
Linuxcon Barcelon 2012: LXC Best Practices
Linuxcon Barcelon 2012: LXC Best PracticesLinuxcon Barcelon 2012: LXC Best Practices
Linuxcon Barcelon 2012: LXC Best Practices
 
Containers > VMs
Containers > VMsContainers > VMs
Containers > VMs
 
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo..."Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...
 
Security of Linux containers in the cloud
Security of Linux containers in the cloudSecurity of Linux containers in the cloud
Security of Linux containers in the cloud
 
Docker and-containers-for-development-and-deployment-scale12x
Docker and-containers-for-development-and-deployment-scale12xDocker and-containers-for-development-and-deployment-scale12x
Docker and-containers-for-development-and-deployment-scale12x
 
Fedora Virtualization Day: Linux Containers & CRIU
Fedora Virtualization Day: Linux Containers & CRIUFedora Virtualization Day: Linux Containers & CRIU
Fedora Virtualization Day: Linux Containers & CRIU
 
2. Vagin. Linux containers. June 01, 2013
2. Vagin. Linux containers. June 01, 20132. Vagin. Linux containers. June 01, 2013
2. Vagin. Linux containers. June 01, 2013
 
Containers @ Google
Containers @ GoogleContainers @ Google
Containers @ Google
 
Docker Introduction, and what's new in 0.9 — Docker Palo Alto at RelateIQ
Docker Introduction, and what's new in 0.9 — Docker Palo Alto at RelateIQDocker Introduction, and what's new in 0.9 — Docker Palo Alto at RelateIQ
Docker Introduction, and what's new in 0.9 — Docker Palo Alto at RelateIQ
 
Docker Introduction + what is new in 0.9
Docker Introduction + what is new in 0.9 Docker Introduction + what is new in 0.9
Docker Introduction + what is new in 0.9
 
Scaling Up Logging and Metrics
Scaling Up Logging and MetricsScaling Up Logging and Metrics
Scaling Up Logging and Metrics
 
Ippevent : openshift Introduction
Ippevent : openshift IntroductionIppevent : openshift Introduction
Ippevent : openshift Introduction
 
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
 
Java and Containers - Make it Awesome !
Java and Containers - Make it Awesome !Java and Containers - Make it Awesome !
Java and Containers - Make it Awesome !
 
Let's Containerize New York with Docker!
Let's Containerize New York with Docker!Let's Containerize New York with Docker!
Let's Containerize New York with Docker!
 

More from kawamuray

Kafka Multi-Tenancy - 160 Billion Daily Messages on One Shared Cluster at LINE
Kafka Multi-Tenancy - 160 Billion Daily Messages on One Shared Cluster at LINEKafka Multi-Tenancy - 160 Billion Daily Messages on One Shared Cluster at LINE
Kafka Multi-Tenancy - 160 Billion Daily Messages on One Shared Cluster at LINEkawamuray
 
Multitenancy: Kafka clusters for everyone at LINE
Multitenancy: Kafka clusters for everyone at LINEMultitenancy: Kafka clusters for everyone at LINE
Multitenancy: Kafka clusters for everyone at LINEkawamuray
 
LINE's messaging service architecture underlying more than 200 million monthl...
LINE's messaging service architecture underlying more than 200 million monthl...LINE's messaging service architecture underlying more than 200 million monthl...
LINE's messaging service architecture underlying more than 200 million monthl...kawamuray
 
Kafka meetup JP #3 - Engineering Apache Kafka at LINE
Kafka meetup JP #3 - Engineering Apache Kafka at LINEKafka meetup JP #3 - Engineering Apache Kafka at LINE
Kafka meetup JP #3 - Engineering Apache Kafka at LINEkawamuray
 
Monitoring Kafka w/ Prometheus
Monitoring Kafka w/ PrometheusMonitoring Kafka w/ Prometheus
Monitoring Kafka w/ Prometheuskawamuray
 
Docker + Checkpoint/Restore
Docker + Checkpoint/RestoreDocker + Checkpoint/Restore
Docker + Checkpoint/Restorekawamuray
 
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetupNorikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetupkawamuray
 

More from kawamuray (7)

Kafka Multi-Tenancy - 160 Billion Daily Messages on One Shared Cluster at LINE
Kafka Multi-Tenancy - 160 Billion Daily Messages on One Shared Cluster at LINEKafka Multi-Tenancy - 160 Billion Daily Messages on One Shared Cluster at LINE
Kafka Multi-Tenancy - 160 Billion Daily Messages on One Shared Cluster at LINE
 
Multitenancy: Kafka clusters for everyone at LINE
Multitenancy: Kafka clusters for everyone at LINEMultitenancy: Kafka clusters for everyone at LINE
Multitenancy: Kafka clusters for everyone at LINE
 
LINE's messaging service architecture underlying more than 200 million monthl...
LINE's messaging service architecture underlying more than 200 million monthl...LINE's messaging service architecture underlying more than 200 million monthl...
LINE's messaging service architecture underlying more than 200 million monthl...
 
Kafka meetup JP #3 - Engineering Apache Kafka at LINE
Kafka meetup JP #3 - Engineering Apache Kafka at LINEKafka meetup JP #3 - Engineering Apache Kafka at LINE
Kafka meetup JP #3 - Engineering Apache Kafka at LINE
 
Monitoring Kafka w/ Prometheus
Monitoring Kafka w/ PrometheusMonitoring Kafka w/ Prometheus
Monitoring Kafka w/ Prometheus
 
Docker + Checkpoint/Restore
Docker + Checkpoint/RestoreDocker + Checkpoint/Restore
Docker + Checkpoint/Restore
 
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetupNorikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
 

Recently uploaded

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Hararemasabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxAnnaArtyushina1
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in sowetomasabamasaba
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
tonesoftg
tonesoftgtonesoftg
tonesoftglanshi9
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 

Recently uploaded (20)

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 

LXC on Ganeti

  • 1. LXC on Ganeti Yuto Kawamura(kawamuray) Email: kawamuray.dadada@gmail.com
  • 2. Google summer of Code ● Global program that offers students stipends to write code for open source projects ● 4420 students ● 6313 proposals ● (don’t know how much of them were accepted)
  • 3. Improve LXC support ● Project accepted by Ganeti on Google Summer of Code 2014 ● Objective ○ Improve LXC support on Ganeti ○ Fix existing broken implementation ○ Add unit tests ○ Setup QA ○ Add additional features ● Mentored by Hrvoje Ribicic
  • 4. LXC ● An userspace interface for the Linux kernel containment features ● Operating System level virtualization ● Composed by two Linux kernel features ○ Namespace - Isolation for pid, ipc, mount, net, user between containers and the host ○ Cgroup - Hardware resource limitation
  • 5. × Console × Reboot(soft) × Memory ballooning ✔ Network(veth) × Migration(stopped) × Migration(live) △ Verification LXC version: any Before and After ✔ Console ✔ Reboot(soft) ✔ Memory ballooning ✔ Network(veth) △ Migration(stopped) × Migration(live) ✔ Verification LXC version: >= 1.0.0
  • 6. ● cpu_mask: Cpu mask. Same as other hypervisors but no support for vcpus pinning ● lxc_cgroup_use: Cgroup subsystems list. Correspond to lxc.cgroup.use configuration parameter ● lxc_devices: The list of devices ACL. ● lxc_drop_capabilities: List of capabilities which should be dropped for an instance. ● lxc_tty: Number of ttys(ptys) created for an instance. ● lxc_startup_wait: Time to wait until a daemonized instance state changed to RUNNING. Parameters
  • 7. Parameters ● lxc_extra_config: For extra configuration parameters ○ Separating by comma is problem ○ Planning to introduce a functionality to read the value from a file
  • 8. How to try? 1. Enable cgroup subsystems(if needed) a. cpuset, memory, devices, cpuacct b. Debian: Need “cgroup_enable=memory” in kernel argument 2. Install LXC >= 1.0.0 3. Check your kernel configuration $ sudo lxc-checkconfig --- Namespaces --- Namespaces: enabled Utsname namespace: enabled Ipc namespace: enabled Pid namespace: enabled User namespace: enabled Network namespace: enabled Multiple /dev/pts instances: enabled ...
  • 9. 4. 5. 6. How to try? gnt-cluster modify --enabled-hypervisors=kvm,lxc # enable lxc hv --nic-parameters mode=bridge,link=br0 # your brdige interface gnt-cluster verify # Checks your environment by LXC hypervisor gnt-instance add -H lxc # use LXC hypervisor! -o debootstrap+default -t drbd -s 8G lxc-instance1.ganeti ↑ will automatically modify the fstab of the instance to make it proper for the LXC container(riba is working for it) It’s all! Easy right?
  • 10. ● Log file Tips - How to debug? ○ $PREFIX/var/log/ganeti/lxc/<instance name>.<instance uuid>.log ■ Logs from lxc-start command ■ Mainly used when your instance didn’t started ○ $PREFIX/var/run/ganeti/lxc/<instance name>.console ■ Logs from processes inside the container(init, rc, etc.) ■ See when you cannot use `gnt-instance console …`
  • 12. Basic policy ● LXC containers are managed by command line tools ○ lxc-start, lxc-stop, lxc-ls, lxc-info … ● Not using lxc python library(written in python3)
  • 13. Instance Start 1. lxc-start -n <instance name> … -f $PREFIX/var/run/ganeti/lxc/<instance name>.conf 2. lxc-wait -n <instance name> -s RUNNING a. with timeout specified by the lxc_startup_wait hvparam
  • 14. Instance Stop ● Soft shutdown ○ lxc-stop --nokill -n <instance name> ■ Send SIGPWR to the init ● Overwritable with lxc.haltsignal ■ Wait until init exits ● Hard(forced) shutdown ○ lxc-stop --kill -n <instance name> ■ Send SIGKILL to the init ■ Container killed without normal shutting down process
  • 15. Instance Reboot ● Soft reboot ○ lxc-stop --reboot -n <instance name> ■ Send SIGINT to the init ○ Requires CAP_SYS_BOOT ● Hard rebot ○ Same as other hypervisors ■ soft shutdown && start
  • 16. Memory ballooning ● Use Cgroup memory subsystem ● memory.limit_in_bytes ● memory.memsw.limit_in_bytes ● Shrinking memory will fail if the kernel can’t reclaim memory from processes inside the container
  • 17. Cgroup filesystem ● Differences between distributions/rc system 1. Search /proc/mounts for line having type == cgroup && <subsystem> in options 2. If not found, do: mount -t cgroup -o <subsystem> <subsystem> $PREFIX/var/run/lxc/cgroup/<subsystem>
  • 18. Storage mount ● LXC can’t handle raw storage device ● Need to prepare per-pertition(mountable) device file for a LXC rootfs ● Use kpartx(1) ○ Create device maps for over partitions segments detected ○ Suppose every environment have it(because OS scripts uses it) kpartx -a /dev/drbdX /dev/loopY /dev/mapper/loopYp1 /dev/mapper/loopYp1 Per-partition device files
  • 19. Storage mount ● Use first partition as a rootfs ○ lxc.rootfs = /dev/mapper/loopNp1 ● You may have to increase the number of max_loop
  • 20. Quality ● Tested on Debian Linux/Gentoo Linux with LXC 1.0.0 and 1.0.5 ● Passed basic QA but … ● Need more example of use ● Possibly contains platform(distribution) related problems ○ especially around the cgroup
  • 22. Future candidates ● Two level isolation(IOW, containers inside a Virtual Machine) ● LXC instance migration
  • 23. Two level isolation KVM1 for userA Container 1 Container 2 Container 3 KVM2 for userB Container 1 Container 2 Hardware/OS Container 3 level Isolation noded with attribute? noded with attribute?
  • 24. Instance Migration ● LXC has no migration functionality ● Have to implement it on our own
  • 25. Checkpoint/Restore ● Implemented by project CRIU (http://criu.org/) ● Able to dump a running processes into serialized images ○ Serialized in protocol buffers format /path/to/checkpoint/dir ----- Memory image ----- Namespaces info ----- File descriptors ----- Cgroup info ----- TCP sockets ----- Network informations
  • 27. LXC migration Source host Destination host /dev/loopX drbd drbd /dev/loopX LXC instance 4. lxc-checkpoint -r ... 2. Transfer images via rsync(or what ever) 1. lxc-checkpoint ... LXC instance Checkpoint images Checkpoint images 3. Create partition mapping 5. Destroy partition mapping
  • 28. Instance migration ● Already have working implementation ○ https://github.com/kawamuray/ganeti/commits/topic-lxc-migration ● but … ○ its temporaily implementation ○ still have lot of restrictions ○ requires patched criu ■ https://github.com/kawamuray/criu ○ requires patched lxc ■ https://github.com/kawamuray/lxc ● will be solved soon(by sending patches to originals and by fixing implementation)
  • 29. Demo
  • 30. We really want ● Example of use ○ on many platforms(Debian, RHEL6/7, …) ● Bug report ● Realistic use case ● Desired functionality ○ possibly I can handle it from both Ganeti and LXC aspect
  • 31. Special thanks to Riba For your great mentorship!