Redis集群部署
以下为了验证集群可用性只在一台服务器启动6个不同端口的实例
1.关闭selinux、firewalld
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i “s/SELINUX=enforcing/SELINUX=disabled/g” /etc/sysconfig/selinux
2.为6台服务器安装redis服务
yum - y install gcc gcc-c++
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar -xf redis-5.0.5.tar.gz
cd redis-5.0.5
make && make install
cd /redis-5.0.5/utils
sh ./install _server.sh //脚本运行安装配置redis 方便开机自动启动
直接回车 //默认端口6379 如需修改端口直接输入端口号
直接回车 //默认端口配置文件路径 /etc/redis/6379.conf
直接回车 //日志默认路径 /var/log/redis_6379.log
直接回车 //数据库目录文件 /var/lib/redis/6379
直接回车
回车 完成
再启动第二个实例端口6380
sh ./install _server.sh
输入 6380
一直回车到结束
第三个实例
sh ./install _server.sh
输入 6381
一直回车到结束
…
直到6个实例
netstat -nulpt //可以看到有不同实例的6个端口
3.修改配置文件开启集群以及节点
配置文件路径 /etc/redis/
有6个不同配置文件 6379.conf 6380.conf 6381.conf 6382.conf …
每个配置文件都要开启集群和节点
vi 6379.conf
70 行 bind 0.0.0.0
501行 #requirepass foobared 修改为 requirepass 123456 //设置密码为123456
825 行 cluster-enabled yes //开启集群
833行 cluster-conifg-file nodes-xxx.conf //xxx自定义端口号
839行 cluster-node-timeout 5000
maxclients 10000 //并发连接数
daemonize yes //守护进程方式运行
databases 16 //数据库个数
vi 6380.conf
70 行 bind 0.0.0.0
501行 #requirepass foobared 修改为 requirepass 123456 //设置密码为123456
825 行 cluster-enabled yes //开启集群
833行 cluster-conifg-file nodes-xxx.conf //xxx自定义端口号
839行 cluster-node-timeout 5000
maxclients 10000 //并发连接数
daemonize yes //守护进程方式运行
databases 16 //数据库个数
重启所有redis服务实例
提醒:如果kill杀死进程,无法重启就重启服务器redis服务自动启动
ss -nultp //有十二个redis服务器端口
启动/停止及连接服务
/etc/init.d/redis_6379 //启动命令
/etc/init.d/redis_6379 restat //重启动命令
/etc/init.d/redis_6379 status
/etc/init.d/redis_6379 stop /这种停服务 进程没有了,但仍然redis is running()如果修改了端口使用脚本停服务无法停止/
redis-cli shutdown //这种停服务直接可退出
redis-cli -p 6380 shutdown //修改了端口后的停止服务
redis-cli //默认连接 127.0.0.1 6379-
在客户端访问任意一台master主机存数据
redis-cli -c -h主机 -p 端口 -a密码 //-c是集群模式
redis-cli -h 10.10.100.110 -p 6380 -a 123456
cluster info //查看集群信息
cluster nodes //查看节点信息
四.在任意一台redis服务器上,执行创建集群脚本
部署ruby脚本运行环境
创建集群
yum -y install ruby rubygems ruby-devel // 由于直接官方源安装版本太低需要配置源安装方法一:
yum install centos-release-scl-rh
yum -y install rh-ruby23
scl enable rh-ruby23 bash
ruby -v
gem -v
gem install redis
cp -r /redis-5.0.5/src/redis-trib.rb /usr/local/sbin
方法二: wget https://rubygems.org/gems/rubygems-update-3.0.6.gem
gem rubygems-update-3.0.6.gem
创建集群
cd /redis-5.0.5/src/
redis-trib.rb create --replicas 1 host:port host:post //格式
–replicas 1 //自动为每一个master节点分配一个slave节点
redis-trib.rb create --replicas 1 10.10.100.110:6379 10.10.100.110:6380
10.10.100.110:6381 10.10.100.110:6382 10.10.100.110:6383 10.10.100.110:6384
//redis-cli命令
redis-cli -h //查看命令帮助
常用选项
-h ip地址
-p 端口
-c 集群模式
redis-trib.rb脚本
redis-trib.rb 选项 参数
常用选项
add-node 添加master主机
check 检测集群
reshard 重新分布
add-node --slave 添加slave主机
del-node 删除主机
redis 主从复制
主从复制缺点:
网络繁忙,会产生数据同步延时问题
系统繁忙,会产生数据同步延时问题
同样方式安装redis
redis服务运行后,默认都是master服务器
配置从库 :
sed -n ‘’70p;282p;289p” /etc/redis/6379.conf
bind 0.0.0.0
slaveof 10.10.100.111 6379 //主库ip与端口
msterauth 123456 //主库密码
/etc/init.d/redis_6379 restart
redis-cli -h 10.10.100.110
info replication //查看主从状态
输入命令 slaveof 10.10.100.111 6379
反客为主 (需手动)
主库宕机后,手动将从库设置为主库
redis-cli -h 10.10.100.110
slaveof no one //手动设置为主库
info replication //查看主从配置信息
哨兵模式
哨兵模式
主机宕机后,从库自动升级为主库
在slave主机编辑sentinel.conf 文件
在slave主机运行哨兵程序
vim /etc/sentinel.conf
sentinel monitor redis111 10.10.100.111 6379 1
sentinel auth-pass redis111 123456//是连接主库密码
// 1 是票数:有几台哨兵主机连接不上主库时,切换主库
// 6379 端口
// redis111 是自定义的
redis-sentinel /etc/sentinel.conf
持久化之RDB
R