初学乍练redis:一键部署集群
目录
3. 将create_redis_cluster.sh改为可执行
一、需求
三台128G内存的物理机,目标为在其上构建多套一主两从的redis集群。要求根据业务需要,能够快速创建新集群。三台服务器IP如下:
[code]103.244.233.166(master) 103.244.233.167(slave) 103.244.233.168(slave)
二、安装redis
以下操作步骤均在三台机器上执行。
1. 安装gcc
[code]yum install gcc
2. 建redis用户
[code]useradd redis su - redis
3. 解压并编译
[code]tar -zxvf redis-3.2.3.tar.gz cd redis-3.2.3/src/ && make
4. 限制redis用户登录
编辑/etc/passwd文件,将redis用户的登录shell改为/sbin/nologin:
[code]redis:x:8002:8002::/home/redis:/sbin/nologin
三、建立配置文件模板
1. master模板
在103.244.233.166上创建/home/redis/redis.conf.templet文件,内容如下:
[code]rename-command flushAll "" daemonize yes port 20001 dir "/home/redis/redisdata1" pidfile "/home/redis/redisdata1/redis.pid" logfile "/home/redis/redisdata1/redis.log" dbfilename "dump.rdb" save 900 1 appendonly no appendfilename "appendonly.aof" appendfsync always maxmemory 8gb maxmemory-policy volatile-lru maxmemory-samples 3 slowlog-log-slower-than 10000 repl-backlog-size 64mb timeout 0 repl-timeout 240 requirepass "123456" masterauth "123456" protected-mode no
2. slave模板
在103.244.233.167、103.244.233.168上创建/home/redis/redis.conf.templet文件,内容如下:
[code]rename-command flushAll "" daemonize yes port 20001 dir "/home/redis/redisdata1" pidfile "/home/redis/redisdata1/redis.pid" logfile "/home/redis/redisdata1/redis.log" dbfilename "dump.rdb" save 900 1 appendonly no appendfilename "appendonly.aof" appendfsync always maxmemory 8gb maxmemory-policy volatile-lru maxmemory-samples 3 slowlog-log-slower-than 10000 repl-backlog-size 64mb timeout 0 repl-timeout 240 requirepass "123456" masterauth "123456" protected-mode no slaveof 103.244.233.166 20001
slave的模板文件比master的模板文件只是多了最后一行。
3. 哨兵模板
在全部三台机器上创建/home/redis/sentinel.conf.templet文件,内容如下:
[code]port 20002 protected-mode no sentinel monitor redis1 103.244.233.166 20001 2 dir "/home/redis/redisdata1" sentinel auth-pass redis1 123456 sentinel down-after-milliseconds redis1 5000 sentinel failover-timeout redis1 10000
说明:
- 一个集群最少需要三个单实例的redis和三个哨兵实例。
- 第1个集群名称为redis1,第2、3...个集群的集群名称依次为redis2、redis3... 。
- 第1个集群的数据目录为/home/redis/redisdata1,第2、3...个集群的数据目录依次为/home/redis/redisdata2、/home/redis/redisdata3... 。
- 第1个集群redis服务器端口为20001,哨兵端口为20002;第2、3...个集群的redis服务器端口及哨兵端口依次为20003、20004,20005、20006... ,第n个集群的redis服务器端口和哨兵端口分别为20000 + 2*n - 1、20000 + 2*n。
- 需要提供开发人员的信息是:集群名称、口令和三个哨兵实例的IP、端口。
四、编写创建集群的shell脚本
1. master
在103.244.233.166上创建/root/create_redis_cluster.sh文件,内容如下:
[code]#!/bin/bash maxdir=`ls -l /home/redis | grep "redisdata" | awk '{print $9}' | sort -k1.10n | tail -n1` maxnum=`expr ${maxdir:9} + 1` datadir='/home/redis/redisdata'${maxnum} clustername='redis'${maxnum} redis_port=$((20000+maxnum*2-1)) sentinel_port=$((20000+maxnum*2)) mkdir ${datadir} cp /home/redis/redis.conf.templet ${datadir}/redis.conf cp /home/redis/sentinel.conf.templet ${datadir}/sentinel.conf sed -i "s/20001/$redis_port/g" ${datadir}/redis.conf sed -i "s/redisdata1/redisdata$maxnum/g" ${datadir}/redis.conf sed -i "s/20002/$sentinel_port/g" ${datadir}/sentinel.conf sed -i "s/20001/$redis_port/g" ${datadir}/sentinel.conf sed -i "s/redis1/$clustername/g" ${datadir}/sentinel.conf sed -i "s/redisdata1/redisdata$maxnum/g" ${datadir}/sentinel.conf chown -R redis:redis ${datadir} chmod 775 ${datadir} chmod 664 ${datadir}/* sudo -u redis /home/redis/redis-3.2.3/src/redis-server ${datadir}/redis.conf sudo -u redis /home/redis/redis-3.2.3/src/redis-sentinel ${datadir}/sentinel.conf > ${datadir}/sentinel.log 2>&1 & ssh root@103.244.233.167 /root/create_redis_cluster.sh ssh root@103.244.233.168 /root/create_redis_cluster.sh info="集群名称:${clustername} |哨兵:103.244.233.166 ${sentinel_port}, 103.244.233.167 ${sentinel_port}, 103.244.233.168 ${sentinel_port} |口令:123456" echo ${info} | sed 's/|/\n /g'
2. slave
在103.244.233.167、103.244.233.168上创建/root/create_redis_cluster.sh文件,内容如下:
[code]maxdir=`ls -l /home/redis | grep "redisdata" | awk '{print $9}' | sort -k1.10n | tail -n1` maxnum=`expr ${maxdir:9} + 1` datadir='/home/redis/redisdata'${maxnum} clustername='redis'${maxnum} redis_port=$((20000+maxnum*2-1)) sentinel_port=$((20000+maxnum*2)) mkdir ${datadir} cp /home/redis/redis.conf.templet ${datadir}/redis.conf cp /home/redis/sentinel.conf.templet ${datadir}/sentinel.conf sed -i "s/20001/$redis_port/g" ${datadir}/redis.conf sed -i "s/redisdata1/redisdata$maxnum/g" ${datadir}/redis.conf sed -i "s/20002/$sentinel_port/g" ${datadir}/sentinel.conf sed -i "s/20001/$redis_port/g" ${datadir}/sentinel.conf sed -i "s/redis1/$clustername/g" ${datadir}/sentinel.conf sed -i "s/redisdata1/redisdata$maxnum/g" ${datadir}/sentinel.conf chown -R redis:redis ${datadir} chmod 775 ${datadir} chmod 664 ${datadir}/* sudo -u redis /home/redis/redis-3.2.3/src/redis-server ${datadir}/redis.conf sudo -u redis /home/redis/redis-3.2.3/src/redis-sentinel ${datadir}/sentinel.conf > ${datadir}/sentinel.log 2>&1 &
五、其它准备
1. 配置SSH登录无密码验证
在103.244.233.166(master)上用root用户执行:
[code]ssh-keygen -t rsa ssh-copy-id -i /root/.ssh/id_rsa.pub root@103.244.233.167 ssh-copy-id -i /root/.ssh/id_rsa.pub root@103.244.233.168
2. 禁用requiretty
编辑/etc/sudoers文件,注释以下行,三台都执行:
[code]# Defaults requiretty
3. 将create_redis_cluster.sh改为可执行
[code]chmod 755 /root/create_redis_cluster.sh
三台都执行。
至此所有配置已经完成。每次执行103.244.233.166上的/root/create_redis_cluster.sh文件,就会自动创建一个新的redis集群,一键式秒建。
- 第5周 Redis部署,高可用与分布式集群部署
- Redis集群部署及性能测试
- REDIS数据备份集群部署和双集群同步工具redis-migrate-tool
- redis多机集群部署文档
- redis主从集群搭建及容灾部署(哨兵sentinel)
- Redis3.2+Tomcat实现集群的Session管理 -- tomcat-redis-session-manager的编译和开发部署环境搭建
- Redis实践(二)高可用的集群+哨兵部署
- Redis集群配置和部署 spring整合redisCluster
- Redis 集群部署
- 一键部署redis和nutcracker程序
- 使用Docker Compose部署基于Sentinel的高可用Redis集群
- Redis集群(2)-部署集群
- 使用Helm 在容器服务k8s集群一键部署wordpress
- Redis集群的搭建(redis安装,环境部署,创建,管理,添加,移除,修复)
- redis部署(3台集群)自动安装
- redis3集群部署
- CentOS 7.3 Sentinel实现Redis集群高可用部署
- Redis集群部署
- 单机部署redis5.0集群环境
- Redis单机版和集群版的安装和部署