centos7安装redis4集群服务-程序员宅基地

技术标签: 运维  数据库  ruby  

基于centos7.

前置下载

安装GCC和wget

yum install wget
yum -y install gcc automake autoconf libtool make

安装ruby(如果做集群,redis-trib.rb 要求必须2.2以上)

在Centos7.3中,通过yum安装ruby的版本是2.0.0,但是如果有些应用需要高版本的ruby环境,比如2.2,2.3,2.4...在Centos7.3中,通过yum安装ruby的版本是2.0.0,但是如果有些应用需要高版本的ruby环境,比如2.2,2.3,2.4...

方法一:换yum源安装

#会在/etc/yum.repos.d/目录下多出一个CentOS-SCLo-scl-rh.repo源
yum install centos-release-scl-rh
#直接yum安装即可
yum install rh-ruby23  -y 
#必要一步
scl  enable  rh-ruby23 bash
#查看安装版本
ruby -v    

下载redis

$ wget http://download.redis.io/releases/redis-4.0.9.tar.gz
$ tar xzf redis-4.0.9.tar.gz
$ cd redis-4.0.9
$ mv redis-4.0.9 /opt/redis
# 如果未安装gcc编译失败则需要执行下面这个命令
$ make distclean
$ make

运行单机redis

现在编译的二进制文件在src 目录中可用 。运行Redis:

$ src/redis-server
# 或者指定
$ /opt/redis/src/redis-server /opt/redis/redis.conf

您可以使用内置客户端与Redis进行交互:

$ src/redis-cli or $redis-cli -h 192.168.42.151
redis> set foo bar
OK
redis> get foo
"bar"

注意 redis.conf的相关配置:

#端口7000,7001,7002
port 7000

#默认ip为127.0.0.1,需要改为其他节点机器可访问的ip,否则创建集群时无法访问对应的端口,无法创建集群
bind 192.168.252.101

#redis后台运行
daemonize yes

#pidfile文件对应7000,7001,7002
pidfile /var/run/redis_7000.pid

#开启集群,把注释#去掉
cluster-enabled yes

#集群的配置,配置文件首次启动自动生成 7000,7001,7002          
cluster-config-file nodes_7000.conf

#请求超时,默认15秒,可自行设置 
cluster-node-timeout 10100    

#aof日志开启,有需要就开启,它会每次写操作都记录一条日志
appendonly yes

将redis安装为服务

  1. 进入到redis安装目录,具体位置看你安装时的路径了。
cd /usr/local/redis/
  1. 编辑配置文件
sudo vim ./redis.conf
  1. 将如下配置项注释掉
#bind 127.0.0.1
  1. 如下项修改为yes,默认是no
daemonize yes
  1. 修改pid文件路径,此处可选,使用默认路径也可以。
pidfile /usr/local/redis/redis.pid
  1. 取消保护模式,此处可选。取消了便不要求使用密码验证了。
protected-mode no
  1. 配置日志文件路径
logfile "/usr/local/redis/logs/redis.log"
  1. 保存文件。

  2. 新建文件

sudo vim /usr/lib/systemd/system/redis.service
  1. 写入如下内容,具体文件路径,各异。
[Unit]
Description=Redis
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/redis/redis.pid
ExecStart=/usr/local/redis/src/redis-server /usr/local/redis/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID 
ExecStop=/bin/kill -s QUIT $MAINPID 
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  1. 重载系统服务
sudo systemctl daemon-reload
  1. 启动redis
sudo systemctl start redis

redis集群

虽然一主一从加哨兵可以解决普通场景下服务可用的问题,但是两个节点分别存储所有的缓存数据,这不仅导致容量受限,更是让我们受限于机器配置最差的那一台,这就是木桶效应。硬件垂直扩容并不能解决日益庞大的缓存数据量和提供能搞得可用性。

