症状:通过虚拟IP能访问到监控页面:http://192.168.253.110/ipvsadm.php,但是却无法读出LVS任务分发及集群负载信息。

打开ipvsadm.php页面,源码如下:

<html>
<meta http-equiv="refresh" content="1">
<?php
$cmd = '/home/geohpc/zmq/lvsstatus.sh';//页面每间隔2s会自动刷新,执行该脚本读取LVS负载信息
$result=shell_exec($cmd);
echo "<hr>";
$i = 0;
$table_begin = 0;

while ($result)
  {
    $i++;
    $len = strpos ($result, "\n");
    $line = substr ($result, 0, $len); 
    $result = substr ($result, $len + 1);
    if ($i <= 3)
      continue;
    $result = trim ($result, " ");

    $isReal = strpos ($line, ">");
    if ($isReal == 1)
      {
//      list($jiantou, $ip, $route, $weight, $act, $inact) = split(" ",$line);
        $con =  preg_split("[ ]",$line,-1,PREG_SPLIT_NO_EMPTY);
        $content = "<tr>";

        $content = $content."<td>$con[1]</td>";
        $content = $content."<td>$con[3]</td>";
        $content = $content."<td>$con[4]</td>";
        $content = $content."<td>$con[5]</td>";
        $content .= "<tr>";
        echo $content;
      }
    else
      {
        if ($table_begin == 1)
          {
            echo "</table><div>";
                echo "<hr>";
          }
           $head  = "<div align=\"middle\">";
           $head .= "<h1>".$line."</h1>";
           $head .= "<table border=\"1\" width=\"50%\"><tr>";
           $head .="<th width=\"10\">server:port</th>";
           $head .="<th>Weight</th>";
           $head .="<th>Active</th>";
           $head .="<th>Inactive</th>";
           $head .="</tr>";
          echo $head;

        $table_begin = 1;
      }
  }
echo "</table>"
?>
<script>
sleep(2);
window.location.reload();
</script>
</html>

脚本文件lvsstatus.sh如下:

#!/bin/bash
echo "geohpc" | /usr/bin/sudo -S ipvsadm -L

问题:上述脚本文件的含义为以超级用户的权限请求ipvsadm服务,查看其转发状态,而echo后引号内为su用户的密码,这样每次刷新页面执行上述脚本时将自动为sudo填入密码。

可是,此处输入的密码确是错误的,因为为安全起见,2013年初集群演示完毕后更改过一次密码,修改为正确密码后,集群LVS的监控页面马上显示出来了,如下:

 

posted on 2013-12-11 20:48  yeahgis  阅读(2093)  评论(0编辑  收藏  举报