一、Centos服务器上搭建nginx负载均衡的过程
本文的前提是你的服务器上已经装好了nginx服务且已正常启动。我这边是在虚拟机上配置的,所以在本机上先host指定了一个到虚拟机的域名,比如:
192.168.47.128 kermit.com
在虚拟机为server:kermit.com 添加上配置,实现本机里可以通过kermit.com访问虚拟机的80端口。然后就开始操作负载均衡了。建议两个server配置文件,都存放在nginx配置目录下,如conf/vhost/p98.conf和conf/vhost/p99.conf.配置内容如下:p98.conf
p99.conf和p98的内容基本一样,就是修改一下监听端口和server_name(这个不弄也行),然后就是修改root目录。因为我们需要区分是访问的不同的地址来确定实现了负载均衡。
这两个配置文件编辑好了之后,就创建好各自的root目录及index文件,我这里的文件和内容截图如下:
配置好这些之后再配置负载均衡,写在nginx.conf里的http模块中:
upstream testup{
server 127.0.0.1:98;
server 127.0.0.1:99;
}
#上面就是负载均衡模块:upstream,可以写在include前也可以写在include 下面这句后。注意upstream testup这句,testup就相当于这个负载均衡的ID。include vhost/*.conf;
再进入到最开始你能正常访问的kermit.com主机的server配置,在它的location中写上: proxy_pass http://testup; 如下:
location / {
proxy_pass http://testup;
#后面的都可以不要
}
重启nginx.后访问kermit.com前台就会切换显示home/www/下p98和p99目录里的index.html里的内容。
this is /home/www/p99
this is /home/www/p98 ------98
二、php使用sys_getloadavg获取服务器系统负载以及检查当前客户端的连接状态函数connection_status
php里如果要获取服务器的一些信息,可以使用exec执行一些系统命令,从而得到服务器的信息。今天看到一个PHP自身提供了一个直接获取系统负载的函数:
sys_getloadavg — 获取系统的负载(load average),此函数会返回三个系统负载(系统运行队列中的进程数)的样本数据,分别是1分钟、5分钟和15分钟之前。使用方法:
array sys_getloadavg ( void )
返回示例:
Array ( [0] => 0.06 [1] => 0.04 [2] => 0 )
另外,PHP还提供两个函数检查当前客户端的连接状态:
connection_aborted — 检查客户端是否已经断开
如果客户端已经断开则返回1,否则返回0。
connection_status — 返回连接的状态位
获得当前连接的状态位, 可以用于与 CONNECTION_XXX 定义的常量来确定连接状态。