[分布式负载均衡实例]ruby服务迁移,mongrel多服务器,lighttpd代理负载均衡

来源:互联网 发布:将谦卑温柔成绝对 知乎 编辑:程序博客网 时间:2024/05/16 12:43

数据库迁移常用命令:
mysqldump -uroot -pt --default-character-set=utf8 -d ***_development > create_***_development.sql
mysqldump -uroot -pt --quick --no-create-info --extended-insert --default-character-set=latin1 ***_development > data_***_development.sql
或mysqldump -uroot --all ***_development > ***_development_dump.sql
scp -P ***-v data_***_development.sql ***@***:/home/***  //将本地文件data_***_development.sql复制到远程192.168.1.1上的/home/username/vsftp.conf
会提示要求输入yes确认然后输入密码
scp -P *** -v create_***_development.sql ***@***:/home/***

mysql -uroot -p ***_development < create_***_development.sql
mysql -uroot -p ***_development < data_***_development.sql

iconv -c -f latin1 -t gb2312 data_***_development.sql > data_***_developmentGB2312.sql

以下开始:
#从***.114网站部测试服务器迁移到***.119新的服务器
cd /home/***/webapp/***
apt-get install rails
apt-get install ruby
apt-get install lighttpd
#要安装
gem install -v=*** rails
#要安装
gem install rchardet
sudo apt-get install ruby***-dev
apt-get install mongrel
#外网ip可以访问这几个服务,-N后面的参数是启动的进程数,从设置的ip开始递增3010,3011,3012
#-c 代表rails项目根目录,production生产模式,development开发调试模式
mongrel_rails cluster::configure -e production -p 3010 -N 3 -c /home/***/***/webapp/***/ -a 0.0.0.0 --user *** --group ***
#或
mongrel_rails cluster::configure -e development -p 3010 -N 3 -c /home/***/***/webapp/***/ -a 0.0.0.0 --user *** --group ***
#只是本机访问,可以通过本机代理访问
mongrel_rails cluster::configure -e production -p 3010 -N 3 -c /home/***/webapp/***/ -a 127.0.0.1 --user *** --group ***
生成config/mongrel_cluster.yml
#启动
mongrel_rails cluster::restart
#这里mongrel的功能类似ruby script/server webrick -p3010 -d 中的webrick

#配置代理服务器
sudo apt-get install lighttpd
vi /etc/lighttpd/lighttpd.conf
#修改如下:(mod_proxy,mod_alias,mod_rewrite都需要)
server.modules              = ( "mod_proxy",
            "mod_access",
            "mod_alias",
            "mod_accesslog",
            "mod_compress",
            "mod_rewrite",
----------------------
## bind to port (default: 80)
#这里或修改成需要的端口
#server.port               = 80
----------------------
proxy.debug = 0
#proxy.balance = "fair" 第一个满了再挑选下一个服务器

#proxy.balance = "hash" 一个url固定到一个服务器上
proxy.balance = "round-robin" 每次都更新一个服务器响应
proxy.server = ("/" =>
(
( "host" => "127.0.0.1", "port" => 8888 )
)
)
$HTTP["host"] == "***.***.com" {
        proxy.balance = "round-robin"
        proxy.server  = ( "/" => (
            ( "host" => "127.0.0.1", "port" => 3010 ),
            ( "host" => "127.0.0.1", "port" => 3011 ),
            ( "host" => "127.0.0.1", "port" => 3012 ) ) )

----------------------
#这里设置的对应上面mongrel_rails启动的集群
/etc/init.d/lighttpd restart
ruby 项目根目录下的config/environments/production.rb   
修改为(不需要设置缓存):
config.action_controller.perform_caching             = false
config.action_view.cache_template_loading            = false
#至此迁移部署完毕

以下附上分布式处理的图示:

1