部署非标redis分片集群(大数据)

62 阅读5分钟

一、背景

DBA标准redis是通过dmp管理平台实现部署交付与管理,但对超大容量的redis集群的管理dmp会出问题,所以就手工部署这类的超大容量的redis。

大数据部分会有一些非标的redis部署工作,因为是非标,所以仅仅是友情支持。不提供高响应支持服务。

在物理机上混部多个redis实例,然后实现分片集群。

以下是ai推荐的一套wga redis部署。

redis容量规划:

资源暂时只有1台物理机,主机内存一共1024G,每个分片64G,一共8分片,容量256G,预留一般的内存给OS。




二、准备

  1. 主机资源: 172.16.226.51
  2. redis版本: 5.0.14
  3. 资源
# 物理机
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



三、部署操作

  1. 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

执行完成后,需手工执行一次

  1. 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} 路径下。

  1. 创建redis service文件

使用如下补充“<<<<redis-server@.service>>>> 文件”,文件内容直接使用模板中内容

创建文件: /etc/systemd/system/redis-<<<<server@.service>>>>

  1. 执行重载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
  1. 创建集群

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

待补充




五、监控对接




六、补充信息

  1. 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