在古老的Redis版本中,水平扩容的能力来自于发送命令的客户端,由客户端路由不同的key给到不同的节点,下次读取的时候,也按照相同方式路由key到指定节点拿到数据。如果接下来还希望增加扩容节点的话,就要对历史缓存数据做迁移,迁移过程中为保证数据一致性也要付出一定代价。为了解决节点的不断扩容,设计初期可以预先设置很多节点,以备日后使用,所有设计的节点都参与到分片当中,鉴于初期数据较少,可单台服务器多个节点,在日后数据增多的情况下,只需要迁移节点到新的服务器。而不需要对数据进行重新分配等操作。但是这种做法依然让我们觉得难维护,难迁移,难应对故障,迁移过程中也很难保证数据一致性,比如50个节点,任意一个节点想要停止并迁移服务器,都会引发数据不一致或者出现故障,只能停止集群,等待迁移完成后,集群上线。

Redis3.0提供了Cluster集群。这个集群的概念和前面提到的集群有所不同。前面的集群仅代表,多个节点间没有相互的关系,只是根据客户端路由分配key到不同的节点,所有节点共同分配所有数据。3.0的Cluster功能,拥有和单机实例相同的性能,几乎支持所有命令,对于涉及多个键的命令,比如MGET,如果每一个键都在同一个节点则可以正常返回数据,否则提示错误。另外集群中限制了0号数据库,如果切换数据库则会提示错误。

哨兵和集群是两个独立的功能,但从特性来看哨兵可以视为集群的子集。当不需要数据分片或者已经利用客户端分片的场景下哨兵已经足够使用,如果需要水平扩容,Cluster是非常好的选择。

每个集群至少三台主节点。

/opt/redis/src/redis-trib.rb create --replicas 1 10.1.2.75:6379 10.1.2.81:6379 10.1.2.82:6379 10.1.2.75:7379 10.1.2.75:8379 10.1.2.81:7379

CentOs7.3搭建Redis-4.0.1 Cluster集群服务

转载于:https://my.oschina.net/zhaoqian/blog/1793063

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33970449/article/details/92034794

智能推荐

Hadoop分布式文件系统(HDFS)快速入门_hadoop中fa-程序员宅基地

文章浏览阅读3.2k次,点赞5次,收藏29次。推荐书目电子版下载HDFS知识梳理详细版HDFS快速入门应用背景简介基本原理优点缺点设计概念读写流程文件写入文件读取命令行接口Hadoop分布式文件系统命令行接口详细版具体说明Java接口连接Hadoop集群Hadoop分布式文件系统Java接口详细版简介文件系统HDFS文件系统详细版简介接口_hadoop中fa

HTML轮播图修改圆点为长方形,JQuery和html+css实现带小圆点和左右按钮的轮播图-程序员宅基地

文章浏览阅读507次。是的!你没看错!还是轮播图。这次的JQuery的哟!!CSS代码:/*轮播图 左右按钮 小白点*/#second_div{margin-top: 160px;}.img_box{overflow: hidden;width:100%;height:420px;border:1px solid;position:relative;}.img_box img{width:100%;position:a..._mint-ui中改变圆点为长方形

pip下载第三方库时出现错误_pip下载error latex2mathml-3.76.0-py3-none-any.whl.me-程序员宅基地

文章浏览阅读1.1k次。错误显示:error:exception Traceback (most recent call last):File "c:\program files\python36\lib\site-packages\pip\response.py", line 215, in 。。。。然后上网查询资料,最后发现输入这个问题就解决了!py -3 -m pipinstallPill..._pip下载error latex2mathml-3.76.0-py3-none-any.whl.metadata

linux centos7安装redis_linux7安装redis客户端-程序员宅基地

文章浏览阅读312次。linux安装redis_linux7安装redis客户端

动态规划入门感悟_动态规划的基本思想及感悟-程序员宅基地

文章浏览阅读357次,点赞2次,收藏3次。不会动态规划的可以看看我博客里动态规划入门一文哦http://blog.csdn.net/qq_39670434/article/details/77414362在这里为了帮助萌新们学习动态规划,调用几篇大佬的好文章http://blog.csdn.net/baidu_28312631/article/details/47418773http://blog.csdn.net_动态规划的基本思想及感悟

