redis devops(一) v6.2.6版本 3主3从集群部署

本来想一篇写完redis 部署,开发集成,在线调试。
写着写着发现内容很多,有些地方需要时间深入一下,于是就切分了三篇。
第一篇部署,第二篇,开发,第三篇,在线调试。
redis devops(二) springboot 2.4.2 集成r2dbc
后两篇如果自我感觉写地不好就存草稿不发了。

部署: 3主3从6台云主机

进入opt目录

cd /opt

根据官网下载安装。

wget https://download.redis.io/releases/redis-6.2.6.tar.gz
tar xzf redis-6.2.6.tar.gz
cd redis-6.2.6
make

接着官网不讲了,在usr/local/bin 下加入快捷方式

make install

建立一个config目录,我的目录建在usr/local/bin 下,可任意

cd /usr/local/bin
mkdir config

测试是否可用

cp /opt/redis-6.2.6/redis.conf config
cd config

vim redis.conf #修改 daemonize yes

cd ..
redis-server config/redis.conf

redis-cli -p 6379 #测试是否运行成功

rm dump.rdb #删除测试文件

创建日志文件(我把日志,备份,集群节点都输出在这个目录)可任意

mkdir /log

替换usr/local/bin/config/redis.conf ,可先备份,也可以不备份,反正/opt/redis-6.2.6/redis.conf还在。
下面的配置,有些需要按需调整的

################################## INCLUDES ###################################
# include /path/to/local.conf
# include /path/to/other.conf

################################## MODULES #####################################

# loadmodule /path/to/my_module.so
# loadmodule /path/to/other_module.so

################################## NETWORK #####################################
# 指定 redis 只接收来自于该IP地址的请求(可以区分内外网网卡),如果不进行设置,那么将处理所有请求
bind 10.*.*.* #替换自身的局域网地址

# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码。
# 开启该参数后,redis只会本地进行访问
# 拒绝外部访问。要是开启了密码和bind,可以开启。否则最好关闭,设置为no
protected-mode yes

#redis监听的端口号
port 10000 #示例端口号,推荐修改原生6379,后面开放集群端口需要这的端口+10000

# 此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统定义
# 的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。当系统并发量大并且客户端
# 速度缓慢的时候,可以将这二个参数一起参考设定。该内核参数默认值一般是128,对于负载很大的服务程序来说
# 大大的不够。一般会将它修改为2048或者更大。在/etc/sysctl.conf中添加:net.core.somaxconn = 2048,
# 然后在终端中执行sysctl -p
tcp-backlog 511

#此参数为设置客户端空闲超过timeout,服务端会断开连接,为0则服务端不会主动断开连接,不能小于0
timeout 0

# tcp keepalive参数。如果设置不为0,就使用配置tcp的SO_KEEPALIVE值,使用keepalive有两个好处:检测挂
# 掉的对端。降低中间设备出问题而导致网络看似连接却已经与对端端口的问题。在Linux内核中,设置了
# keepalive,redis会定时给对端发送ack。检测到对端关闭需要两倍的设置值
tcp-keepalive 300

################################# GENERAL #####################################
# 是否在后台执行,yes:后台运行;no:不是后台运行
daemonize yes

# redis的进程文件
pidfile /var/run/redis_**.pid #**自己替换一下

# 指定了服务端日志的级别。级别包括:debug(很多信息,方便开发、测试),verbose(许多有用的信息,
# 但是没有debug级别信息多),notice(适当的日志级别,适合生产环境),warn(只有非常重要的信息)
loglevel notice

# 指定了记录日志的文件。空字符串的话,日志会打印到标准输出设备。后台运行的redis标准输出是/dev/null
logfile /log/redis.log #可以自定义配置

# 设置为yes会把日志输出到系统日志
# syslog-enabled no

# 指定syslog的标示符,如果'syslog-enabled'是no,则这个选项无效
# syslog-ident redis

# 指定syslog 设备(facility), 必须是USER或者LOCAL0到LOCAL7.
# syslog-facility local0

# crash-log-enabled no

# crash-memcheck-enabled no

# 数据库的数量,默认使用的数据库是0。可以通过”SELECT 【数据库序号】“命令选择一个数据库,序号从0开始
databases 16

always-show-logo no
set-proc-title yes


################################ SNAPSHOTTING  ################################
# RDB 自己选择RDB或者AOF 
# save 3600 1
# save 300 100
# save 60 10000

#持久化出错继续工作
stop-writes-on-bgsave-error yes

#是否压缩rdb文件
rdbcompression yes

#保存rdb文件时,是否校验
rdbchecksum yes

dbfilename redis.rdb

#rdb文件是否删除同步锁
rdb-del-sync-files no

# The working directory.
dir /log/

################################# REPLICATION #################################

# replicaof <masterip> <masterport>

# 如果master设置了requirepass,那么slave要连上master,需要有master的密码才行。masterauth就是用来
# 配置master的密码,这样可以在连上master后进行认证
masterauth #推荐32位及以上 这里我6台机子使用了相同的密码,不同密码没研究

# masteruser <username>

# master using the new AUTH form: AUTH <username> <password>.

replica-serve-stale-data yes

