文档章节

Keepalive,Twemproxy,Redis整体集群搭建记录

HelloEric
 HelloEric
发布于 2015/05/03 18:36
字数 1248
阅读 158
收藏 1

redis简介

搭建时间:2014/07/24 搭建系统:centos 6.2,centos 6.5 服务器架构
192.168.0.221 twemproxy,redis master01,redis slave02 192.168.0.220 twemproxy,redis master02,redis slave01 192.168.0.10 keepalived master 192.168.0.20 keepalived slave
服务版本:
redis : 2.4.10 keepalived: 1.2.2 twemproxy-master: 0.3.0

Redis

安装Redis

解压redis源码包; 根据README的介绍,完成安装步骤(make) 将redis文件夹mv到/usr/local下面,完成安装

配置redis的master/slave

新建redis配置文件路径 登录到192.168.0.221服务器
mkdir /var/redis/master01/{conf,data,logs,run}; mkdir /var/redis/slave02/{conf,data,logs,run};
登录到192.168.0.220服务器
mkdir /var/redis/master02/{conf,data,logs,run}; mkdir /var/redis/slave01/{conf,data,logs,run};
创建redis.conf文件(master和slave都大致一样,只有2行不同)
dir /var/redis/master01/  #redis的地址 pidfile ./run/redis.pid  #相对路径地址是相当dir来说的 logfile ./logs/stdout.log dbfilename ./data/dump.rdb bind 192.168.0.220 #监听服务地址 daemonize yes requirepass 123qwe #服务密码 masterauth 123qwe  #这个只是在slave服上面配置,master不需要配置 slaveof 192.168.0.221 6601 #这个只是需要在slave上面配置,master不需要配置,指定master的地址 databases 16 port 6601 # 服务端口 timeout 0 loglevel verbose save 900 1 save 300 10 rdbcompression yes slave-serve-stale-data yes #如果master断了,slave是否提供服务 appendonly no appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb slowlog-log-slower-than 10000 slowlog-max-len 1024
启动redis服务 先启动redis master服务,然后再启动redis slave服务 登录到slave服务器,执行./redis-cli -h 192.168.0.220 -p 6601 -a 123qwe info,如果配置正确,最后会显示
role:slave master_host:192.168.0.221 master_port:6601 master_link_status:up master_last_io_seconds_ago:8 master_sync_in_progress:0
说明redis的master/slave已经完成配置

twemproxy

安装twemproxy

首先去下载最新的twemproxy,在github上面找到最新版本 如果是采用和我一样的系统,需要先更新autoconf,系统自带版本过低,编译会报错
CFLAGS="-ggdb3 -O0" autoreconf -fvi ./configure --prefix=/usr/local/twemproxy  --enable-debug=log make && make install

配置twemproxy

这里配置是采用2台服务器搭建,每个服务器都安装一个twemproxy,配置一样,前端使用keepalived进行LVS分发 登陆到192.168.0.221/220,修改conf下面的nutcracker.yml,配置如下:
redis1: listen: 0.0.0.0:10000 hash: fnv1a_64 #分发算法 distribution: ketama timeout: 400 backlog: 1024 preconnect: true auto_eject_hosts: true server_retry_timeout: 2000 # 重试的时间 server_failure_limit: 3 #失败尝试次数,达到上限就取消后端分发权限 servers: - 192.168.0.220:6601:1  # redis实例的ip,端口,权重 - 192.168.0.221:6601:1

redis启动服务

/usr/local/twemproxy/sbin/nutcracker -c /usr/local/twemproxy/conf/nutcracker.yml -d

redis测试服务

随便另外找一个安装有redis的服务器
./redis-cli -h 192.168.0.220 -p 10000 -a 123qwe
如果没有报错,说明成功!

keepalived

安装keepalived

登录到192.168.0.10
yum install kernel-devel ./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.18-308.el5-x86_64/ make && make install
在make之前,如果现实如下结果,表示你的系统可以完成keepalived的各项功能
Keepalived configuration ------------------------ Keepalived version       : 1.2.2 Compiler                 : gcc Compiler flags           : -g -O2 -DETHERTYPE_IPV6=0x86dd Extra Lib                : -lpopt -lssl -lcrypto Use IPVS Framework       : Yes # 要实现LVS功能,必须保证这个地方是YES IPVS sync daemon support : Yes # IPVS use libnl           : No Use VRRP Framework       : Yes Use Debug flags          : No

keepalived配置