单片机上电不断重启复位_stc8f单片机勾选低压复位单片机不断复位怎么解决-程序员宅基地

文章浏览阅读7.7k次,点赞4次,收藏15次。单片机不断重启复位的原因主要是一个原因;就是单片机在不断复位造成复位的原因有几个;1、单片机硬件复位,这个要检查硬件电路中的复位电路是不是有错误2、单片机程序中有代码造成软件复位3、单片机在不断上电断电循环过程造成不断复位主要讲一下第三种情况,这种情况的主要原因的因为外部电源供电不足导致单片机不断复位。你先检查一下自己的电路中是否有很多需要供电的模块,比如电机,制冷发热类的模块等等需要..._stc8f单片机勾选低压复位单片机不断复位怎么解决

随便推点

dns服务器异常不能上网怎么修复,DNS错误无法正常上网怎么办?-程序员宅基地

文章浏览阅读3.6w次,点赞3次,收藏12次。DNS错误无法正常上网怎么办?我们在上网的时候有时可能会出现“dns错误”的提示,出现这个情况的时候会导致我们无法正常上网,那么,“dns错误”是什么意思呢?意思是说当我们访问一个域名的时候无法将它解析到ip地址的工作,但是当你直接输入网站ip时却可以正常访问,那么这个时候就是因为dns解析出现了故障而在造成的。该怎么解决这个问题?下面IT技术资料分享网小编就给大家分享如何解决DNS错误导致无法正..._dns错误怎么办无法上网

Oracle10g安装步骤(二)_oracle10g安装步骤二-程序员宅基地

文章浏览阅读432次。接上篇:至此,安装完成!检验:1、安装完成后会自动弹出下图页面用户可以输入用户名“system”,密码为安装时所设密码,连接身份默认即可。如果登录成功,则表示安装成功!2、另外,也可以在开始/运行/sqlplus,弹出命令窗体中输入用户名为“scott”,口令为设置的“scott”密码。如果登录成功,则显示下方结果..._oracle10g安装步骤二

Get Host Name in Oracle & SYS_CONTEXT('USERENV', xxx)-程序员宅基地

文章浏览阅读123次。Oracle提供了好些方法来获取连接数据库的客户端机器名和数据库所在的机器名,最常见的是从视图v$instance和v$session中获得,如下....V$INSTANCEv$instance中的host_name显示的是数据库服务器所在的机器名...SQL> select host_name from v$instance;HOST_NAME----------------..._sys_context('userenv','server_host')

【arcpy项目实战】将两两生成的最短路径pyhon代码封装入script中,作为arcgis的工具直接调用_arcpy rastertopolyline-程序员宅基地

文章浏览阅读1k次。【需求】之前的两两点相连接的最短路径为单纯的pyhon代码,用户需要修改文件路径才能正常使用,为了给用户提供更多的方便,我将pyhon代码封装到arcgis的工具中,通过接受用户输入文件,实现可视的文件生成。【分析】需要对代码进行封装,首先要需要用户选择输入的元素,程序运行的方法等,下面即为具体的分析。 接下来,讲一下这个封装过程。封装即为建立script tool工具来实现复杂的gp..._arcpy rastertopolyline

springmvc String 转 Date_stringtodatecover-程序员宅基地

文章浏览阅读719次。1 编写converterimport org.springframework.core.convert.converter.Converter;import java.text.SimpleDateFormat;import java.util.Date;public class StringToDateConverter implements Converter<Stri..._stringtodatecover

为什么需要SOME/IP协议_为什么要编译some/ip库-程序员宅基地

文章浏览阅读4.6k次。为什么需要SOME/IP协议The basic motivation to specify “yet another Client/Server and Sender/Receiver mechanism“ instead of using an existing infrastructure/technology is the goal to have a technology that:规..._为什么要编译some/ip库

推荐文章

热门文章

相关标签