安装环境

Redis编译安装环境

L:Linux(centos 7.6)
R: Redis(5.0.7)http://download.redis.io/releases/

主机信息:

部署规划:

172.24.77.241(sr1.dj.com):运行Redis-Master&Slave

172.24.77.242(sr2.dj.com):运行Redis--Master&Slave

172.24.77.243(sr3.dj.com):运行Redis--Master&Slave

服务器配置如下:

cd /usr/local/src/

tar xvf redis-5.0.7.tar.gz

cd redis-5.0.7

make PREFIX=/usr/local/redis install

ll /usr/local/redis/

mkdir /usr/local/redis/etc
cp redis.conf /usr/local/redis/etc/

vim /etc/sysctl.conf

net.core.somaxconn=512

vm.overcommit_memory = 1

使修改生效

sysctl -p

1:表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2:表示内核允许分配超过所有物理内存和交换空间总和的内存

开启大页内存动态分配,需要关闭让 redis 负责内存管理

vim /etc/rc.d/rc.local

echo never > /sys/kernel/mm/transparent_hugepage/enabled

chmod a+x /etc/rc.d/rc.local

init 6

前台启动 redis测试报错信息是否消失

/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

编辑 redis 服务启动脚本

vim /usr/lib/systemd/system/redis.service

[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf --supervised systemd
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify
User=root
Group=root
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target

创建 redis 用户和数据目录

groupadd -g 1000 redis && useradd -u 1000 -g 1000 redis -s /sbin/nologin

mkdir -pv /usr/local/redis/{etc,logs,data,run}

验证 redis 启动

chown redis.redis /usr/local/redis/ -R

systemctl start redis

使用客户端连接 redis格式:/usr/local/redis/bin/redis-cli -h IP/HOSTNAME -p PORT -a PASSWORD

本机登录

/usr/local/redis/bin/redis-cli

/usr/local/redis/bin/redis-cli -h 172.24.77.241 -p 6379 -a PASSWORD

创建软连接

ln -sv /usr/local/redis/bin/redis-* /usr/bin/

主服务器配置

vim /usr/local/redis/etc/redis.conf

bind 0.0.0.0

daemonize yes

master 如果密码需要设置 293行

masterauth 123456

设置启用密码507行

requirepass 123456

cluster-enabled yes

启动测试redis

systemctl start redis

/usr/local/redis/bin/redis-cli

get key*

info replication

systemctl stop redis

单主机双redis配置

cp -r /usr/local/redis /usr/local/redis2

vim /usr/local/redis2/etc/redis.conf

port 6380

启动redis

/usr/local/redis2/bin/redis-server /usr/local/redis2/etc/redis.conf

创建集群

redis-cli -a 123456 --cluster create 172.24.77.241:6379 172.24.77.241:6380 172.24.77.242:6379 172.24.77.242:6380 172.24.77.243:6379 172.24.77.243:6380 --cluster-replicas 1

yes #输入 yes 自动创建集群

[OK] All nodes agree about slots configuration.

Check for open slots...#所有节点槽位分配完成
Check slots coverage...#检查打开的槽位
[OK] All 16384 slots covered.#检查插槽覆盖范围

分别设置 masterauth 密码

redis-cli -h 172.24.77.241 -p 6380 -a 123456

CONFIG SET masterauth 123456

info replication

redis-cli -h 172.24.77.242 -p 6380 -a 123456

CONFIG SET masterauth 123456

redis-cli -h 172.24.77.243 -p 6380 -a 123456

CONFIG SET masterauth 123456

验证 master 状态

redis-cli -h 172.24.77.241 -p 6379 -a 123456

info replication

查看群集状态

cluster info

查看集群 node 对应关系

cluster nodes

验证集群写入 key

172.24.77.242:6379> set key1 test1

172.24.77.243:6380> keys *

集群状态监控

redis-trib.rb check 172.24.77.241:6379 ##redis4版本

redis-cli -a 123456 --cluster check 172.24.77.241:6379 ##redis5版本

集群维护之动态添加节点244

新节点244安装redis(略)

配置双redis

cp -r /usr/local/redis /usr/local/redis2

cd /usr/local/redis/etc/

在现在节点上执行

scp redis.conf [email protected]:/usr/local/redis/etc/

cd /usr/local/redis2/etc

scp redis.conf [email protected]:/usr/local/redis/etc/

分别启动 redis 服务:

systemctl daemon-reload
systemctl restart redis
/usr/local/redis/bin/redis-server /usr/local/redis2/etc/redis.conf

添加节点到集群

redis-cli -a 123456 --cluster add-node 172.24.77.244:6379 172.24.77.241:6379

要添加的新redis节点IP和端口添加到的集群中的 master IP:端口, 加到集群之后默认是 master 节点但是没有slots 数据,需要重新分配

分配槽位

redis-trib.rb check 172.24.77.241:6379

redis-cli -a 123456 --cluster reshard 172.24.77.244:6379

4096 #分配多少个槽位

新redis ID ##接收 slot 的服务器 ID, 手动输入172.24.77.244的 node ID

Source node all #1: all #将哪些源主机的槽位分配给 192.168.7.104:6379, all 是自动在所有的 redis node 选
择划分,如果是从 redis cluster 删除主机可以使用此方式将主机上的槽位全部移动到别的 redis 主机

yes #确认分配

验证重新分配槽位之后的集群状态

redis-cli -a 123456 --cluster check 172.24.77.242:6379

为新的 master添加slave节点

redis-cli -a 123456 --cluster add-node 172.24.77.244:6380 172.24.77.244:6379

更改新节点更改状态为 slave

redis-cli -h 172.24.77.244 -p 6380 -a 123456

CLUSTER REPLICATE master id

cluster replicate 9d63a881bf0e7f8d8b29a786448e7c22de30ba6a

CLUSTER NODES #再次查看集群节点状态, 验证节点是否已经更改为指定 master 的 slave

验证当前集群状态

redis-cli -a 123456 --cluster check 172.24.77.244:6379