修改文件keepalived.conf
global_defs { router_id wd_twemproxy } vrrp_instance wd2 { state BACKUP # master标准MASTER nopreempt interface em2 track_interface { em2 } virtual_router_id 70 priority 100 # 权重高的作为master advert_int 1 authentication { auth_type PASS auth_pass css74..tfwwapmzi4r } virtual_ipaddress { 192.168.0.100/16 dev em2 scope global #定义VIP } } virtual_server 192.168.0.100 10000 { delay_loop 6 lb_algo wrr lb_kind DR nat_mask 255.255.0.0 persistence_timeout 120 protocol TCP real_server 192.168.0.220 10000 { weight 1 TCP_CHECK { connect_timeout 60 nb_get_retry 3 delay_before_retry 3 connect_port 10000 } } real_server 192.168.0.221 10000 { weight 1 TCP_CHECK { connect_timeout 60 nb_get_retry 3 delay_before_retry 3 connect_port 10000 } } }
配置完成了之后,启动keepalived
/usr/local/keepalived/sbin/keepalived -f /usr/local/keepalived/etc/keepalived/keepalived.conf
执行 ipvsadm -Ln 显示如下:
IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP  192.168.0.100:10000 wrr persistent 120 -> 192.168.0.220:10000         Route   1      0          0 -> 192.168.0.221:10000         Route   1      0          0
说明keepalived配置成功

总结(关键,可以首先阅读)

因为不想再次修改上面的内容,所以直接在后面添加说明,看了之后再根据下面的内容自己调整上面的配置!

坑爹第一季

以上的做法当你完全配置完成之后,可以发现无法提供服务,想知道为什么吗,我TM也不知道,反正就是不行,无法连接
[Mon Jul 28 10:57:29 2014] nc_proxy.c:336 accepted c 9 on p 8 from 'unknown' [Mon Jul 28 10:57:29 2014] nc_core.c:201 close c 9 'unknown' on event FF00FF eof 0 done 0 rb 0 sb 0: Connection reset by pee [Mon Jul 28 10:57:35 2014] nc_proxy.c:336 accepted c 9 on p 8 from 'unknown' [Mon Jul 28 10:57:35 2014] nc_core.c:201 close c 9 'unknown' on event FF00FF eof 0 done 0 rb 0 sb 0: Connection reset by peer
以上为twemproxy启动之后报错信息,如果你也是采用keepalived作为最前端的LVS分发功能,那估计结果不会比我好到哪去。 解决办法: 放弃使用keepalived使用LVS的功能,最多使用热备功能,前端使用两个twemproxy,一个主,一个备,keepalived提供服务。

坑爹第二季

如果redis使用主备功能,不要使用密码认证,直接使用内网地址也很安全,不然twemproxy无法提供服务,切记,切记!!!

© 著作权归作者所有

HelloEric

HelloEric

粉丝 8
博文 81
码字总数 76741
作品 0
成都
私信 提问
Redis集群初步设计

1、需求背景 最近为满足业务推广活动的需求,需要对Redis集群做容灾,刚开始考虑采用最近比较火的开源方案codis。但考虑到可能会有很多坑,暂不推荐使用,作为后期预研方案。 我们之前一直在...

workming
2015/04/24
0
0
redis分片存储集群的搭建

环境说明: twemproxy安装: [root@localhost src]# tar -zxf nutcracker-0.4.0.tar.gz [root@localhost src]# cd nutcracker-0.4.0[root@localhost nutcracker-0.4.0]# ./configure --prefi......

yacai1990
2016/07/11
0
0
Redis集群方案

单机 redis最主要的适用场景:少量数据存储,高速读写访问,数据全部in-momery 的方式来保证高速访问,同时提供数据落地的功能。 分布式 随着用户量的增长,数据量随之增长,大型网站应用,热...

ksfzhaohui
2016/08/03
213
0
基于nutcracker的redis集群实现 阿里云

坑还是比较多的吧安全组必不可少开启 22121 22122 22123 22124 22222aliyun 搭建redis集群https://my.oschina.net/u/3647713/blog/1982995安装autoconfcd /usr/localwget http://ftp.gnu.or......

lovelan1314
2018/09/10
0
0
架构设计:系统存储(18)——Redis集群方案:高性能

1、概述 通过上一篇文章(《架构设计:系统存储(17)——Redis集群方案:高可用》)的内容,Redis主从复制的基本功能和进行Redis高可用集群监控的Sentinel基本功能基本呈现给了读者。虽然本...

yinwenjie
2016/12/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ES 集群上,业务单点如何优化升级?

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! ES 基础 ES 集群 ES 集群上业务优化 一、ES 基础 ES 的安装下载,网上一大片,我这...

泥瓦匠BYSocket
29分钟前
2
0
input accept属性限制文件上传格式

上传文件的类型;具体做法如下所示: 注意:accept属性可以限制上传格式,其有兼容性如下 《1》上传.csv格式的 <input text="file" accept=".csv" /> 《2》上传.xls格式 <input text="file"......

Jack088
37分钟前
1
0
阿里开发者招聘节 | 面试题01:如何实现一个高效的单向链表逆序输出?

面试,如同玩一场饥饿游戏:既要对环境了然于胸,又要对自身心知肚明。发现一个好工作不容易,但成功应聘又会面临一系列的挑战。 为帮助开发者们提升面试技能、有机会入职阿里,云栖社区特别...

阿里云云栖社区
48分钟前
3
0
使用scp命令在多个Linux系统间进行文件复制

一,什么是scp scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。scp命令可以在linux服务器之间复制文件和目录.scp使用ssh安全协议传输数据,具有和ssh一样的验证机制,从而安全的远...

老孟的Linux私房菜
48分钟前
0
0
CentOS7中ESL服务部署记录

在CentOS7上部署价签系统,需要安装Mysql,Redis,emqtt,jdk。 1)Mysql,参考 2)Redis,参考 3)emqtt,参考 4)jdk,参考 在jdk的下载地址中,下载rpm文件,通过ftp上传到虚拟机后,通过...

莫在全
52分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部