SlideShare a Scribd company logo
Perlbal Tutorial Takatsugu Shigeta YAPC::Asia Tokyo 2009
重田崇嗣 Takatsugu Shigeta
http://profile.typepad.com/comewalk TypePad Profiles
Perlbal
http://www.danga.com/perlbal/
"Perlbal is a Perl-based reverse proxy load balancer and web server." Perlbal From Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/Perlbal
"Perlbal is a single-threaded event-based server supporting HTTP load balancing, web serving, and a mix of the two (see below)." Perlbal http://www.danga.com/perlbal/
install
$ cpan Perlbal
WARNING: AIO mode disabled or not available.          Perlbal will run slowly under load if          you're doing any          disk operations. (e.g. web_server mode).          Install IO::AIO for better performance.
$ cpan IO::AIO
http://code.sixapart.com/trac/perlbal/browser/trunk/META.yml?rev=768 requires:      BSD::Resource:       0      Danga::Socket:       1.44      File::Find:          0      HTTP::Date:          0      HTTP::Response:      0      Sys::Syscall:        0      Test::More:          0      Time::HiRes:         0
http://code.sixapart.com/svn/perlbal/ Subversion Repository
$ svn co http://code.sixapart.com/svn/perlbal/ $ cd trunk $ perl Makefile.PL $ make $ sudo make install
start Perlbal
# ./perlbal --help Usage: perlbal [OPTS]  --help          This usage info  --version       Print perlbal release version  --config=[file] Specify Perlbal config file           (default:  /etc/perlbal/perlbal.conf )  --daemon        Daemonize
$ perlbal > --config=/path/to/foo.conf > --daemon
$ perlbal > -c /path/to/foo.conf > -d
roles
reverse_proxy web_server management selector upload_tracker
reverse proxy
CREATE POOL my_apaches   POOL my_apaches ADD 10.0.0.10:8080   POOL my_apaches ADD 10.0.0.11:8080   POOL my_apaches ADD 10.0.0.12   POOL my_apaches ADD 10.0.0.13:8081 CREATE SERVICE balancer   SET listen          = 0.0.0.0:80   SET role            =  reverse_proxy   SET pool            = my_apaches   SET persist_client  = on   SET persist_backend = on   SET verify_backend  = on ENABLE balancer
CREATE POOL dynamic   SET nodefile = conf/nodelist.dat CREATE SERVICE balancer2   SET listen          = 0.0.0.0:81   SET role            =  reverse_proxy   SET pool            = dynamic   SET persist_client  = on   SET persist_backend = on   SET verify_backend  = on  ENABLE balancer2
# whitespace and comments allowed 10.1.0.10     # test machine #10.1.0.10:8083    # test machine # can include port numbers, but defaults to 80 if not provided: # 10.1.0.4:80 In node file, you should list IP addresses. It's a comment after "#".
web server
CREATE SERVICE docs   SET listen         = 0.0.0.0:80   SET role           =  web_server   SET docroot        = /usr/share/doc/   SET dirindexing    = 1   SET persist_client = on ENABLE docs
management
CREATE SERVICE mgmt   SET role   =  management   SET listen = 127.0.0.1:60000 ENABLE mgmt
seealso http://code.sixapart.com/trac/perlbal/browser/trunk/doc /config-guide.txt
selector
LOAD vhosts CREATE SERVICE foo   SET listen      = 0.0.0.0:8081   SET role        = web_server   SET docroot     = /var/www/html/yapcasia2009/foo.com/   SET dirindexing = 1 ENABLE foo CREATE SERVICE bar   SET listen      = 0.0.0.0:8082   SET role        = web_server   SET docroot     = /var/www/html/yapcasia2009/bar.com/   SET dirindexing = 0 ENABLE bar
CREATE SERVICE vdemo   SET listen         = 0.0.0.0:8080   SET role           =  selector   SET plugins        = vhosts   SET persist_client = on   VHOST *.foo.com = foo   VHOST *.bar.com = bar #  VHOST * = foo ENABLE vdemo
upload_tracker
I'm sorry. I have never used it. I omitted upload_tracker. But...
http://code.sixapart.com/trac/perlbal/browser/trunk/lib/Perlbal/Service.pm?rev=806#L1431 # create UDP upload tracker listener if ($self->{role} eq "upload_tracker") {      $listener = Perlbal::UploadListener->new($self->{listen}, $self); }
parameters
CREATE POOL  poolname    POOL  poolname  ADD  0.0.0.0:8080 CREATE POOL  poolname    SET nodefile =  /path/to/file    SET balance_method = random
CREATE SERVICE  foo    SET role =  reverse_proxy    SET listen = 192 .168.0.1:81    SET persist_client =  false    SET persist_client_timeout =  30      SET enable_ssl =  false    SET ssl_cert_file =  certs/server-cert.pem    SET ssl_key_file  =  certs/server-key.pem    SET ssl_cipher_list =  ALL:!LOW:!EXP    SET always_trusted =  false    SET backend_persist_cache =  2    SET buffer_backend_connect =  100k      SET buffer_size =  256k    SET buffer_size_reproxy_url =  50k
   SET buffer_upload_threshold_rate =  0      SET buffer_upload_threshold_size =  250k    SET buffer_upload_threshold_time =  5    SET buffer_uploads =  false    SET buffer_uploads_path =  /path/to    SET connect_ahead =  0    SET enable_reproxy =  false    SET enable_error_retries =  false    SET error_retry_schedule =  0,.25,.50,1,1,1,1,1    SET high_priority_cookie    SET high_priority_cookie_contents    SET max_backend_uses =  0    SET persist_backend =  false
   SET pool    SET queue_relief_chance =  0    SET queue_relief_size =  0    SET trusted_upstream_proxies =  10.0.0.0/24    SET upload_status_listeners =  ""    SET verify_backend =  false    SET verify_backend_path =  *    SET blind_proxy =  0    SET reproxy_cache_maxsize =  0    SET max_chunked_request_size =  209715200
