首页 运维 网络学院 查看内容

使用haproxy来实现sphinx负载均衡与健康监测

2011-10-19 22:20 688 0

摘要:   使用haproxy来实现sphinx负载均衡与健康监测  环境如下:  【node1】  Sphinx:192.168.1.189  【node2】  Sphinx:192.168.1.101  ...
关键词: nbsp haproxy sphinx check status server localhost proxy node Unavailable

  使用haproxy来实现sphinx负载均衡与健康监测  环境如下:  【node1】  Sphinx:192.168.1.189  【node2】  Sphinx:192.168.1.101  【node3】  Haproxy:192.168.1.103  【node3】上配置:  # apt-get install make gcc g++ automake libtool  1.安装  # wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.18.tar.gz  # tar zxvf haproxy-1.4.18.tar.gz -C /software/  # cd haproxy-1.4.18  # make TARGET=linux26 PREFIX=/usr/local/haproxy-1.4.18  # make install PREFIX=/usr/local/haproxy-1.4.18  配置  # cd /usr/local/haproxy-1.4.18  # vim haproxy.cfg  global  log 127.0.0.1   local0 info  //日志[err warning info debug]  maxconn 4096  //单个进程的最大连接数  pidfile /usr/local/haproxy-1.4.18/log/haproxy.pid  user haproxy  group haproxy  daemon //守护进程运行  nbproc 4 //作为守护进程运行时,创建多少个进程  defaults  log     global  mode    http  option  dontlognull //不记录空连接  option  log-health-checks //记录健康检测日志  retries 3 //连接失败后的重连次数  option  redispatch //在连接失败或断开情况下,允许当前会话被重新分发  maxconn 2000 //最大连接数  timeout connect 5000ms  timeout client  30000ms  timeout server  30000ms  listen  haproxy-status 0.0.0.0:8888  mode          http  option        httplog  stats uri     /hasphinx  //统计页面url  stats realm   Global\ statistics  stats auth    hasphinx:hasphinx  //登录用户和密码  listen  proxy-sphinx-1 0.0.0.0:3312  mode   tcp  balance roundrobin  //服务器分配算法  option tcpka  option httpchk  server node1 192.168.1.189:3312 weight 1 check port 9312 inter 1s rise 2 fall 2  server node2 192.168.1.101:3312 weight 1 check port 9312 inter 1s rise 2 fall 2  //后台服务器  #weight 服务器权重  #check port 检测端口  #inter 设置连续的两次健康检测间的时间  #rise 指定多少次连接成功的健康检测后,可认定该服务器可用  #fall 指定多少次失败的健康检测后,可认定该服务器当掉  配置日志  # vim /etc/rsyslog.d/haproxy.conf  $ModLoad imudp  $UDPServerRun 514  local0.*        /var/log/haproxy.log  重启日志服务  # restart rsyslog  【node1/node2】上配置:  1.健康检测  # apt-get install xinetd  # vim /etc/inetd.conf  sphinxchk       stream  tcp     wait    root    /usr/local/scripts/sphinxchk.sh  注释:  a.服务名称:inetd通过查询/etc/services获得该服务相关信息  b.套接字类型:该服务使用的通信协议tcp用stream,udp用dgram  c.Inetd是否等待守护进程结束才继续接管端口。Wait表示等待,nowait表示不等待,inetd每次接到一个请求就启动守护进程的新副本  d.运行该守护进程的用户  e.守护进程二进制文件的路径以及参数  # vim /etc/xinetd.d/sphinxchk  service sphinxchk  {  flags           = REUSE  socket_type     = stream  port            = 9312  wait            = no  user            = root  server         = /usr/local/scripts/sphinxchk.sh  log_on_failure  += USERID  disable         = no  only_from       = 192.168.1.0/24  }  sphinx配置省略  测试:  将sphinx源码api目录下的sphinxapi.py test.py拷贝到测试服务器上。  # vim sphinx-test.sh  #!/bin/bash  i=0  while [ "$i" -lt "99999" ]  do  /usr/bin/python  /root/test.py -a $*  let i=$i+1  done  # ./sphinx-test.sh php aaa bbb ccc dddd  Kill掉node1上的sphinx服务  Oct 13 01:59:59 localhost haproxy[12117] Health check for server proxy-sphinx-1/node1 failed, reason: Layer7 wrong status, code: 503, info: "Service Unavailable", check duration: 32ms, status: 1/2 UP.  Oct 13 01:59:59 localhost haproxy[12119] Health check for server proxy-sphinx-1/node1 failed, reason: Layer7 wrong status, code: 503, info: "Service Unavailable", check duration: 31ms, status: 1/2 UP.  Oct 13 01:59:59 localhost haproxy[12118] Health check for server proxy-sphinx-1/node1 failed, reason: Layer7 wrong status, code: 503, info: "Service Unavailable", check duration: 31ms, status: 1/2 UP.  Oct 13 01:59:59 localhost haproxy[12120] Health check for server proxy-sphinx-1/node1 failed, reason: Layer7 wrong status, code: 503, info: "Service Unavailable", check duration: 31ms, status: 1/2 UP.  Oct 13 02:00:00 localhost haproxy[12117] Health check for server proxy-sphinx-1/node1 failed, reason: Layer7 wrong status, code: 503, info: "Service Unavailable", check duration: 35ms, status: 0/2 DOWN.  Oct 13 02:00:00 localhost haproxy[12117] Server proxy-sphinx-1/node1 is DOWN. 1 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.  Oct 13 02:00:00 localhost haproxy[12119] Health check for server proxy-sphinx-1/node1 failed, reason: Layer7 wrong status, code: 503, info: "Service Unavailable", check duration: 32ms, status: 0/2 DOWN.  Oct 13 02:00:00 localhost haproxy[12119] Server proxy-sphinx-1/node1 is DOWN. 1 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.  Oct 13 02:00:00 localhost haproxy[12118] Health check for server proxy-sphinx-1/node1 failed, reason: Layer7 wrong status, code: 503, info: "Service Unavailable", check duration: 30ms, status: 0/2 DOWN.  Oct 13 02:00:00 localhost haproxy[12118] Server proxy-sphinx-1/node1 is DOWN. 1 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.  Oct 13 02:00:00 localhost haproxy[12120] Health check for server proxy-sphinx-1/node1 failed, reason: Layer7 wrong status, code: 503, info: "Service Unavailable", check duration: 32ms, status: 0/2 DOWN.  Oct 13 02:00:00 localhost haproxy[12120] Server proxy-sphinx-1/node1 is DOWN. 1 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.  请求将会发送到node2上面。(将sphinx的查询日志打开进行观察)
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部