分布式数据库的实现,以及负载均衡和反向代理,动静分离的配置

分布式数据库的 实现

 
<?php 
    public static $MySqlSiteConfig = array(
         MYSQLRANDOM =>array(
            0 => array('host'=>'10.0.113.12','port'=>3306,'username'=>'root','password'=>'123456'),
            1 => array('host'=>'10.0.113.12','port'=>3306,'username'=>'root','password'=>'123456'),
            2 => array('host'=>'10.0.113.12','port'=>3306,'username'=>'root','password'=>'123456'),
            3 => array('host'=>'10.0.113.12','port'=>3306,'username'=>'root','password'=>'123456'),
            4 => array('host'=>'10.0.113.12','port'=>3306,'username'=>'root','password'=>'123456'),
     );
    );
public static function getMysqlRandom()
{
    $rand = mt_rand(0,1000);
    $num = 0;
    if($rand <= 100){
        $num = 0;
    }else if($rand<= 300){
        $num =1 ;
    }else if($rand<= 500){
        $num =2 ;
    }else if($rand<= 700){
        $num =3 ;
    }else if($rand<= 1000){
        $num =4 ;
    }
    return  self::$MySqlSiteConfig[MYSQLRANDOM][$num];
}
 ?>

负载均衡

IP地址角色环境
10.0.118.147lvs 负载均衡nginx+php+linux
10.0.118.135web01lnmp
10.0.118.158web02lnmp

【步骤】

  1. web01 web02 配置一模一样的vhost

    配置一模一样的vhost    

  2. 配置负载均衡

    注释掉  
    	 #location ~ \.php$ {
            #       #root /data/www;
            #       fastcgi_pass 127.0.0.1:9000;
            #       fastcgi_index index.php;
            #       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            #       include fastcgi_params;
            #}
            
     upstream  zhangxiang{
        
          server 10.0.118.135 weight=2; 数字越大 权重越大   weight 权重  
          server 10.0.118.158 weight=1;
          server 10.0.118.158 weight=1;
           server 10.0.118.158 weight=1;
           ip_hash;
          # url_hash;
           #fair;
           max_fail =3;
           fail_timeout = max_fail;
           #wrr;
     }
     server{
     location / {
               #root  /data/www;  这个注释掉
               proxy_pass http://zhangxiang;
               proxy_set_header Host $host; //将header头发给轮询的主机  
               proxy_set_header X-Real-IP $remote_addr; //获取真实的IP地址  
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;//获取真实的IP地址  
               # index index.php index.html index.htm; 这个注释掉    
            }
    }

    nginx的负载均衡 依赖于 nginx_http_upstream_module 模块 支持的代理方式 proxy_pass \fastcgi_pass\memcached_pass

    轮询算法

按照时间顺序逐一分配给后台服务器   如果后台服务器down 掉自动剔除    rr轮询 静态调度算法   
ip_hash 每个请求按照ip hash结果分配  每个ip地址能够固定的访问 一个服务器  
url_hash 按照url地址hash 结果分配   每个url 固定访问一台服务器  
fair 按照后台服务器响应时间来分配   谁响应时间快 谁响应请求  
wrr 按照权重分配  

反向代理

location /uploads/ {
            proxy_pass http://www_shangchuan;
            proxy_set_header Host $host; 
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_buffer_size 16k; 缓存用户头信息 
            proxy_buffers   4 32k; 缓冲区的大小  
            proxy_send_timeout 服务器的回传超时时间  
            proxy_read_timeout 后台服务器响应超时时间
            proxy_busy_buffers_size 32k; 高负荷下的缓冲大小  一般是  proxy_buffer_size的两倍
            proxy_temp_file_write_size 64k; 设定缓存文件夹的大小  从负载均衡服务器传   

        }

动静分离

vim proxy.conf

 		    proxy_set_header Host $host; 
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_buffer_size 16k; 缓存用户头信息 
            proxy_buffers   4 32k; 缓冲区的大小  
            proxy_send_timeout 600 服务器的回传超时时间  600毫秒时间内 服务器必须传完所有的数据
            proxy_read_timeout 600 后台服务器响应超时时间 600毫秒 服务器必须响应   
            proxy_busy_buffers_size 32k; 高负荷下的缓冲大小  一般是  proxy_buffer_size的两倍
            proxy_temp_file_write_size 64k; 设定缓存文件夹的大小  从负载均衡服务器传  
            proxy_next_upstream error timeout http_500 http_404 http_403  当服务器遇到500 404 超时 自动转发到另外一个upstream  转移  

upstream www_shangchuan{

          server 10.0.118.158 weight=10;
    }
 upstream www_static{

         server 10.0.118.159 weight=6;
    }



location /static/ {
     proxy_pass:http://www_static;
  	 include proxy.conf;
   
}

location /upload/ {
     proxy_pass:http://www_upload;
  	 include proxy.conf;
  
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值