CREATE SERVICE  foo    SET role =  web_server    SET listen = 192 .168.0.1:81    SET persist_client =  false    SET persist_client_timeout =  30      SET enable_ssl =  false    SET ssl_cert_file =  certs/server-cert.pem    SET ssl_key_file  =  certs/server-key.pem    SET ssl_cipher_list =  ALL:!LOW:!EXP    SET dirindexing =  false    SET docroot =  /path/to    SET index_files =  index.html
   SET max_put_size =  0    SET min_put_directory =  0    SET client_sndbuf_size =  0    SET always_trusted =  false    SET enable_concatenate_get =  0    SET enable_delete =  0    SET enable_put =  0    SET max_chunked_request_size =  209715200
CREATE SERVICE  foo    SET role =  selector    SET listen = 192 .168.0.1:81    SET persist_client =  false    SET persist_client_timeout =  30      SET enable_ssl =  false    SET ssl_cert_file =  certs/server-cert.pem    SET ssl_key_file  =  certs/server-key.pem    SET ssl_cipher_list =  ALL:!LOW:!EXP    SET default_service    SET latency =  0    SET always_trusted =  false     SET max_chunked_request_size =  209715200
CREATE SERVICE  mgmt   SET role   =  management   SET listen =  127.0.0.1:60000      SET persist_client =  false    SET persist_client_timeout =  30      SET enable_ssl =  false    SET ssl_cert_file =  certs/server-cert.pem    SET ssl_key_file  =  certs/server-key.pem    SET ssl_cipher_list =  ALL:!LOW:!EXP    SET always_trusted =  false    SET max_chunked_request_size =  209715200
architecture
Perlbal Classes Perlbal Perlbal::AIO Perlbal::BackendHTTP Perlbal::Cache Perlbal::ChunkedUploadState Perlbal::ClientHTTP Perlbal::ClientHTTPBase Perlbal::ClientManage Perlbal::ClientProxy Perlbal::CommandContext Perlbal::HTTPHeaders Perlbal::ManageCommand Perlbal::Pool Perlbal::ReproxyManager Perlbal::Service Perlbal::Socket Perlbal::SocketSSL Perlbal::TCPListener Perlbal::Test Perlbal::Test::WebClient Perlbal::Test::WebServer Perlbal::UploadListener Perlbal::Util
class diagram
Created by GraphViz
how to work
call ENABLE  servicename,  start to listen on Perlbal::TCPListener                 {{ INTERNET }}                       |                       v   [Service]<===>[TCPListener]               ___/    |    __              v        v        v   [ClientManage]  [ClientHTTP] [ClientProxy]                                      ^                                      |                                      v                                [BackendHTTP] http://code.sixapart.com/trac/perlbal/browser/trunk/doc/hacking/classes.txt
plugins
Perlbal::Plugin AccessControl AtomInject AtomStream AutoRemoveLeadingDir Cgilike Cgilike::Request EchoService EchoService::Client Highpri Include LazyCDN MaxContentLength NotModified Palimg Queues Redirect Stats Stats::Storage Vhosts Vpaths http://code.sixapart.com/trac/perlbal/browser/trunk/lib/Perlbal/Plugin
hooks
seealso http://code.sixapart.com/trac/perlbal/browser/trunk/doc/hacking/hooks.txt
writing plugins
package  Perlbal::Plugin ::MyPlugin; use strict; use warnings; # when &quot;LOAD&quot; directive loads us up sub  load  {      return 1; } # unload our global commands, clear our service object sub  unload  {      return 1; } # called when we're being added to a service sub  register  {      return 1; } # called when we're no longer active on a service sub  unregister  {      return 1; } 1; __END__
LOAD MyPlugin LOAD OtherPlugin CREATE SERVICE hogehoge      plugins =  OtherPlugin,  MyPlugin  ENABLE hogehoge
$ telnet localhost 60000 plugins hogehoge OtherPlugin  MyPlugin
This slide introduced Perlbal to you. If you are interested in Perlbal, please try again later!
BTW, JFYI ,  
AnyEvent  
Danga::Socket::AnyEvent From: Martin Atkins Date: Mon, 17 Aug 2009 16:26:09 -0700 Subject: AnyEvent implementation of Danga::Socket     &quot;This allows Perlbal to, in theory, run in any event loop supported by AnyEvent, and more interestingly allows Perlbal plugins to make use of AnyEvent protocol implementations.&quot;   http://groups.google.com/group/perlbal/browse_thread/thread/3a275de028d1a04b
Try Danga::Socket::AnyEvent, if you are interested in AnyEvent! http://search.cpan.org/dist/Danga-Socket-AnyEvent/
Resources Perlbal http://www.danga.com/perlbal/   Six Apart Code http://code.sixapart.com/svn/perlbal/   Google Code http://code.google.com/p/perlbal/   Google Groups http://groups.google.com/group/perlbal
Thank you!

