• redis集群三主三从创建



    一、安装Redis

    1. 安装C/C++环境

    Redis编译时需要使用C/C++环境:
    yum install -y gcc gcc-c++ make

    2. redis下载

    wget https://download.redis.io/releases/redis-5.0.13.tar.gz

    3. 解压、编译

    tar -zxvf redis-5.0.13.tar.gz
    cd redis-5.0.13
    make
    注意
    如果make报【 jemalloc/jemalloc.h: No such file or directory。】错误
    执行make distclean && make来清理上次编译残留文件,重新编译
    导致出现这个错误的原因
      错误的本质是我们在开始执行make 时遇到了错误(大部分是由于gcc未安装),然后我们安装好了gcc 后,
    我们再执行make ,这时就出现了jemalloc/jemalloc.h: No such file or directory。这是因为上次的编译失败,有残留的文件,我们需要清理下,然后重新编译就可以了。

    4. 创建Redis相关工作目录(目录可自定义)

    mkdir /data/redis/redis-cluster/{data/{redis_8001,redis_8002},conf,log} -p

    5. 复制redis配置文件

    cp /data/redis/redis-5.0.13/redis.conf /data/redis/redis-cluster/conf/redis_8001.conf
    cp /data/redis/redis-5.0.13/redis.conf /data/redis/redis-cluster/conf/redis_8002.conf

    二、修改Redis配置文件

    port 8001             
    	#修改redis监听端口(可以自定义) 8001与端口号同步
    	bind 0.0.0.0            
    	#表示redis允许所有地址连接。默认127.0.0.1,仅允许本地连接。
    	daemonize yes             
    	#允许redis后台运行
    	pidfile /var/run/redis_8001.pid     
    	#pid存放目录 8001与端口号同步
    	logfile "/data/redis/redis-cluster/log/redis_8001.log"   
    	#设置日志存放路径 8001与端口号同步
    	dir /data/redis/redis-cluster/data/redis_8001  
    	#工作目录 8001与端口号同步
    	cluster-enabled yes     
    	#是否开启集群
    	cluster-config-file /data/redis/redis-cluster/conf/nodes_8001.conf
    	#集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息  8001与端口号同步
    	#这个文件并不需要手动配置,这个配置文件有Redis生成并更新, 
    	cluster-node-timeout 15000
    	#节点互连超时的阀值。集群节点超时毫秒数,默认15秒
    	appendonly yes
    	#Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件, 
    	#每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。
    	appendfsync everysec
    	#Redis会把每次写入的数据在接收后每秒写入一次 appendonly.aof 文件
    	requirepass 123456    
    	#设置redis密码
    	masterauth 123456    
    	#主从同步master的密码(如果没有设置redis密码,则无需配置)
    

    注意:

    	redis启用密码认证一定要requirepass和masterauth同时设置。如果主节点设置了requirepass登录验证,在主从切换,slave在和master做数据同步的时候首先需要发送一个ping的消息给主节点判断主节点是否存活,再监听主节点的端口是否联通,发送数据同步等都会用到master的登录密码,否则无法登录,log会出现响应的报错。也就是说slave的masterauth和master的requirepass是对应的,所以建议redis启用密码时将各个节点的masterauth和requirepass设置为相同的密码,降低运维成本。当然设置为不同也是可以的,注意slave节点masterauth和master节点requirepass的对应关系即可
    

    三、启动Redis

    集群内每台服务器分别启动两个redis

    cd /data/redis/redis-5.0.13/src/
    ./redis-server /data/redis/redis-cluster/conf/redis_8001.conf
    ./redis-server /data/redis/redis-cluster/conf/redis_8002.conf
    

    四、创建Redis Cluster

    ./redis-cli -a  {redis密码} --cluster create {redis集群地址} --cluster-replicas 1
    

    执行如上命令后,会弹出下边提示,输入yes回车即可:

    Can I set the above configuration? (type ‘yes’ to accept):

    注意:

    redis5.0以上集群创建方式改为了C编写的redis-cli创建,不用再安装麻烦的ruby。–cluster-replicas 1指定从库数量1,创建顺序三主-三从。即主-主-主-从-从-从。多个redis之间用空格隔开

    五、验证集群Redis-Cluster

    1.登录redis集群

    ./redis-cli -a {redis密码} -h {redis地址} -p {redsi端口} -c

    2.验证集群信息

    {redis地址}:{redis端口}>cluster info #查看集群信息
    {redis地址}:{redis端口}>cluster nodes #查看集群节点列表

    3.查看集群内主从关系

    ./redis-cli -a {redis密码} -h {redis地址} -p {redsi端口} -c cluster slots | xargs -n8 | awk ‘{print $3":"$4"->"$6":"$7}’ | sort -nk2 -t ‘:’ | uniq

    4.数据验证

    插入数据:
    {redis地址}:{redis端口}> set mykey "Hello Redis"
    {redis地址}:{redis端口}> get mykey
    登录其他节点查看数据:
    redis-cli -a {redis密码} -h  {redis地址} -p {redsi端口} -c
    {redis地址}:{redis端口}> get mykey
    • 6

    5.集群故障转移

    	将其中一个redis-master停止掉后、其对应
  • 相关阅读:
    ubuntu server编译安装nginx
    XPath具体解释
    windows下安装,配置gcc编译器
    给字符数组赋值的方法
    开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]
    MiinCMP1.0 SAE 新浪云版公布, 开源企业站点系统
    Mac下cocos2dx-3.0打包Android时,提示"SimpleAudioEngine.h"not found的解决方法
    GG同步到sqlserver报错一例 Invalid date format
    分布式文件系统
    动画clip仅仅读的解决的方法,以及动画关键帧回调的办法
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/15777915.html
Copyright © 2020-2023  润新知