最近项目即将上线,由于人手问题,各种研究运维相关知识,这两天刚弄完redis集群部署的问题,跟大家唠唠。
一、Redis安装
*以下均是在Linux环境下执行,系统ubuntu16.04
1. 下载稳定版
sudo wget http://download.redis.io/redis-stable.tar.gz
复制代码
2. 解压
sudo tar -zxvf redis-stable.tar.gz
复制代码
3. 如果没有GCC编辑器就装一下
sudo apt-get install gcc
复制代码
4. 编辑、安装
cd redis-stable
make
make install PREFIX=安装目录
复制代码
5. Redis配置
cd 步骤4安装目录/bin
cp redis-stable目录/redis.conf ./
# 如果就是想起个简单的redis服务,到这里就结束了
针对redis cluster需要修改的配置(实际使用去掉注释):
bind IP地址 # 为了外网访问,原为127.0.0.1
port 6379 # 端口号
daemonize yes # 后台模式
# 如果要设置密码的话,masterauth和requirepass都要设置,否则主从切换时,会有授权问题
masterauth 密码
requirepass 密码(必须一致)
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
复制代码
6. 启服务
如果想在一台机器上启多个服务,可以复制多个reids.conf,修改port,并且要修改日志文件名称
也可以粗暴的复制多个bin文件夹,只改port就行了
./redis-server redis.conf
复制代码
二、Redis集群
目前,redis集群解决方案有两个:
1. Twemproxy
这是Twitter推出的解决方案,简单的说就是上层加个代理负责分发,属于client端集群方案,目前大多数应用者都在采用的解决方案。
会用到LVS、Twemproxy、Keepalived、Redis主从模式,感觉太麻烦了,而且没有在线扩容节点能力,公司经济能力有限,没法一开始就预留出足够的节点,后来发现了官推的redis cluster方案,就放弃了Twemproxy。
2. Redis Cluster
Redis3.0之后,官方推出的server端集群方案
优点:
(1) 官方解决方案
(2) 可以在线水平扩展(Twemproxy的一大弊端就是不支持在线扩容节点)
(3) 客户端直连,系统瓶颈更少
(4) 无中心架构
(5) 支持数据分片
复制代码
根据需求,最终解决方案选择:redis cluster +主从模式
下面介绍一下配置
1. 安装ruby环境
sudo apt-get install ruby
sudo apt-get install rubygems
sudo gem install redis # ruby的redis客户端
复制代码
2. 如果要设置密码,这里要修改一些配置
执行 gem environment 找到 INSTALLATION DIRECTORY
cd到上面路径+/gems/redis-xxx/lib/redis/
vim client.rb
password => "密码" #修改password为指定密码
复制代码
3. 还有另一种设置密码的方式
最开始redis不要设置密码,待集群起来之后,通过config命令挨个redis服务修改配置
configset masterauth 密码
config set requirepass 密码
config rewrite
复制代码
4. 配置集群
cd redis安装目录
cp redis-stable目录/src/redis-trib.rb ./
./redis-trib.rb create --replicas 1 192.168.1.222:6379 192.168.1.223:6379 192.168.1.224:6379 192.168.1.225:6379192.168.1.226:6379 192.168.1.227:6379 # replicas 1表示一从,本案例三主三从
复制代码
可以通过如下检查各节点情况:
./redis-trib.rb check 192.168.1.222:6379
复制代码
三、Redis性能监控
redis-cli本身提供monitor功能,且功能强大,不过monitor性能消耗很大,只应该短期开启调试,不能作为长期性能监控解决方案
这里选用了redis-monitor,支持集群,python编写,有web端
1. 安装python环境(redis-monitor是基于python2.7的)
sudo apt-get install python2.7 python2.7-dev
复制代码
2. 安装build依赖包-有些pip安装的包需要libssl和libevent编译环境
sudo apt-get install build-essential libssl-dev libevent-dev libjpeg-devlibxml2-dev libxslt-dev
复制代码
3. 安装pip–包管理工具
sudo apt-get install python-pip
复制代码
4. 下载redis-monitor
git clone https://github.com/LittlePeng/redis-monitor.git
复制代码
5. 安装依赖
cd redis-monitor
pip install -r requirements.txt
复制代码
6. 后台模式启服务
cd redis-monitor/src
pythonredis_monitor_daemon.py # 信息收集
python redis_live_daemon.py # web,port:8888
访问:127.0.0.1:8888/index.html
复制代码