This slide was used for PyCon JP 2012. I spoke about building private VPS on my server at PyCon JP 2012. Video of the session is published on YouTube. That's here ! http://www.youtube.com/watch?v=tOWZB9tFgu8 Both slide and session is Japanese only.
φͰϠϯάͳ17ࡀͷVPSߏஙه͋ͳͨͷொͷGeekɻyosida95 / ٢ా ߉ฏ1129݄15༵
View Slide
͓·͑ɺ୭Αʁ٢ా߉ฏ, @yosida95, id:yosida9517ࡀͷߴߍ2ੜΞϑλʔεΫʔϧϓϩάϥϚʔࣗࣨαʔόʔͰWeb αʔϏεΛӡӦ͢Δఔͷೳྗhttp://yosida95.com/2129݄15༵
͓·͑ɺ୭ΑʁՆٳΈதʹौ୩ܥIT اۀͰεϚϑΥΤϯδχΞͱͯ͠ΞϧόΠτݱࡏઈࢍٻΞϧόΠτதPython ͰΖ͘Ζճ͍ͨ͠ʂʂhttp://yosida95.com/3129݄15༵
͓·͑ɺ୭ΑʁTwitActivity / http://twit.yosida95.comTwitter ͰͷձΛϦΞϧλΠϜʹ·ͱΊɺදࣔ͢ΔαʔϏεEvent Search / http://event.yosida95.comATND Beta, Connpass, Zusaar ͔ΒΠϕϯτΛݕࡧ͢ΔαʔϏεhttp://yosida95.com/4129݄15༵
͓·͑ɺ୭ΑʁݟͯΔͳ͏(Ծ)http://miteru.yosida95.com/ӾཡதͷΣϒϖʔδΛTwitter ্ʹϙετ͢ΔϒοΫϚʔΫϨοτϢʔβʔ150໊ఔhttp://yosida95.com/5129݄15༵
ࠓͷ͋͐͡ΜͩVPS ͱʁͲ͏ͯ͠VPS Λ࡞ͬͨͷʁԾϚγϯ੍ޚΛࢧ͑Δٕज़ίϯύωΛࢧ͑Δٕज़ࠓޙ࣮͍ͨ͠ͷ6129݄15༵
ࠓͷ͋͐͡ΜͩαςετβςετσϞ(࣭ٙԠ)7129݄15༵
ͱ͍͏͜ͱͰΘͨ͠ɺ͓͏ͪʹVPSߏஙͪ͠Ό͍·ͨ͠ʂ8129݄15༵
VPS ͱVirtual Private Server ͷུɻ͘͞ΒVPS ͳͲ͕༗໊ɻՁ֨Ͱઐ༻αʔόʔͱಉఔͷࣗ༝͕ఏڙ͞ΕΔ͜ͱͰਓؾͷϨϯλϧαʔόʔαʔϏεɻ9129݄15༵
VPS ͱٕज़తʹαʔόʔԾԽٕज़ʹΑͬͯ1ͷཧϚγϯ্Ͱಈ͍͍ͯΔݸʑͷαʔόʔͷ͜ͱɻগͷཧαʔόʔͰଟ͘ͷԾϚγϯΛಈ͔ͤΔͷͰ҆ՁͰఏڙͰ͖Δɻ10129݄15༵
VPS ͱϗεταʔόʔVPS VPS VPS VPS11129݄15༵
Ͳ͏ͯ͠VPS Λ࡞ͬͨͷʁ(1)ܭࢉϦιʔε༗ޮ׆༻ͷͨΊʹࣗͷαʔόʔΛԾԽ(2)ԾϚγϯΛίϚϯυ1ͭͰ࡞Ͱ͖ΔΑ͏ʹͯ͠Έͨ12129݄15༵
Ͳ͏ͯ͠VPS Λ࡞ͬͨͷʁ(3)ԾϚγϯΛΣϒίϯύω͔Β੍ޚͰ͖Εૉఢ(4)Α͠ɺ࡞Ζ͏13129݄15༵
Ͳ͏ͯ͠VPS Λ࡞ͬͨͷʁ(5)ԾϚγϯ + Σϒίϯύωʹ͜ΕͬͯVPS ͳͷͰ14129݄15༵
ԾϚγϯ੍ޚΛࢧ͑Δٕज़αʔόʔScientific Linux - ϗετOSKVM/QEMU - ԾԽج൫⇒ શԾԽlibvirt(Python Package) - Ϛγϯ੍ޚ15129݄15༵
KVM/QEMUKVMKernel-based Virtual Machine ͷུLinux Χʔωϧʹඪ४ͰࡌIntel VT-x AMD-V Λར༻ͯ͠ԾԽΛ࣮ݱ͢Δ16129݄15༵
KVM/QEMUQEMUϋʔυΣΞͷΤϛϡϨʔτΛߦ͏Linux ͷϢʔβʔϓϩηεͱͯ͠ಈ࡞͢Δ17129݄15༵
KVM/QEMULinux KernelKVMVPSQEMUVPSQEMUVPSQEMUVPSQEMU18129݄15༵
libvirtQEMU XEN ଞଟ͘ͷڥͰಈ͘ԾϚγϯΛڞ௨API ͰίϯτϩʔϧͰ͖ΔCϥΠϒϥϦԾϚγϯʹର͢Δ͋ΒΏΔૢ࡞Λlibvirt ͔Βߦͳ͍ͬͯ·͢ɻ19129݄15༵
libvirtlibvirt Λར༻Ͱ͖ΔݴޠC C#Java OCamlPerl PHPPython Ruby20129݄15༵
libvirtvirt-manager ͱ͍͏ԾϚγϯૢ࡞༻GUI ΞϓϦέʔγϣϯ͕Python Ͱ࣮͞Ε͍ͯΔࠓճͷίϯτϩʔϧύωϧ࡞ʹ͋ͨΓେ͍ʹࢀߟʹͳͬͨ21129݄15༵
ίϯύωΛࢧ͑Δٕज़ίϯύωʹཁٻ͞ΕΔػೳVPS ৽ن࡞VPS ిݯૢ࡞VNC ίϯιʔϧOS ࠶Πϯετʔϧ22129݄15༵
Task Queueingॲཧͷڝ߹ࢭ߹ੑอ࣋ίωΫγϣϯઅetc...23129݄15༵
Task QueueingKestrelScala ϝοηʔδΩϡʔαʔόmemcached ޓMongoDBυΩϡϝϯτࢦNoSQL24129݄15༵
Task QueueingQueue ClientWeb Control PanelMongo DB Kestrel25129݄15༵
Task QueueingQueue ClientWeb Control PanelMongo DB(1)TaskKestrel25129݄15༵
Task QueueingQueue ClientWeb Control PanelMongo DB(1)Task(2)Task ID + TaskKestrel25129݄15༵
Task QueueingQueue ClientWeb Control PanelMongo DB(1)Task(2)Task ID + TaskKestrel(3) Task ID25129݄15༵
Task QueueingQueue ClientWeb Control PanelMongo DB(1)Task(2)Task ID + TaskKestrel(3) Task ID(4)Task ID25129݄15༵
Task QueueingQueue ClientTask WorkerMongo DBKestrel26129݄15༵
Task QueueingQueue ClientTask WorkerMongo DB(1)Get TaskKestrel26129݄15༵
Task QueueingQueue ClientTask WorkerMongo DB(1)Get Task(2)popKestrel26129݄15༵
Task QueueingQueue ClientTask WorkerMongo DB(1)Get Task(2)popKestrel(3)Task ID26129݄15༵
Task QueueingQueue ClientTask WorkerMongo DB(1)Get Task(2)popKestrel(4) Task ID(3)Task ID26129݄15༵
Task QueueingQueue ClientTask WorkerMongo DB(1)Get Task(2)popKestrel(4) Task ID(3)Task ID(5)Task26129݄15༵
Task QueueingQueue ClientTask WorkerMongo DB(1)Get Task(2)popKestrel(4) Task ID(6)Task(3)Task ID(5)Task26129݄15༵
VPS ৽ن࡞(1)ऩ༰͢ΔϗετΛબ͢Δ(2)ήετʹඞཁͳใΛੜ͢Δ(1)Mac Address(2)IP Address27129݄15༵
VPS ৽ن࡞(3)ετϨʔδΛ࡞͢Δ(4)VPS ఆٛXML Λੜ͢Δ(5)libvirt ʹͯ͠QEMU ʹఆٛͤ͞Δ(6)OS ΠϯετʔϧσΟεΫΛೖΕͯىಈ͢Δ28129݄15༵
VPS ిݯૢ࡞(1)ిݯΛೖΕΔ(2)ిݯΛΔ(3)࠶ىಈ͢Δ29129݄15༵
VNC ίϯιʔϧ30129݄15༵
VNC ίϯιʔϧQEMU ʹඪ४ͰVNC αʔόʔ͕ଁ͞Ε͍ͯΔnoVNC https://github.com/kanaka/VNC ΫϥΠΞϯτେ෯ʹखΛೖΕͨ31129݄15༵
VNC ίϯιʔϧgevent-websocketGunicorn ͕αϙʔτ͞Ε͍ͯΔNginxnginx_tcp_proxy_module32129݄15༵
OS ࠶Πϯετʔϧ(1)if OS มߋΛ͏߹:(1)ݱࡏͷετϨʔδΛআ(2)৽͘͠ετϨʔδΛ࡞(2)ԾϚγϯ࠶ىಈ(3)OS ΠϝʔδΛೖ͢Δ33129݄15༵
ࠓޙ࣮͍ͨ͠ͷγϦΞϧίϯιʔϧVNC ॏ͍……OS Πϯετʔϧ࣌ํͳ͍͕ଞͷૢ࡞γϦΞϧίϯιʔϧͰΓ͍ͨ34129݄15༵
ࠓޙ࣮͍ͨ͠ͷϦιʔεϞχλCPU ͱϝϞϦͷ༻ʹ͍ͭͯίϯύωʹάϥϑද͍ࣔͨ͠ϝʔϧͰ௨ͨ͠ΓɺΞϥʔτ௨ͨ͠Γ͍ͨ͠35129݄15༵
ࠓޙ࣮͍ͨ͠ͷεφοϓγϣοτҙͷλΠϛϯά + ఆظͰεφοϓγϣοτΛͱΓ͍ͨԾϚγϯ͋ͨΓ3ͭ͘Β͍εφοϓγϣοτͱ͓͖͍ͬͯͨ36129݄15༵
αςετ2໊, 4λεΫΩϡʔΠϯάະಋೖ1ͭͷαʔόʔϓϩηεͰHTTP ͱWebSocket37129݄15༵
βςετ4໊, 8λεΫΩϡʔΠϯάಋೖHTTP ͱWebSocket ͷαʔόʔϓϩηεػೳՃ38129݄15༵
ςελʔαςελʔ@Alice1017 ͞Μ, @LGA128 ͞Μβςελʔ@YDKKK ͞Μ, @Tiryoh_kun ͞Μ͋Γ͕ͱ͏͍͟͝·ͨ͠39129݄15༵
σϞ - ࣮ԋ -yosida95@pyconjp[~]$ yosida95vps start40129݄15༵
Thank You for Listening !41129݄15༵