replica-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-diskless-load disabled

# repl-ping-replica-period 10

# repl-timeout 60

repl-disable-tcp-nodelay no

# repl-backlog-ttl 3600

replica-priority 100

# replica-announced yes

# min-replicas-max-lag is set to 10.


############################### KEYS TRACKING #################################

# tracking-table-max-keys 1000000

################################## SECURITY ###################################

acllog-max-len 128

# aclfile /etc/redis/users.acl

#以Redis 6开始 requirepass 只是一个兼容性
# requirepass不兼容aclfile选项和ACL LOAD 
requirepass #推荐32位及以上 这里我6台机子使用了相同的密码,不同密码没研究 没有使用acl,因为比较复杂

# acl-pubsub-default resetchannels

################################### CLIENTS ####################################

# 最大客户端数
# maxclients 10000

############################## MEMORY MANAGEMENT ################################

# 最大内存
# maxmemory <bytes>

# 内存达到上限的处理策略,默认volatile-lru
# maxmemory-policy noeviction

# maxmemory-samples 5

# maxmemory-eviction-tenacity 10

# replica-ignore-maxmemory yes

# active-expire-effort 1

############################# LAZY FREEING ####################################

lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no

lazyfree-lazy-user-del no

lazyfree-lazy-user-flush no

################################ THREADED I/O #################################

# io-threads 4

# io-threads-do-reads no


############################ KERNEL OOM CONTROL ##############################

# Don't make changes to oom-score-adj (default).
oom-score-adj no

oom-score-adj-values 0 200 800


#################### KERNEL transparent hugepage CONTROL ######################

disable-thp yes

############################## APPEND ONLY MODE ###############################

# AOF 模式,默认关闭
appendonly no

appendfilename "appendonly.aof"

# If unsure, use "everysec".

# appendfsync always
# 每秒
appendfsync everysec
# 由操作系统决定
# appendfsync no

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

aof-use-rdb-preamble yes

################################ LUA SCRIPTING  ###############################

lua-time-limit 5000

################################ REDIS CLUSTER  ###############################

# 开启集群
cluster-enabled yes

# 节点的配置文件
cluster-config-file nodes-20199.conf

# 节点的失联时间毫秒
cluster-node-timeout 15000

# 
# cluster-replica-validity-factor 10

# 
# cluster-migration-barrier 1

# 
# cluster-allow-replica-migration yes

# 
# cluster-require-full-coverage yes

# 
# cluster-replica-no-failover no

# 
# cluster-allow-reads-when-down no

# In order to setup your cluster make sure to read the documentation
# available at https://redis.io web site.

########################## CLUSTER DOCKER/NAT support  ########################
#
# * cluster-announce-ip
# * cluster-announce-port
# * cluster-announce-tls-port
# * cluster-announce-bus-port
#
# Example:
#
# cluster-announce-ip 10.1.1.5
# cluster-announce-tls-port 6379
# cluster-announce-port 0
# cluster-announce-bus-port 6380

################################## SLOW LOG ###################################

# 
slowlog-log-slower-than 10000

# 
slowlog-max-len 128

################################ LATENCY MONITOR ##############################

# 
latency-monitor-threshold 0

############################# EVENT NOTIFICATION ##############################

notify-keyspace-events ""

############################### GOPHER SERVER #################################

# gopher-enabled no

############################### ADVANCED CONFIG ###############################

# 
hash-max-ziplist-entries 512
hash-max-ziplist-value 64

# 
list-max-ziplist-size -2

# 
list-compress-depth 0

# 
set-max-intset-entries 512

# 
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

# 
hll-sparse-max-bytes 3000

# 
stream-node-max-bytes 4096
stream-node-max-entries 100

# 
activerehashing yes

# 
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

# 
# client-query-buffer-limit 1gb

# 
# proto-max-bulk-len 512mb

# 
hz 10

# 
dynamic-hz yes

# 
aof-rewrite-incremental-fsync yes

# 
rdb-save-incremental-fsync yes

# lfu-log-factor 10
# lfu-decay-time 1

########################### ACTIVE DEFRAGMENTATION #######################
#
jemalloc-bg-thread yes

# ignore-warnings ARM64-COW-BUG

其中的bind ip每一台机子都需要修改为局域网地址(为什么不能公网,请自行了解)
6台机子以此config 启动redis。
6台合体命令、3主3从
命令中请使用实际的ip,端口和密码

cd /opt/redis-6.2.6/src
redis-cli --cluster create --cluster-replicas 1 10.*.*.1:{port} 10.*.*.2:{port} 10.*.*.3:{port} 10.*.*.4:{port} 10.*.*.5:{port} 10.*.*.6:{port} -a {requirepass }

需要是否按照推荐地方式主从分配,输入yes,等待节点联通就成功了。
附:
1、安装前,可以更新一下系统,最好查找一下redis,看是否已经安装过。
2、开放防火墙,开放安全组 (2个端口,一个配置端口,一个配置端口+10000的端口)
3、(ubuntu20.04 解决一个警告)vim /etc/sysctl.conf -> vm.overcommit_memory = 1 然后sysctl vm.overcommit_memory=1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值