Redis集群部署

一、概述

    Redis3.0版本之后支持Cluster.

二、redis cluster安装

    1、下载和解包

cd /usr/local/
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar -zxvf redis-5.0.5.tar.gz
 

 2、 编译安装

 cd redis-5.0.5
 make && make install

  3、创建redis节点

     测试我们选择2台服务器,分别为:192.168.1.237,192.168.1.238.每分服务器有3个节点。

  我先在192.168.1.237创建3个节点:

复制代码
cd /usr/local/
mkdir redis_cluster  //创建集群目录

cd /usr/local/redis_cluster
mkdir 7000 7001 7002 //分别代表三个节点 其对应端口 7000 7001 7002
//创建7000节点为例,拷贝到7000目录 cp /usr/local/redis-5.0.5/redis.conf ./redis_cluster/7000/ //拷贝到7001目录 cp /usr/local/redis-5.0.5/redis.conf ./redis_cluster/7001/ //拷贝到7002目录 cp /usr/local/redis-5.0.5/redis.conf ./redis_cluster/7002/
复制代码

   分别对7001,7002、7003文件夹中的3个文件修改对应的配置

复制代码
bind  ...//机器ip地址
port 7000 //端口7000,7002,7003

daemonize yes //redis后台运行 pidfile /var/run/redis_7000.pid //pidfile文件对应 不同端口,改名 7002,7003
logfile "/usr/local/redis_cluster/7000/redis.log" //日志文件位置----------并非官方文档必填 appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志 cluster-enabled yes //开启集群 把注释#去掉 cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002 cluster-node-timeout 5000 //请求超时 设置5秒够了
复制代码

   在192.168.1.238创建3个节点:对应的端口改为7003,7004,7005.配置对应的改一下就可以了。

   4、两台机启动各节点(两台服务器方式一样)

cd /usr/local
redis-server  redis_cluster/7000/redis.conf
redis-server  redis_cluster/7001/redis.conf
redis-server  redis_cluster/7002/redis.conf
redis-server  redis_cluster/7003/redis.conf
redis-server  redis_cluster/7004/redis.conf
redis-server  redis_cluster/7005/redis.conf

-bash: redis-server: command not found:

  ln -s /usr/local/redis-5.0.5/src/redis-server /usr/bin/redis-server

重启命令:

  /usr/local/redis-5.0.5/src/redis-cli -c -h 127.0.0.1  -p 7002 shutdown

5、查看服务

      ps -ef | grep redis   #查看是否启动成功

     netstat -tnlp | grep redis #可以看到redis监听端口、

  top -p 1410    #查看对应线程的资源占用

三、创建集群(redis5以前的版本集群是依靠ruby脚本redis-trib.rb实现)

 注意防火墙,可以相互访问

redis-5.0.5/src/redis-cli --cluster create --cluster-replicas 1 172.10.0.121:7000 172.10.0.121:7001 172.10.0.121:7002 172.10.0.123:7003 172.10.0.123:7004 172.10.0.123:7005

 

解释下, --replicas  1  表示 自动为每一个master节点分配一个slave节点    上面有6个节点,程序会按照一定规则生成 3个master(主)3个slave(从)

    前面已经提醒过的 防火墙一定要开放监听的端口,否则会创建失败。

 运行中,提示Can I set the above configuration? (type 'yes' to accept): yes    //输入yes

 接下来 提示  Waiting for the cluster to join..........  安装的时候在这里就一直等等等,没反应,傻傻等半天,看这句提示上面一句,Sending Cluster Meet Message to join the Cluster.

    这下明白了,我刚开始在一台Server上去配,也是不需要等的,这里还需要跑到Server2上做一些这样的操作。

    在127.0.0.1, redis-cli -c -p 700*  分别进入redis各节点的客户端命令窗口, 依次输入 cluster meet 192.168.1.238 7000……

    回到Server1,已经创建完毕了。

    查看一下 /usr/local/redis/src/redis-cli check 127.0.0.1:7000

    到这里集群已经初步搭建好了。

含密码时 --注意这里一般是创建成功后,使用命令设置密码

redis-5.0.5/src/redis-cli --cluster create  10.30.99.53:7000 10.30.99.53:7001 10.30.99.54:7002 10.30.99.54:7003 10.30.99.55:7004 10.30.99.55:7005  --cluster-replicas 1 -a univalsoft

 

四、测试

1)连接任意一个客户端即可:
 
/usr/local/redis-5.0.2/src/redis-cli -a xxx -c -h 192.168.5.100 -p 8001
 
提示:-a访问服务端密码,-c表示集群模式,指定ip地址和端口号   ./redis-cli -c -a xxx -h 192.168.5.100 -p 8001

如:

redis-5.0.5/src/redis-cli -a univalsoft -c -h 10.30.99.53 -p 7000
redis-5.0.5/src/redis-cli -a univalsoft -c -h 10.30.99.54 -p 7002

 

 

2)进行验证: cluster info(查看集群信息)、cluster nodes(查看节点列表)
或:
redis-5.0.5/src/redis-cli -a univalsoft -c -h 10.30.99.53 -p 7000 cluster info

 

 

/usr/local/redis/src/redis-cli -a xxx -c -h 192.168.0.60 -p 8001 shutdown

 

5)查看集群信息

 

redis-5.0.5/src/redis-cli -a univalsoft -c -h 10.30.99.53 -p 7000 cluster nodes

 

6)Linux 缓存数据丢失问题, 在Linux系统设置一个参数(vm.overcommit_memory)即可解决。

步骤如下:

1、编辑 sysctl.conf 配置文件

  1. vi /etc/sysctl.conf  

 

2、另起一行增加参数 vm.overcommit_memory 配置,如下

  1. vm.overcommit_memory = 1  

 

3、使配置文件生效

  1. sysctl -p   

 

到这里已经结束,在Redis增加些数据,再重启Linux系统查看数据有没有丢失。

 

10)redis开机自启(测试实例可以启动,但是集群失败,再执行创建语句后成功)

vi /etc/init.d/redis

复制代码
#!/bin/sh
# chkconfig: 2345 80 90
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
​
REDISPORT1=7001
REDISPORT2=7002

EXEC=/usr/local/redis-5.0.5/src/redis-server
CLIEXEC=/usr/local/redis-5.0.5/src/redis-cli
​
PIDFILE=/var/run/redis_${REDISPORT1}.pid
​
CONF1="/usr/local/redis_cluster/${REDISPORT1}/redis.conf"
CONF2="/usr/local/redis_cluster/${REDISPORT2}/redis.conf"case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis cluster server..."
                $EXEC $CONF1 &
                $EXEC $CONF2 &

                echo "启动成功..."
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT1 shutdown
                $CLIEXEC -p $REDISPORT2 shutdown

                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis cluster to shutdown ..."
                    sleep 1
                done
                echo "Redis cluster stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac
复制代码


保存退出,添加执行权限

chmod +x /etc/init.d/redis

加入开机启动服务

chkconfig --add redis

 

posted @   leolzi  阅读(208)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示