More Related Content

What's hot

Rack Middleware
Rack MiddlewareRack Middleware
Rack Middleware
LittleBIGRuby
 
IRC HTTP Stream in YAPC::Asia 2009
IRC HTTP Stream in YAPC::Asia 2009IRC HTTP Stream in YAPC::Asia 2009
IRC HTTP Stream in YAPC::Asia 2009
Yusuke Wada
 
Beyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisBeyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic Analysis
Fastly
 
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Cirdes Filho
 
appache_1
appache_1appache_1
appache_1
Maisa Al-Khudair
 
톰캣 #04-환경설정
톰캣 #04-환경설정톰캣 #04-환경설정
톰캣 #04-환경설정
GyuSeok Lee
 
Laravel5 Introduction and essentials
Laravel5 Introduction and essentialsLaravel5 Introduction and essentials
Laravel5 Introduction and essentials
Pramod Kadam
 
GTLAB Overview
GTLAB OverviewGTLAB Overview
GTLAB Overview
marpierc
 
Laravel - Website Development in Php Framework.
Laravel - Website Development in Php Framework.Laravel - Website Development in Php Framework.
Laravel - Website Development in Php Framework.
SWAAM Tech
 
Build website in_django
Build website in_django Build website in_django
Build website in_django
swee meng ng
 
Laravel 101
Laravel 101Laravel 101
Laravel 101
Commit University
 
Laravel Beginners Tutorial 2
Laravel Beginners Tutorial 2Laravel Beginners Tutorial 2
Laravel Beginners Tutorial 2
Vikas Chauhan
 
Zend - Installation And Sample Project Creation
Zend - Installation And Sample Project Creation Zend - Installation And Sample Project Creation
Zend - Installation And Sample Project Creation
Compare Infobase Limited
 
Selenium Sandwich Part 1: Data driven Selenium
Selenium Sandwich Part 1: Data driven Selenium Selenium Sandwich Part 1: Data driven Selenium
Selenium Sandwich Part 1: Data driven Selenium
Workhorse Computing
 
Deploy Rails Application by Capistrano
Deploy Rails Application by CapistranoDeploy Rails Application by Capistrano
Deploy Rails Application by Capistrano
Tasawr Interactive
 
Intro to Laravel 4
Intro to Laravel 4Intro to Laravel 4
Intro to Laravel 4
Singapore PHP User Group
 
Task Scheduling and Asynchronous Processing Evolved. Zend Server Job Queue
Task Scheduling and Asynchronous Processing Evolved. Zend Server Job QueueTask Scheduling and Asynchronous Processing Evolved. Zend Server Job Queue
Task Scheduling and Asynchronous Processing Evolved. Zend Server Job Queue
Sam Hennessy
 
Making Symofny shine with Varnish - SymfonyCon Madrid 2014
Making Symofny shine with Varnish - SymfonyCon Madrid 2014Making Symofny shine with Varnish - SymfonyCon Madrid 2014
Making Symofny shine with Varnish - SymfonyCon Madrid 2014
Barel Barelon
 
Php Unit With Zend Framework Zendcon09
Php Unit With Zend Framework   Zendcon09Php Unit With Zend Framework   Zendcon09
Php Unit With Zend Framework Zendcon09
Michelangelo van Dam
 
Autoscaling with hashi_corp_nomad
Autoscaling with hashi_corp_nomadAutoscaling with hashi_corp_nomad
Autoscaling with hashi_corp_nomad
Bram Vogelaar
 

What's hot (20)

Rack Middleware
Rack MiddlewareRack Middleware
Rack Middleware
 
IRC HTTP Stream in YAPC::Asia 2009
IRC HTTP Stream in YAPC::Asia 2009IRC HTTP Stream in YAPC::Asia 2009
IRC HTTP Stream in YAPC::Asia 2009
 
Beyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisBeyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic Analysis
 
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
 
appache_1
appache_1appache_1
appache_1
 
톰캣 #04-환경설정
톰캣 #04-환경설정톰캣 #04-환경설정
톰캣 #04-환경설정
 
Laravel5 Introduction and essentials
Laravel5 Introduction and essentialsLaravel5 Introduction and essentials
Laravel5 Introduction and essentials
 
GTLAB Overview
GTLAB OverviewGTLAB Overview
GTLAB Overview
 
Laravel - Website Development in Php Framework.
Laravel - Website Development in Php Framework.Laravel - Website Development in Php Framework.
Laravel - Website Development in Php Framework.
 
Build website in_django
Build website in_django Build website in_django
Build website in_django
 
Laravel 101
Laravel 101Laravel 101
Laravel 101
 
Laravel Beginners Tutorial 2
Laravel Beginners Tutorial 2Laravel Beginners Tutorial 2
Laravel Beginners Tutorial 2
 
Zend - Installation And Sample Project Creation
Zend - Installation And Sample Project Creation Zend - Installation And Sample Project Creation
Zend - Installation And Sample Project Creation
 
