Redis单机和集群环境搭建
一、安装单机版redis
1、可以自己去官网下载,当然也可以用课程提供的压缩包
# yum install gcc # wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz # tar -xzvf tcl8.6.1-src.tar.gz # cd /usr/local/tcl8.6.1/unix/ # ./configure # make && make install
2、使用redis-3.2.8.tar.gz(稳定版)
# tar -zxvf redis-3.2.8.tar.gz # cd /usr/local/redis-3.2.8 # make # make test # make install
3、redis的生产环境启动方案
(1)redis utils目录下,有个redis_init_script脚本
(2)将redis_init_script脚本拷贝到linux的/etc/init.d目录中,将redis_init_script重命名为redis_6379,6379是我们希望这个redis实例监听的端口号
(3)修改redis_6379脚本的第6行的REDISPORT,设置为相同的端口号(默认就是6379)
(4)创建两个目录:/etc/redis(存放redis的配置文件),/var/redis/6379(存放redis的持久化文件)
(5)修改redis配置文件(默认在根目录下,redis.conf),拷贝到/etc/redis目录中,修改名称为6379.conf
(6)修改redis.conf中的部分配置为生产环境
daemonize yes #让redis以daemon进程运行 pidfile /var/run/redis_6379.pid #设置redis的pid文件位置 port 6379 #设置redis的监听端口号 dir /var/redis/6379 #设置持久化文件的存储位置
(7)启动redis,执行cd /etc/init.d, chmod 777 redis_6379,./redis_6379 start
(8)确认redis进程是否启动,ps -ef | grep redis
(9)让redis跟随系统启动自动启动
在redis_6379.config脚本中,最上面,加入两行注释
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
chkconfig redis_6379 on
4、redis cli的使用
redis-cli SHUTDOWN #连接本机的6379端口停止redis进程 redis-cli -h 127.0.0.1 -p 6379 SHUTDOWN #制定要连接的ip和端口号 redis-cli PING #ping redis的端口,看是否正常 redis-cli #进入交互式命令行SET k1 v1 GET k1
二、Redis集群(读写分离+高可用+多master)
1、redis cluster的重要配置
cluster-enabled <yes/no>
cluster-config-file <filename>:这是指定一个文件,供cluster模式下的redis实例将集群状态保存在那里,包括集群中其他机器的信息,比如节点的上线和下限,故障转移,不是我们去维护的,给它指定一个文件,让redis自己去维护的
cluster-node-timeout <milliseconds>:节点存活超时时长,超过一定时长,认为节点宕机,master宕机的话就会触发主备切换,slave宕机就不会提供服务
2、在三台机器上启动6个redis实例
(1)在eshop-cache03上部署目录
/etc/redis(存放redis的配置文件);
/var/redis/6379(存放redis的持久化文件)
(2)编写配置文件
redis cluster集群,要求至少3个master,去组成一个高可用,健壮的分布式的集群,每个master都建议至少给一个slave,3个master,3个slave,最少的要求
正式环境下,建议都是说在6台机器上去搭建,至少3台机器
保证,每个master都跟自己的slave不在同一台机器上,如果是6台自然更好,一个master+一个slave就死了
3台机器去搭建6个redis实例的redis cluster
# mkdir -p /etc/redis-cluster # mkdir -p /var/log/redis # mkdir -p /var/redis/7001
.conf配置文件:
port 7001 cluster-enabled yes cluster-config-file /etc/redis-cluster/node-7001.conf cluster-node-timeout 15000 daemonize yes pidfile /var/run/redis_7001.pid dir /var/redis/7001 logfile /var/log/redis/7001.log bind 192.168.31.187 appendonly yes
至少要用3个master节点启动,每个master加一个slave节点,先选择6个节点,启动6个实例
将上面的配置文件,在/etc/redis下放6个,分别为: 7001.conf,7002.conf,7003.conf,7004.conf,7005.conf,7006.conf
(3)准备生产环境的启动脚本
在/etc/init.d下,放6个启动脚本,分别为: redis_7001, redis_7002, redis_7003, redis_7004, redis_7005, redis_7006
每个启动脚本内,都修改对应的端口号
(4)分别在3台机器上,启动6个redis实例
将每个配置文件中的slaveof给删除
3、创建集群
# yum install -y ruby # yum install -y rubygems# gem install redis
3.1、在执行 gem install redis时候,出现
ERROR: Error installing redis:
redis requires Ruby version >= 2.2.2.
这是由于linux本身默认的ruby版本过低
# sudo yum install curl# curl -L get.rvm.io | bash -s stable# source /usr/local/rvm/scripts/rvm# rvm list known# rvm install 2.5.1# rvm use 2.5.1# rvm use 2.5.1 --default
3.2、执行中出现:[curl: (35) SSL connect error
解决方法:升级网络安全服务即可。
# yum update nss # cp /usr/local/redis-3.2.8/src/redis-trib.rb /usr/local/bin # redis-trib.rb create --replicas 1 192.168.51.118:7001 192.168.51.118:7002 192.168.51.119:7003 192.168.51.119:7004 192.168.51.120:7005 192.168.51.120:7006>>> Creating cluster[ERR] Sorry, can't connect to node 192.168.51.119:7003
出现这个error,是由于防火墙导致,此时,关闭防火墙的方法为:
3.3、永久性生效
开启:chkconfig iptables on
关闭:chkconfig iptables off
3.4、 即时生效,重启后失效
开启:service iptables start
关闭:service iptables stop
--replicas: 每个master有几个slave
6台机器,3个master,3个slave,尽量自己让master和slave不在一台机器上
>>> Creating cluster >>> Performing hash slots allocation on 6 nodes... Using 3 masters: 192.168.51.118:7001 192.168.51.119:7003 192.168.51.120:7005 Adding replica 192.168.51.119:7004 to 192.168.51.118:7001 Adding replica 192.168.51.118:7002 to 192.168.51.119:7003 Adding replica 192.168.51.120:7006 to 192.168.51.120:7005 M: c929af23011ce7e6888721845d1d300196c3046f 192.168.51.118:7001slots:0-5460 (5461 slots) master S: 60643541639fa838a23708027dfd8f05084fa0bb 192.168.51.118:7002replicates c330af95e5053ead51943d17b7ede77ff26e357c M: c330af95e5053ead51943d17b7ede77ff26e357c 192.168.51.119:7003slots:5461-10922 (5462 slots) master S: bde24d208a5c42771348bbedb2351f0b7ef9c06a 192.168.51.119:7004replicates c929af23011ce7e6888721845d1d300196c3046f M: 422632826b23edf928d213e980ea0680b1a15ac0 192.168.51.120:7005slots:10923-16383 (5461 slots) master S: 1e242b9cd55bd702dd386ed3d74916ad6fb78a10 192.168.51.120:7006replicates 422632826b23edf928d213e980ea0680b1a15ac0 Can I set the above configuration? (type 'yes' to accept): yes
redis-trib.rb check 192.168.31.187:7001
4、读写分离+高可用+多master
读写分离:每个master都有一个slave
高可用:master宕机,slave自动被切换过去
多master:横向扩容支持更大数据量
转载于:https://www.cnblogs.com/Chi-Sophia/p/9886545.html
Redis单机和集群环境搭建相关推荐
- 2W 字详解 Redis 6.0 集群环境搭建实践
原文链接:https://www.cnblogs.com/hueyxu/p/13884800.html 本文是Redis集群学习的实践总结(基于Redis 6.0+),详细介绍逐步搭建Redis集群环 ...
- Redis集群环境搭建实践
本文是Redis集群学习的实践总结(基于Redis 6.0+),详细介绍逐步搭建Redis集群环境的过程,并完成集群伸缩的实践. Redis集群简介 Redis集群(Redis Cluster) 是R ...
- 2W 字详解 Redis 集群环境搭建实践
点击上方 "终端研发部"关注, 星标或置顶一起成长 本文是Redis集群学习的实践总结(基于Redis 6.0+),详细介绍逐步搭建Redis集群环境的过程,并完成集群伸缩的实践. ...
- redis常用命令及安全Redis集群环境搭建
2019独角兽企业重金招聘Python工程师标准>>> redis 安装 在centos 上很简单 yum install redis 即可完成redis的安装 安装redis cd ...
- 学习笔记之-Kubernetes(K8S)介绍,集群环境搭建,Pod详解,Pod控制器详解,Service详解,数据存储,安全认证,DashBoard
笔记来源于观看黑马程序员Kubernetes(K8S)教程 第一章 kubernetes介绍 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署 ...
- Nginx+Tomcat集群环境搭建
Tomcat集群能带来什么? 提高服务的性能.并发能力.以及高可用性 提高项目架构的横向扩展能力 提高服务的性能 实际公司线上生产环境都会选择一台机器部署一个tomcat,多台机器完成集群,毕竟一台机 ...
- 『高级篇』docker之DockerSwarm的集群环境搭建(28)
原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『高级篇』docker之DockerSwarm的集群环境搭建(28) 上次了解了docker Swarm,这次一起动手操作,搭 ...
- 大数据介绍、集群环境搭建、Hadoop介绍、HDFS入门介绍
大数据介绍.集群环境搭建.Hadoop介绍.HDFS入门介绍 文章目录 大数据介绍.集群环境搭建.Hadoop介绍.HDFS入门介绍 1.课前资料 2.课程整体介绍 3.大数据介绍 3.1 什么是大数 ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(九)安装kafka_2.11-1.1.0
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
最新文章
- OpenCV 【二十】给图像添加边界
- OpenCV安装 问题总结以及相关注意事项
- Asp.net团队疯了(同时发布WebMatrix, Razor, MVC3和Orchard)
- PreparedStatement和CallableStatement都可以调用存储过程
- 该功能仅支持Android5.0,Android 5.0 android:elevation适用于View,但不适用于Button?
- 大手笔,送¥1599的Apple AirPods Pro和独家礼物等
- 嵌入式系统——专业英语
- [备忘]windows下安装PHP环境php.ini-recommended 跟php.ini-dist 的差别之处
- linux内存映射(一)
- 单片机继电器控制实验程序C语言,继电器控制实验
- 火山PC自绘高级表格及超级列表框
- python进行对应分析_对应分析
- 前端之文本、长度、颜色、字体、背景-36
- 如何查看公众帐号粉丝的微信号
- Java生态浩如烟海
- Fitbit融资7.3亿美元上市了 成可穿戴设备第一股
- 手机端判断用户代理,浏览器版本,内核信息等
- SNG mini项目总结
- Java如何让线程池满后再放队列
- 常见的web服务器软件
热门文章
- Docker---Run命令
- 【Transformer】Deformable DETR: deformable transformers for end-to-end object detection
- Linux minicom串口通讯
- 谈谈 Android 中的 PathClassLoader 和 DexClassLoader
- 针对以下需求提供一个解决方案:在卡牛-信用卡管家APP里面,我们的用户需要一个寻找 附近银行网点/ATM 的功能
- 支付宝2017年个人账单明天发布,你小心脏准备好了吗?
- Apache Nuvem将带来更多的开源云?
- 一种User Mode下访问物理内存及Kernel Space的简单实现
- python删除字符串_Python3 - 删除字符串中不需要的字符
- python做abaqus后处理_python进行abaqus后处理的二次开发,我想提取odb文件中的nodeSet,结果总提示Keyerror,请各位大神指教。...