设为首页 收藏本站
查看: 1762|回复: 0

[经验分享] 用haproxy+redis实现分布式redis服务器

[复制链接]

尚未签到

发表于 2015-11-20 10:38:31 | 显示全部楼层 |阅读模式
  redis是一个非常强大的nosql服务,不仅能替代memcache这样的key/value服务,也具有强大的队列功能,在普通应用上可以替代activemq/rabbitmq一类队列服务
  但是目前为止,redis都没有实现真正有效的集群功能,redis的作者承诺会在redis 3.0的时候将名为“redis-cluster”的集群功能加入redis,但是截至目前,redis还是2.8版本
  

  redis本身不具有集群,不代表我们不能实现redis集群,通过思考,我选择使用流行的负载均衡器+redis的组合来实现
  在负载均衡器的选择上,我选择haproxy。目前圈内流行的负载均衡器有lvs、nginx、haproxy,lvs的资料相对较少,nginx只支持http和email的负载均衡,相较之下,只有haproxy比较适合我们的应用场景。
  

  多的不说了,我们马上开始
  

  实验过程全部在一台服务器上进行:
  192.168.1.168
  在这台服务器上只装了一个redis
  /usr/local/redis
  但是通过使用不同的配置文件(实际只是copy了同一份配置文件,改一下监听端口),开启了两个redis监听实例,就等于两个redis了
  192.168.1.168:6379
  192.168.1.168:6378
  

  我们的haproxy装在
  /usr/local/haproxy
  

  安装过程很简单
  到http://download.iyunv.com/download/0013000/12508.shtml下载haproxy的最新版本,我选择下载http://down1.iyunv.com/distfiles/haproxy-1.4.21.tar.gz这个
  

  tar zxvf haproxy-1.4.21.tar.gz
  mv haproxy-1.4.21 /usr/local/haproxy
  cd /usr/local/haproxy
  make install
  这样就装好了,简单不
  

  接下来要写配置文件
  cd /usr/local/haproxy
  mkdir conf log
  cd conf
  vim haproxy.cfg
  

  配置内容如下:
  global
        log 127.0.0.1   local0        #日志输出配置,所有日志都记录在本机,通过local0输出
        maxconn 4096    #最大连接数
        chroot /usr/local/haproxy    #改变当前工作目录
        user haproxy    #所属运行的用户
        group haproxy    #所属运行的用户组
        daemon        #以后台形式运行ha-proxy
        nbproc 4    #启动4个ha-proxy实例
        pidfile /usr/local/haproxy/log/haproxy.pid        #pid文件位置

defaults
        log     127.0.0.1       local3    #日志文件的输出定向
        mode    tcp        #{ tcp|http|health } 设定启动的实例的协议类型,此处要选择tcp,因为redis是基于tcp协议运行的
        option dontlognull        #保证HAProxy不记录上级负载均衡发送过来的用于检测状态没有数据的心跳包
        option redispatch        #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
        retries 2        #重试2次连接失败就认为服务器不可用,主要通过后面的check检查
        maxconn 2000    #最大连接数
        balance roundrobin        #负载均衡算法,roundrobin表示轮询,source表示按照IP
        contimeout      5000    #连接超时时间
        clitimeout      50000    #客户端连接超时时间
        srvtimeout      50000    #服务器端连接超时时间

listen proxy 192.168.1.168:6300
        server redis_192.168.1.168_6378 192.168.1.168:6378 check inter 2000 rise 2 fall 5    #你的均衡节点
        server redis_192.168.1.168_6379  192.168.1.168:6379 check inter 2000 rise 2 fall 5
  

  配置文件保存,然后来启动haproxy

  /usr/local/haproxy/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
  如果修改了配置文件要重新运行,先要结束haproxy的所有进程
  killall haproxy
  然后再重新执行启动haproxy的命令

  

  这样redis的集群就搭好了!
  现在来试验一下,php代码:

  $redis = new Redis();
$redis->connect('192.168.1.168',6300);
$r = $redis->info();
print_r($r);
  

  打印出来的状态数组,能看得出来是不同的实例,process_id是不同的进程id
  

  以上是为实现redis集群目的进行的haproxy配置,haproxy是一款非常强大的负载均衡器,功能不止于此
  更多的haproxy配置方法请参考:
  http://blog.zhanxb.com/post/476
  更详细的haproxy配置参数解释请参考:
  http://www.cnblogs.com/dkblog/archive/2012/03/13/2393321.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-141456-1-1.html 上篇帖子: haproxy工作流程分析 下篇帖子: 负载均衡(haproxy安装,配置,使用)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表