Selenium Sandwich Part 1: Data driven Selenium
Selenium Sandwich Part 1: Data driven Selenium Selenium Sandwich Part 1: Data driven Selenium
Selenium Sandwich Part 1: Data driven Selenium
 
Deploy Rails Application by Capistrano
Deploy Rails Application by CapistranoDeploy Rails Application by Capistrano
Deploy Rails Application by Capistrano
 
Intro to Laravel 4
Intro to Laravel 4Intro to Laravel 4
Intro to Laravel 4
 
Task Scheduling and Asynchronous Processing Evolved. Zend Server Job Queue
Task Scheduling and Asynchronous Processing Evolved. Zend Server Job QueueTask Scheduling and Asynchronous Processing Evolved. Zend Server Job Queue
Task Scheduling and Asynchronous Processing Evolved. Zend Server Job Queue
 
Making Symofny shine with Varnish - SymfonyCon Madrid 2014
Making Symofny shine with Varnish - SymfonyCon Madrid 2014Making Symofny shine with Varnish - SymfonyCon Madrid 2014
Making Symofny shine with Varnish - SymfonyCon Madrid 2014
 
Php Unit With Zend Framework Zendcon09
Php Unit With Zend Framework   Zendcon09Php Unit With Zend Framework   Zendcon09
Php Unit With Zend Framework Zendcon09
 
Autoscaling with hashi_corp_nomad
Autoscaling with hashi_corp_nomadAutoscaling with hashi_corp_nomad
Autoscaling with hashi_corp_nomad
 

Viewers also liked

The Indian Beauty
The Indian BeautyThe Indian Beauty
The Indian Beauty
doityourway
 
E-portfolio values (ppt)
E-portfolio values (ppt)E-portfolio values (ppt)
E-portfolio values (ppt)
Simon Grant
 
Competency: MedBiquitous and other ideas
Competency: MedBiquitous and other ideasCompetency: MedBiquitous and other ideas
Competency: MedBiquitous and other ideas
Simon Grant
 
Poleznie iskopaemie Khabarovskogo kraya
Poleznie iskopaemie Khabarovskogo krayaPoleznie iskopaemie Khabarovskogo kraya
Poleznie iskopaemie Khabarovskogo kraya
viktoriya71
 
Dijkdoorbraak
DijkdoorbraakDijkdoorbraak
Dijkdoorbraak
eRJee
 
Les revues d'histoire au Brésil et leurs usages publics
Les revues d'histoire au Brésil et leurs usages publicsLes revues d'histoire au Brésil et leurs usages publics
Les revues d'histoire au Brésil et leurs usages publics
oldimar
 
The BarCode-Controllers project
The BarCode-Controllers projectThe BarCode-Controllers project
The BarCode-Controllers project
desordenylaesperanza
 
IBM
IBMIBM
Searching CPAN Offline
Searching CPAN OfflineSearching CPAN Offline
Searching CPAN Offline
acme
 
Fiat Stilo Connect Nav+ GPS GSM hidden diagnostic menu
Fiat Stilo Connect Nav+ GPS GSM hidden diagnostic menuFiat Stilo Connect Nav+ GPS GSM hidden diagnostic menu
Fiat Stilo Connect Nav+ GPS GSM hidden diagnostic menu
fosk
 
Quyet-toan-thue-2010-Ke-khai-thue-qua-mang
Quyet-toan-thue-2010-Ke-khai-thue-qua-mangQuyet-toan-thue-2010-Ke-khai-thue-qua-mang
Quyet-toan-thue-2010-Ke-khai-thue-qua-mang
Pham Ngoc Quang
 
Induction talk year 1
Induction talk year 1Induction talk year 1
Induction talk year 1
Tony McNeill
 
DigEdRes_school33
DigEdRes_school33DigEdRes_school33
DigEdRes_school33
viktoriya71
 
Engage Your Customers or Die
Engage Your Customers or DieEngage Your Customers or Die
Engage Your Customers or Die
Advocacy Social
 
Pgce ed
Pgce edPgce ed
Pgce ed
Peter Coyne
 
Phương pháp luận AG
Phương pháp luận AGPhương pháp luận AG
Phương pháp luận AG
Pham Ngoc Quang
 
台北捷運中和線東門段貫通說明 by but.bbs@ptt.cc
台北捷運中和線東門段貫通說明 by but.bbs@ptt.cc台北捷運中和線東門段貫通說明 by but.bbs@ptt.cc
台北捷運中和線東門段貫通說明 by but.bbs@ptt.cc
Yi-Chi Tang
 
When the Best is Free: Images
When the Best is Free: ImagesWhen the Best is Free: Images
When the Best is Free: Images
Katie Christo
 
Gurriato
GurriatoGurriato

Viewers also liked (20)

The Indian Beauty
The Indian BeautyThe Indian Beauty
The Indian Beauty
 
E-portfolio values (ppt)
E-portfolio values (ppt)E-portfolio values (ppt)
E-portfolio values (ppt)
 
Competency: MedBiquitous and other ideas
Competency: MedBiquitous and other ideasCompetency: MedBiquitous and other ideas
Competency: MedBiquitous and other ideas
 
