一、背景
DBA标准redis是通过dmp管理平台实现部署交付与管理,但对超大容量的redis集群的管理dmp会出问题,所以就手工部署这类的超大容量的redis。
大数据部分会有一些非标的redis部署工作,因为是非标,所以仅仅是友情支持。不提供高响应支持服务。
在物理机上混部多个redis实例,然后实现分片集群。
以下是ai推荐的一套wga redis部署。
redis容量规划:
资源暂时只有1台物理机,主机内存一共1024G,每个分片64G,一共8分片,容量256G,预留一般的内存给OS。
二、准备
- 主机资源: 172.16.226.51
- redis版本: 5.0.14
- 略
- 资源
# 物理机
172.16.226.51
5. redis集群规划
# 一共8分片,4主+4从
172.16.226.51:7000
172.16.226.51:7001
172.16.226.51:7002
172.16.226.51:7003
172.16.226.51:7004
172.16.226.51:7005
172.16.226.51:7006
172.16.226.51:7007
三、部署操作
-
OS初始化
# 创建/etc/sysctl.d/redis-sysctl.conf文件,添加如下行
net.ipv4.tcp_max_syn_backlog = 65535
net.core.somaxconn = 65535
net.ipv4.tcp_max_tw_buckets = 262144
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_time = 120
vm.overcommit_memory = 1
vm.swappiness = 1
fs.file-max = 1024000
2. ## /etc/rc.local修改
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
执行完成后,需手工执行一次
-
redis安装
yum install -y http://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/7/remi/x86_64/redis-5.0.14-1.el7.remi.x86_64.rpm http://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/7/remi/x86_64/redis-trib-5.0.14-1.el7.remi.noarch.rpm
4. ## 创建redis目录
mkdir -p /data/redis/data/{7000,7001,7002,7003,7004,7005,7006,7007} # 共8个
mkdir -p /data/redis/conf/{7000,7001,7002,7003,7004,7005,7006,7007} # 共8个
5. ## 配置redis.conf 文件
使用如下补充“redis.conf 配置模板”,放到对应的/data/redis/conf/{7000,7001,7002,7003,7004,7005,7006,7007} 路径下。
-
创建redis service文件
使用如下补充“<<<<redis-server@.service>>>> 文件”,文件内容直接使用模板中内容
创建文件: /etc/systemd/system/redis-<<<<server@.service>>>>
-
执行重载systemd
systemctl daemon-reload
8. ## 设置redis开机自启
# 使用如下命令启动redis服务,并开启自动启动
systemctl enable --now redis-server@7000
systemctl enable --now redis-server@7001
systemctl enable --now redis-server@7002
systemctl enable --now redis-server@7003
systemctl enable --now redis-server@7004
systemctl enable --now redis-server@7005
systemctl enable --now redis-server@7006
systemctl enable --now redis-server@7007
9. ## 启动redis
# 启动redis
systemctl start redis-server@7000
systemctl start redis-server@7001
systemctl start redis-server@7002
systemctl start redis-server@7003
systemctl start redis-server@7004
systemctl start redis-server@7005
systemctl start redis-server@7006
systemctl start redis-server@7007
-
创建集群
redis-cli -a some_password --cluster create --cluster-replicas 1 $HOSTNAME:7000 $HOSTNAME:7001 $HOSTNAME:7002 $HOSTNAME:7003 $HOSTNAME:7004 $HOSTNAME:7005 $HOSTNAME:7006 $HOSTNAME:7007
# 出现如下提示时输入 yes 并回车:
# Can I set the above configuration? (type 'yes' to accept):
11. ## 检查集群状态
redis-cli -a some_password --cluster check $HOSTNAME:7000
# 如返回如下信息,则说明创建成功:
# [OK] xx keys in 3 masters.
# [OK] All nodes agree about slots configuration.
# [OK] All 16384 slots covered.
四、playbook
待补充
五、监控对接
略
六、补充信息
-
redis.conf 配置模板
按需替换下面标黄部分
### Server ###
pidfile /data/redis/data/{{ port }}/redis.pid
port {{ port }}
bind 0.0.0.0
logfile "/data/redis/data/{{ port }}/redis.log"
dbfilename dump.rdb
dir /data/redis/data/{{ port }}
appendfilename "redis.aof"
daemonize yes
loglevel notice
databases 16
activerehashing yes
hz 10
### Auth ###
requirepass "some_password"
masterauth "some_password"
### Memory ###
maxmemory 1gb
maxmemory-policy volatile-lru
maxmemory-samples 5
### Persistence ###
save " "
stop-writes-on-bgsave-error no
rdbcompression yes
rdbchecksum yes
appendonly no
appendfsync everysec
no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 1gb
aof-load-truncated yes
### Clients ###
maxclients 10000
tcp-backlog 65535
timeout 0
tcp-keepalive 60
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
### Replication ###
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-ping-slave-period 10
repl-disable-tcp-nodelay no
repl-backlog-size 128mb
repl-backlog-ttl 3600
slave-priority 100
### Command ###
#rename-command flushall ""
#rename-command flushdb ""
#rename-command shutdown #"xxxshutdown"
#rename-command save "xxxsave"
#rename-command sync "xxxsync"
#rename-command bgsave "xxxbgsave"
#rename-command bgrewriteaof "xxxbgrewriteaof"
#rename-command slaveof "xxxslaveof"
#rename-command config "xxxconfig"
#rename-command keys xxxkeys
### Slowlog ###
slowlog-log-slower-than 5000
slowlog-max-len 1000
### Redis 4.0 New ###
lazyfree-lazy-eviction no
lazyfree-lazy-expire yes
lazyfree-lazy-server-del yes
slave-lazy-flush yes
cluster-enabled yes
2. ## <<<<redis-server@.service>>>> 文件
[Unit]
Description=Redis Database Service
Wants=network.target
After=network.target
[Service]
Type=forking
PIDFile=/data/redis/data/%i/redis.pid
ExecStart=/usr/bin/redis-server /data/redis/conf/%i/redis.conf
User=root
LimitNOFILE = 65535
[Install]
WantedBy=multi-user.target
3. ## redis启停命令
# 启动redis
systemctl start redis-server@7000
systemctl start redis-server@7001
systemctl start redis-server@7002
systemctl start redis-server@7003
systemctl start redis-server@7004
systemctl start redis-server@7005
systemctl start redis-server@7006
systemctl start redis-server@7007
#
systemctl status redis-server@7000
systemctl status redis-server@7001
systemctl status redis-server@7002
systemctl status redis-server@7003
systemctl status redis-server@7004
systemctl status redis-server@7005
systemctl status redis-server@7006
systemctl status redis-server@7007
#
systemctl stop redis-server@7000
systemctl stop redis-server@7001
systemctl stop redis-server@7002
systemctl stop redis-server@7003
systemctl stop redis-server@7004
systemctl stop redis-server@7005
systemctl stop redis-server@7006
systemctl stop redis-server@7007
#
systemctl restart redis-server@7000
systemctl restart redis-server@7001
systemctl restart redis-server@7002
systemctl restart redis-server@7003
systemctl restart redis-server@7004
systemctl restart redis-server@7005
systemctl restart redis-server@7006
systemctl restart redis-server@7007
# ###
# 使用redis-cli 连接redis
redis-cli -a 2ghlmvl_ST --cluster call 172.16.226.51:7000 cluster slots
# 连接redis
redis-cli -h 172.16.226.51 -p 7000 -c
# 连接redis
redis-cli -h 172.16.226.51 -p 7000 -a 2ghlmvl_ST -c