概述
分布式数据库的 实现
<?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.147 | lvs 负载均衡 | nginx+php+linux |
10.0.118.135 | web01 | lnmp |
10.0.118.158 | web02 | lnmp |
【步骤】
web01 web02 配置一模一样的vhost
配置一模一样的vhost
配置负载均衡
注释掉 #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; }
最后
以上就是成就乐曲为你收集整理的分布式数据库的实现,以及负载均衡和反向代理,动静分离的配置的全部内容,希望文章能够帮你解决分布式数据库的实现,以及负载均衡和反向代理,动静分离的配置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复