Poleznie iskopaemie Khabarovskogo kraya
Poleznie iskopaemie Khabarovskogo krayaPoleznie iskopaemie Khabarovskogo kraya
Poleznie iskopaemie Khabarovskogo kraya
 
Dijkdoorbraak
DijkdoorbraakDijkdoorbraak
Dijkdoorbraak
 
Les revues d'histoire au Brésil et leurs usages publics
Les revues d'histoire au Brésil et leurs usages publicsLes revues d'histoire au Brésil et leurs usages publics
Les revues d'histoire au Brésil et leurs usages publics
 
The BarCode-Controllers project
The BarCode-Controllers projectThe BarCode-Controllers project
The BarCode-Controllers project
 
IBM
IBMIBM
IBM
 
Searching CPAN Offline
Searching CPAN OfflineSearching CPAN Offline
Searching CPAN Offline
 
Fiat Stilo Connect Nav+ GPS GSM hidden diagnostic menu
Fiat Stilo Connect Nav+ GPS GSM hidden diagnostic menuFiat Stilo Connect Nav+ GPS GSM hidden diagnostic menu
Fiat Stilo Connect Nav+ GPS GSM hidden diagnostic menu
 
Quyet-toan-thue-2010-Ke-khai-thue-qua-mang
Quyet-toan-thue-2010-Ke-khai-thue-qua-mangQuyet-toan-thue-2010-Ke-khai-thue-qua-mang
Quyet-toan-thue-2010-Ke-khai-thue-qua-mang
 
Induction talk year 1
Induction talk year 1Induction talk year 1
Induction talk year 1
 
DigEdRes_school33
DigEdRes_school33DigEdRes_school33
DigEdRes_school33
 
Chuong 8 than nhiet vtm
Chuong 8 than nhiet vtmChuong 8 than nhiet vtm
Chuong 8 than nhiet vtm
 
Engage Your Customers or Die
Engage Your Customers or DieEngage Your Customers or Die
Engage Your Customers or Die
 
Pgce ed
Pgce edPgce ed
Pgce ed
 
Phương pháp luận AG
Phương pháp luận AGPhương pháp luận AG
Phương pháp luận AG
 
台北捷運中和線東門段貫通說明 by but.bbs@ptt.cc
台北捷運中和線東門段貫通說明 by but.bbs@ptt.cc台北捷運中和線東門段貫通說明 by but.bbs@ptt.cc
台北捷運中和線東門段貫通說明 by but.bbs@ptt.cc
 
When the Best is Free: Images
When the Best is Free: ImagesWhen the Best is Free: Images
When the Best is Free: Images
 
Gurriato
GurriatoGurriato
Gurriato
 

Similar to Perlbal Tutorial

Volt ruby framework
Volt ruby frameworkVolt ruby framework
Volt ruby framework
thomasfl
 
Systems Automation with Puppet
Systems Automation with PuppetSystems Automation with Puppet
Systems Automation with Puppet
elliando dias
 
WWW:::Mechanize YAPC::BR 2008
WWW:::Mechanize YAPC::BR 2008WWW:::Mechanize YAPC::BR 2008
WWW:::Mechanize YAPC::BR 2008
mvitor
 
Installing hadoophivederby on_centos
Installing hadoophivederby on_centosInstalling hadoophivederby on_centos
Installing hadoophivederby on_centos
James Jara
 
Perl Dancer, FPW 2010
Perl Dancer, FPW 2010Perl Dancer, FPW 2010
Perl Dancer, FPW 2010
Alexis Sukrieh
 
Caching & validating
Caching & validatingCaching & validating
Caching & validating
Son Nguyen
 
HTTP Caching in Web Application
HTTP Caching in Web ApplicationHTTP Caching in Web Application
HTTP Caching in Web Application
Martins Sipenko
 
Command
CommandCommand
Command
gajshield
 
Capistrano
CapistranoCapistrano
Capistrano
Jason Noble
 
Oscon 2011 - ATS
Oscon 2011 - ATSOscon 2011 - ATS
Oscon 2011 - ATS
Leif Hedstrom
 
Troubleshooting the Puppet Enterprise Stack
Troubleshooting the Puppet Enterprise StackTroubleshooting the Puppet Enterprise Stack
Troubleshooting the Puppet Enterprise Stack
Puppet
 
Lamp configuration u buntu 10.04
Lamp configuration   u buntu 10.04Lamp configuration   u buntu 10.04
Lamp configuration u buntu 10.04
mikehie
 
WCF 4.0
WCF 4.0WCF 4.0
WCF 4.0
Eyal Vardi
 
Cloud Automation with Opscode Chef
Cloud Automation with Opscode ChefCloud Automation with Opscode Chef
Cloud Automation with Opscode Chef
Sri Ram
 
What's new in Rails 2?
What's new in Rails 2?What's new in Rails 2?
What's new in Rails 2?
brynary
 
So you want to build a Facebook app
So you want to build a Facebook appSo you want to build a Facebook app
So you want to build a Facebook app
kamal.fariz
 
Ruby C10K: High Performance Networking - RubyKaigi '09
Ruby C10K: High Performance Networking - RubyKaigi '09Ruby C10K: High Performance Networking - RubyKaigi '09
Ruby C10K: High Performance Networking - RubyKaigi '09
Ilya Grigorik
 
