我是靠谱客的博主 成就乐曲,最近开发中收集的这篇文章主要介绍分布式数据库的实现,以及负载均衡和反向代理,动静分离的配置,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

分布式数据库的 实现

 
<?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_passmemcached_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;
  
}


最后

以上就是成就乐曲为你收集整理的分布式数据库的实现,以及负载均衡和反向代理,动静分离的配置的全部内容,希望文章能够帮你解决分布式数据库的实现,以及负载均衡和反向代理,动静分离的配置所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部