一、准备
二、安装 Redis
安装
wget http://download.redis.io/releases/redis-5.0.8.tar.gz
tar -zxvf redis-*.tar.gz
cd redis-5.0.8
make PREFIX=/usr/local/redis install
启动
# 默认端口 6379
./redis-server
# 指定端口
./redis-server --port 7001 &
--help
Usage: ./redis-server [/path/to/redis.conf] [options]
./redis-server - (read config from stdin)
./redis-server -v or --version
./redis-server -h or --help
./redis-server --test-memory <megabytes>
Examples:
./redis-server (run the server with default conf)
./redis-server /etc/redis/6379.conf
./redis-server --port 7777
./redis-server --port 7777 --replicaof 127.0.0.1 8888
./redis-server /etc/myredis.conf --loglevel verbose
Sentinel mode:
./redis-server /etc/sentinel.conf --sentinel
三、主从配置
主:redis-20201.conf
;
从:redis-20202.conf
、redis-20203.conf
;
修改从服务配置:
配置主服务器的IP地址:replicaof 192.168.218.104 20201
设置主服务器的密码:masterauth <master-password>
启动所有Redis数据服务:
bin/redis-server conf/redis-20201.conf
bin/redis-server conf/redis-20202.conf
bin/redis-server conf/redis-20203.conf
登陆 20201 端口的Redis服务主服务查看所有的副本信息:
bin/redis-cli -p 20201 info replication
'''
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.218.105,port=20202,state=online,offset=924,lag=1
slave1:ip=192.168.218.106,port=20203,state=online,offset=924,lag=1
master_replid:682f18e30b216697adee619d2833d500f2edc7ad
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:924
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:924
'''
操作 20201主服务
bin/redis-cli -p 20201
set name webben
# 登陆其他从服务
get name
主从设计的最大好处在于:可以自动对数据做备份; 主从设计模式的最大缺点在于:只能够做备份,而出现灾难之后无法立即恢复。
四、哨兵机制
五、twemproxy
'''安装依赖库'''
yum install autoconf libtool -y
'''编译安装twemproxy'''
tar zxf twemproxy-0.4.1.tar.gz
cd twemproxy-0.4.1
'''遇到autoconf版本低的报错'''
autoreconf -fvi
'''提示:
configure.ac:8: error: Autoconf version 2.64 or higher is required
下载较高版本的 autoconf
http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz'''
'''编译安装autoconf,并覆盖低版本文件'''
./configure
make
make install
cp /usr/local/bin/autoconf /usr/bin/
cp /usr/local/bin/autoreconf /usr/bin/
'''重新安装 twemproxy'''
autoreconf -fvi
./configure --prefix=/usr/local/twemproxy
make
make install
配置
webben: '''redis集群的逻辑名称'''
listen: 127.0.0.1:19933 '''twemproxy监听的端口号'''
hash: fnv1a_64 '''hash散列算法'''
distribution: ketama '''分片算法,一致性hash,取模,等等'''
auto_eject_hosts: true '''自动摘除故障节点'''
redis: true '''是否是redis,false的话是memcached'''
server_retry_timeout: 2000 '''每隔30秒判断故障节点是否正常'''
server_failure_limit: 2 '''多少次无响应,就从一致性hash环中摘除'''
'''redis实例列表,一定要加别名,否则默认使用ip:port:weight来计算分片,如果宕机后更换机器,那么分片就不一样了,因此加了别名后,可以确保分片一定是准确的'''
servers:
- 127.0.0.1:7001:1 weibin
- 127.0.0.1:7002:1 webben
启动
sbin/nutcracker
--daemonize
--verbose=11
--output=logs/nut.log
--conf-file=conf/nutcracker.yml
--stats-port=19932
--pid-file=data/nut.pid
登陆
''' 登陆redis '''
redis-cli -p 19933
'''测试'''
set name webben
get name
'''获取 twemproxy 状态'''
curl --get http://127.0.0.1:19932