What\'s new in Rails 2.1
What\'s new in Rails 2.1What\'s new in Rails 2.1
What\'s new in Rails 2.1
Keith Pitty
 
JUDCon London 2011 - Bin packing with drools planner by example
JUDCon London 2011 - Bin packing with drools planner by exampleJUDCon London 2011 - Bin packing with drools planner by example
JUDCon London 2011 - Bin packing with drools planner by example
Geoffrey De Smet
 
StackiFest16: Stacki 1600+ Server Journey - Dave Peterson, Salesforce
StackiFest16: Stacki 1600+ Server Journey - Dave Peterson, Salesforce StackiFest16: Stacki 1600+ Server Journey - Dave Peterson, Salesforce
StackiFest16: Stacki 1600+ Server Journey - Dave Peterson, Salesforce
StackIQ
 

Similar to Perlbal Tutorial (20)

Volt ruby framework
Volt ruby frameworkVolt ruby framework
Volt ruby framework
 
Systems Automation with Puppet
Systems Automation with PuppetSystems Automation with Puppet
Systems Automation with Puppet
 
WWW:::Mechanize YAPC::BR 2008
WWW:::Mechanize YAPC::BR 2008WWW:::Mechanize YAPC::BR 2008
WWW:::Mechanize YAPC::BR 2008
 
Installing hadoophivederby on_centos
Installing hadoophivederby on_centosInstalling hadoophivederby on_centos
Installing hadoophivederby on_centos
 
Perl Dancer, FPW 2010
Perl Dancer, FPW 2010Perl Dancer, FPW 2010
Perl Dancer, FPW 2010
 
Caching & validating
Caching & validatingCaching & validating
Caching & validating
 
HTTP Caching in Web Application
HTTP Caching in Web ApplicationHTTP Caching in Web Application
HTTP Caching in Web Application
 
Command
CommandCommand
Command
 
Capistrano
CapistranoCapistrano
Capistrano
 
Oscon 2011 - ATS
Oscon 2011 - ATSOscon 2011 - ATS
Oscon 2011 - ATS
 
Troubleshooting the Puppet Enterprise Stack
Troubleshooting the Puppet Enterprise StackTroubleshooting the Puppet Enterprise Stack
Troubleshooting the Puppet Enterprise Stack
 
Lamp configuration u buntu 10.04
Lamp configuration   u buntu 10.04Lamp configuration   u buntu 10.04
Lamp configuration u buntu 10.04
 
WCF 4.0
WCF 4.0WCF 4.0
WCF 4.0
 
Cloud Automation with Opscode Chef
Cloud Automation with Opscode ChefCloud Automation with Opscode Chef
Cloud Automation with Opscode Chef
 
What's new in Rails 2?
What's new in Rails 2?What's new in Rails 2?
What's new in Rails 2?
 
So you want to build a Facebook app
So you want to build a Facebook appSo you want to build a Facebook app
So you want to build a Facebook app
 
Ruby C10K: High Performance Networking - RubyKaigi '09
Ruby C10K: High Performance Networking - RubyKaigi '09Ruby C10K: High Performance Networking - RubyKaigi '09
Ruby C10K: High Performance Networking - RubyKaigi '09
 
What\'s new in Rails 2.1
What\'s new in Rails 2.1What\'s new in Rails 2.1
What\'s new in Rails 2.1
 
JUDCon London 2011 - Bin packing with drools planner by example
JUDCon London 2011 - Bin packing with drools planner by exampleJUDCon London 2011 - Bin packing with drools planner by example
JUDCon London 2011 - Bin packing with drools planner by example
 
StackiFest16: Stacki 1600+ Server Journey - Dave Peterson, Salesforce
StackiFest16: Stacki 1600+ Server Journey - Dave Peterson, Salesforce StackiFest16: Stacki 1600+ Server Journey - Dave Peterson, Salesforce
StackiFest16: Stacki 1600+ Server Journey - Dave Peterson, Salesforce
 

Recently uploaded

Pigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdfPigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
Lidia A.
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
Yevgen Sysoyev
 
Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024
BookNet Canada
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
Larry Smarr
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
Mark Billinghurst
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
SynapseIndia
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
Matthew Sinclair
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
Stephanie Beckett
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Chris Swan
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
jackson110191
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
Kief Morris
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
HackersList
 
Best Programming Language for Civil Engineers
Best Programming Language for Civil EngineersBest Programming Language for Civil Engineers
Best Programming Language for Civil Engineers
Awais Yaseen
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
Eric D. Schabell
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
RaminGhanbari2
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
Larry Smarr
 
Manual | Product | Research Presentation
Manual | Product | Research PresentationManual | Product | Research Presentation
Manual | Product | Research Presentation
welrejdoall
 
UiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs ConferenceUiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs Conference
UiPathCommunity
 

Recently uploaded (20)

Pigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdfPigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdf
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
 
Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
 
Best Programming Language for Civil Engineers
Best Programming Language for Civil EngineersBest Programming Language for Civil Engineers
Best Programming Language for Civil Engineers
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
 
Manual | Product | Research Presentation
Manual | Product | Research PresentationManual | Product | Research Presentation
Manual | Product | Research Presentation
 
UiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs ConferenceUiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs Conference
 

