## Redis cluster 部署
#1.安装依赖;
yum -y install wget vim telnet
yum groupinstall 'Development Tools'
#2.安装tcl
cd /root/
wget https://udomain.dl.sourceforge.net/project/tcl/Tcl/8.6.10/tcl8610-src.zip
unzip tcl8610-src.zip
cd tcl8.6.10/unix/ && make && make install
#3.安装redis
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
cd /root/redis-5.0.7 && make MALLOC=libc && make install PREFIX=/usr/local/redis-5.0.7
#4.环境配置
cd /usr/local/
ln -sf redis-5.0.7 redis-cluster
cd redis-cluster && mkdir log data conf
#授权给tomcat启动
chown tomcat:tomcat /usr/local/redis-5.0.7/ -R
#系统环境优化
echo "net.core.somaxconn = 5012" >> /etc/sysctl.conf
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
echo never > /sys/kernel/mm/transparent_hugepage/enabled
ulimit -n 65535
#添加到开机启动
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local
or
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
echo '* - nofile 65535' >> /etc/security/limits.conf
##开机启动
echo "/usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/conf/redis.conf" >> /etc/rc.local
##启动redis
/usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/conf/redis.conf
## 创建集群
/usr/local/redis-cluster/bin/redis-cli -a "XXXXX" --cluster create 10.190.19.31:6388 10.190.19.57:6388 10.190.19.106:6388 10.190.19.147:6388 10.190.19.189:6388 10.190.19.214:6388 --cluster-replicas 1
##获取所有key
/usr/local/redis-cluster/bin/redis-cli -c -a "ELF2mIgQbMXY3ABn=external" --cluster call 10.230.192.57:6388 keys \*
##获取集群信息
/usr/local/redis-cluster/bin/redis-cli -p 6388 -h 10.230.192.61 -c -a "ELF2mIgQbMXY3ABn=external" cluster info
/usr/local/redis-cluster/bin/redis-cli -p 6388 -h 10.230.192.61 -c -a "ELF2mIgQbMXY3ABn=external" info
/usr/local/redis-cluster/bin/redis-cli -p 6388 -h 10.230.192.61 -c -a "ELF2mIgQbMXY3ABn=external" cluster nodes
##删除匹配开头的行
redis-cli -c -a "password" -h 10.190.19.31 -p 6388 keys "test*" |xargs redis-cli -c -a "password" -h 10.190.19.31 -p 6388 del {}
##删除当前数据库中的所有Key
flushdb
##删除所有数据库中的key
flushall
/usr/local/redis-cluster/bin/redis-cli -a "ELF2mIgQbMXY3ABn=external" --cluster add-node 10.230.192.58:6388 10.230.192.57:6388
/usr/local/redis-cluster/bin/redis-cli -a "ELF2mIgQbMXY3ABn=external" --cluster add-node 10.230.192.58:6388 10.230.192.57:6388
--确保防火墙方形6388和16388端口
--关闭selinux
--firewall-cmd --state #查看firewalld状态
#删除以a开头的行
sed -i '/^a.*/d' tmp.txt##################配置文件
# 端口号
port 6388
# 绑定的主机地址
bind 10.190.16.11
# 后台启动
daemonize yes
# 开启集群
cluster-enabled yes
# 集群节点配置文件
cluster-config-file "/usr/local/redis-5.0.7/conf/nodes-6388.conf"
# 集群连接超时时间
cluster-node-timeout 8000
#客户端空闲多久后关闭连接
timeout 43200
#当客户端闲置多长时间后发送tcp包确认存活,如果指定为0,表示关闭该功能。示例:
tcp-keepalive 300
# 槽是否全覆盖,只要由节点宕机导致16384个槽位没全被覆盖,整个集群就全部停止服务,一定要改为no。
cluster-require-full-coverage no
# 进程pid的文件位置
pidfile "/var/run/redis-6388.pid"
# 文件存放目录
dir "/usr/local/redis-5.0.7/data/"
# rdb文件路径
dbfilename "dump-6379.rdb"
# 900秒内发生1次数据修改,则进行一次RDB快照保存
save 900 1
# 300秒内发生10次数据修改,则进行一次RDB快照保存
save 300 10
# 60秒内发生10000次数据修改,则进行一次RDB快照保存
save 60 10000
# 启用AOF持久化
appendonly yes
# AOF文件名称
appendfilename "appendonly-6388.aof"
# AOF同步持久化 每次发生数据变更会被立即记录到磁盘,性能较差但数据完整性比较好。
#appendfsync always
# AOF异步操作,每秒记录。如果一秒内宕机,有数据丢失。
appendfsync everysec
# AOF从不同步
#appendfsync no
# AOF重写时是否可以运用Appendfsync,默认no即可,保证数据安全性。
no-appendfsync-on-rewrite no
# 设置AOF重写的基准值
auto-aof-rewrite-min-size 64mb
# 设置AOF重写的基准值
auto-aof-rewrite-percentage 100
# Redis恢复时忽略最后一条可能存在问题的指令
aof-load-truncated yes
#使用压缩rdb文件,rdb文件压缩使用LZF压缩算法,yes:压缩,但是需要一些cpu的消耗。no:不压缩,需要更多的磁盘空
rdbcompression no
#当RDB持久化出现错误后,是否依然进行继续进行工作,yes:不能进行工作,no:可以继续进行工作,可以通
stop-writes-on-bgsave-error no
#是否校验rdb文件。从rdb格式的第五个版本开始,在rdb文件的末尾会带上CRC64的校验和。这跟有利于文件的容错性,但是在保存rdb文件的时候,会有大概10%的性能损耗,所以如果你追求高性能,可以关闭该配置。
rdbchecksum no
# RDB-AOF混合持久化功能
aof-use-rdb-preamble yes
# 最大内存分配,(最保险的预留是45%,如果业务高峰也只是改动一部分内存,可以考虑预留80%,用于Fork、同步和系统使用。)
maxmemory 1800mb
# volatile-lru:使用 LRU 算法进行数据淘汰(淘汰上次使用时间最早的,且使用次数最少的 Key),只淘汰设定了有效期的 Key。
# allkeys-lru:使用 LRU 算法进行数据淘汰,所有的 Key 都可以被淘汰。
# volatile-random:随机淘汰数据,只淘汰设定了有效期的 Key。
# allkeys-random:随机淘汰数据,所有的 Key 都可以被淘汰。
# volatile-ttl:淘汰剩余有效期最短的 Key。
# 数据淘汰策略,默认值noeviction,即不进行数据淘汰。
maxmemory-policy volatile-lru
# Redis日志
logfile "/usr/local/redis-5.0.7/log/redis-6388.log"
# 慢查询时间,单位微秒
slowlog-log-slower-than 50000
# 慢查询记录最多多少条
slowlog-max-len 500
masterauth "XXXX" #密码 使用 openssl rand -base64 12 获得
requirepass "XXXX"
rename-command CONFIG "FHJ05KK7BF_CONFIG"
rename-command FLUSHDB "FHJ05KK7BF_FLUSHDB"
rename-command FLUSHALL "FHJ05KK7BF_FLUSHALL"