Perlbal Tutorial

  • 1. Perlbal Tutorial Takatsugu Shigeta YAPC::Asia Tokyo 2009
  • 6. &quot;Perlbal is a Perl-based reverse proxy load balancer and web server.&quot; Perlbal From Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/Perlbal
  • 7. &quot;Perlbal is a single-threaded event-based server supporting HTTP load balancing, web serving, and a mix of the two (see below).&quot; Perlbal http://www.danga.com/perlbal/
  • 10. WARNING: AIO mode disabled or not available.          Perlbal will run slowly under load if          you're doing any          disk operations. (e.g. web_server mode).          Install IO::AIO for better performance.
  • 12. http://code.sixapart.com/trac/perlbal/browser/trunk/META.yml?rev=768 requires:      BSD::Resource:       0      Danga::Socket:       1.44      File::Find:          0      HTTP::Date:          0      HTTP::Response:      0      Sys::Syscall:        0      Test::More:          0      Time::HiRes:         0
  • 14. $ svn co http://code.sixapart.com/svn/perlbal/ $ cd trunk $ perl Makefile.PL $ make $ sudo make install
  • 16. # ./perlbal --help Usage: perlbal [OPTS]  --help          This usage info  --version       Print perlbal release version  --config=[file] Specify Perlbal config file           (default: /etc/perlbal/perlbal.conf )  --daemon        Daemonize
  • 17. $ perlbal > --config=/path/to/foo.conf > --daemon
  • 18. $ perlbal > -c /path/to/foo.conf > -d
  • 19. roles
  • 20. reverse_proxy web_server management selector upload_tracker
  • 22. CREATE POOL my_apaches   POOL my_apaches ADD 10.0.0.10:8080   POOL my_apaches ADD 10.0.0.11:8080   POOL my_apaches ADD 10.0.0.12   POOL my_apaches ADD 10.0.0.13:8081 CREATE SERVICE balancer   SET listen          = 0.0.0.0:80   SET role            = reverse_proxy   SET pool            = my_apaches   SET persist_client  = on   SET persist_backend = on   SET verify_backend  = on ENABLE balancer
  • 23. CREATE POOL dynamic   SET nodefile = conf/nodelist.dat CREATE SERVICE balancer2   SET listen          = 0.0.0.0:81   SET role            = reverse_proxy   SET pool            = dynamic   SET persist_client  = on   SET persist_backend = on   SET verify_backend  = on ENABLE balancer2
  • 24. # whitespace and comments allowed 10.1.0.10    # test machine #10.1.0.10:8083    # test machine # can include port numbers, but defaults to 80 if not provided: # 10.1.0.4:80 In node file, you should list IP addresses. It's a comment after &quot;#&quot;.
  • 26. CREATE SERVICE docs   SET listen         = 0.0.0.0:80   SET role           = web_server   SET docroot        = /usr/share/doc/   SET dirindexing    = 1   SET persist_client = on ENABLE docs
  • 28. CREATE SERVICE mgmt   SET role   = management   SET listen = 127.0.0.1:60000 ENABLE mgmt
  • 31. LOAD vhosts CREATE SERVICE foo   SET listen      = 0.0.0.0:8081   SET role        = web_server   SET docroot     = /var/www/html/yapcasia2009/foo.com/   SET dirindexing = 1 ENABLE foo CREATE SERVICE bar   SET listen      = 0.0.0.0:8082   SET role        = web_server   SET docroot     = /var/www/html/yapcasia2009/bar.com/   SET dirindexing = 0 ENABLE bar
  • 32. CREATE SERVICE vdemo   SET listen         = 0.0.0.0:8080   SET role           = selector   SET plugins        = vhosts   SET persist_client = on   VHOST *.foo.com = foo   VHOST *.bar.com = bar #  VHOST * = foo ENABLE vdemo
  • 34. I'm sorry. I have never used it. I omitted upload_tracker. But...
  • 35. http://code.sixapart.com/trac/perlbal/browser/trunk/lib/Perlbal/Service.pm?rev=806#L1431 # create UDP upload tracker listener if ($self->{role} eq &quot;upload_tracker&quot;) {     $listener = Perlbal::UploadListener->new($self->{listen}, $self); }
  • 37. CREATE POOL poolname   POOL poolname ADD 0.0.0.0:8080 CREATE POOL poolname   SET nodefile = /path/to/file   SET balance_method = random
  • 38. CREATE SERVICE foo   SET role = reverse_proxy   SET listen = 192 .168.0.1:81   SET persist_client = false   SET persist_client_timeout = 30     SET enable_ssl = false   SET ssl_cert_file = certs/server-cert.pem   SET ssl_key_file  = certs/server-key.pem   SET ssl_cipher_list = ALL:!LOW:!EXP   SET always_trusted = false   SET backend_persist_cache = 2   SET buffer_backend_connect = 100k     SET buffer_size = 256k   SET buffer_size_reproxy_url = 50k
  • 39.   SET buffer_upload_threshold_rate = 0   SET buffer_upload_threshold_size = 250k   SET buffer_upload_threshold_time = 5   SET buffer_uploads = false   SET buffer_uploads_path = /path/to   SET connect_ahead = 0   SET enable_reproxy = false   SET enable_error_retries = false   SET error_retry_schedule = 0,.25,.50,1,1,1,1,1   SET high_priority_cookie   SET high_priority_cookie_contents   SET max_backend_uses = 0   SET persist_backend = false
  • 40.   SET pool   SET queue_relief_chance = 0   SET queue_relief_size = 0   SET trusted_upstream_proxies = 10.0.0.0/24   SET upload_status_listeners = &quot;&quot;   SET verify_backend = false   SET verify_backend_path = *   SET blind_proxy = 0   SET reproxy_cache_maxsize = 0   SET max_chunked_request_size = 209715200
  • 41. CREATE SERVICE foo   SET role = web_server   SET listen = 192 .168.0.1:81   SET persist_client = false   SET persist_client_timeout = 30     SET enable_ssl = false   SET ssl_cert_file = certs/server-cert.pem   SET ssl_key_file  = certs/server-key.pem   SET ssl_cipher_list = ALL:!LOW:!EXP   SET dirindexing = false   SET docroot = /path/to   SET index_files = index.html
  • 42.   SET max_put_size = 0   SET min_put_directory = 0   SET client_sndbuf_size = 0   SET always_trusted = false   SET enable_concatenate_get = 0   SET enable_delete = 0   SET enable_put = 0   SET max_chunked_request_size = 209715200
  • 43. CREATE SERVICE foo   SET role = selector   SET listen = 192 .168.0.1:81   SET persist_client = false   SET persist_client_timeout = 30     SET enable_ssl = false   SET ssl_cert_file = certs/server-cert.pem   SET ssl_key_file  = certs/server-key.pem   SET ssl_cipher_list = ALL:!LOW:!EXP   SET default_service   SET latency = 0   SET always_trusted = false   SET max_chunked_request_size = 209715200
  • 44. CREATE SERVICE mgmt   SET role   = management   SET listen = 127.0.0.1:60000     SET persist_client = false   SET persist_client_timeout = 30     SET enable_ssl = false   SET ssl_cert_file = certs/server-cert.pem   SET ssl_key_file  = certs/server-key.pem   SET ssl_cipher_list = ALL:!LOW:!EXP   SET always_trusted = false   SET max_chunked_request_size = 209715200
  • 46. Perlbal Classes Perlbal Perlbal::AIO Perlbal::BackendHTTP Perlbal::Cache Perlbal::ChunkedUploadState Perlbal::ClientHTTP Perlbal::ClientHTTPBase Perlbal::ClientManage Perlbal::ClientProxy Perlbal::CommandContext Perlbal::HTTPHeaders Perlbal::ManageCommand Perlbal::Pool Perlbal::ReproxyManager Perlbal::Service Perlbal::Socket Perlbal::SocketSSL Perlbal::TCPListener Perlbal::Test Perlbal::Test::WebClient Perlbal::Test::WebServer Perlbal::UploadListener Perlbal::Util
  • 50. call ENABLE servicename, start to listen on Perlbal::TCPListener                {{ INTERNET }}                       |                       v   [Service]<===>[TCPListener]               ___/    |    __              v        v        v   [ClientManage]  [ClientHTTP] [ClientProxy]                                      ^                                      |                                      v                                [BackendHTTP] http://code.sixapart.com/trac/perlbal/browser/trunk/doc/hacking/classes.txt
  • 52. Perlbal::Plugin AccessControl AtomInject AtomStream AutoRemoveLeadingDir Cgilike Cgilike::Request EchoService EchoService::Client Highpri Include LazyCDN MaxContentLength NotModified Palimg Queues Redirect Stats Stats::Storage Vhosts Vpaths http://code.sixapart.com/trac/perlbal/browser/trunk/lib/Perlbal/Plugin
  • 53. hooks
  • 56. package Perlbal::Plugin ::MyPlugin; use strict; use warnings; # when &quot;LOAD&quot; directive loads us up sub load {      return 1; } # unload our global commands, clear our service object sub unload {      return 1; } # called when we're being added to a service sub register {      return 1; } # called when we're no longer active on a service sub unregister {      return 1; } 1; __END__
  • 57. LOAD MyPlugin LOAD OtherPlugin CREATE SERVICE hogehoge     plugins = OtherPlugin, MyPlugin ENABLE hogehoge
  • 58. $ telnet localhost 60000 plugins hogehoge OtherPlugin MyPlugin
  • 59. This slide introduced Perlbal to you. If you are interested in Perlbal, please try again later!
  • 62. Danga::Socket::AnyEvent From: Martin Atkins Date: Mon, 17 Aug 2009 16:26:09 -0700 Subject: AnyEvent implementation of Danga::Socket   &quot;This allows Perlbal to, in theory, run in any event loop supported by AnyEvent, and more interestingly allows Perlbal plugins to make use of AnyEvent protocol implementations.&quot;   http://groups.google.com/group/perlbal/browse_thread/thread/3a275de028d1a04b
  • 63. Try Danga::Socket::AnyEvent, if you are interested in AnyEvent! http://search.cpan.org/dist/Danga-Socket-AnyEvent/
  • 64. Resources Perlbal http://www.danga.com/perlbal/   Six Apart Code http://code.sixapart.com/svn/perlbal/   Google Code http://code.google.com/p/perlbal/   Google Groups http://groups.google.com/group/perlbal