redis编译安装、哨兵、集群

编译安装

#下载源代码解压
wget https://download.redis.io/releases/redis-5.0.13.tar.gz -P /home/
tar -xvf /home/redis-5.0.13.tar.gz -C /home
cd /home/redis-5.0.13

#You can use `make PREFIX=/some/other/directory install` if you wish to use a different destination.
mkdir -p  /usr/local/redis/{etc,logs,data,run}
make PREFIX=/usr/local/redis install

#In order to install Redis binaries into /usr/local/bin just use:
make install

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

 

用户及权限

 使用redis用户启动程序

useradd redis -s /sbin/nologin

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

 

管理脚本

 可使用源码包中的脚本初始化init.d,也可用更方便的systemctl

systemctl 管理

cat > /usr/lib/systemd/system/redis.service <<EOF
[Unit] Description
=Redis persistent key-value database After=network.target After=network-online.target Wants=network-online.target
[Service] #ExecStart
=/usr/bin/redis-server /etc/redis.conf --supervised systemd 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=redis Group=redis RuntimeDirectory=redis RuntimeDirectoryMode=0755

[Install] WantedBy=multi-user.target

EOF

 

 

init.d脚本 

使用源码包中的install_server.sh进行初始化

utils/install_server.sh

/etc/init.d/redis_6379  stop|start|restart 

 

 

 

 

 

处理三个警告

 

 

/etc/sysctl.conf

net.core.somaxconn = 512

# backlog参数控制的是三次握手的时候server端收到client ack确认号之后的队列值

 

vm.overcommit_memory = 1
0、表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存
申请失败,并把错误返回给应用进程。
1、表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2、表示内核允许分配超过所有物理内存和交换空间总和的内存


echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled'  >>/etc/rc.d/rc.local

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

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

 

集群

创建集群的前提条件

1.每个redis node节点采用相同的硬件配置、相同的密码、相同的redis版本。
2.每个节点必须开启的参数
cluster-enabled yes #必须开启集群状态,开启后redis 进程会有cluster显示
cluster-config-file nodes-6380.conf #此文件有redis cluster集群自动创建和维护,不需要任何手动操作
3.所有redis服务器必须没有任何数据
4.先启动为单机redis且没有任何key value

redis3/4版本

需要使用到集群管理工具redis-trib.rb,这个工具是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下,是基于redis提供的集群命令封装成简单、便捷、实用的操作工具,redis-trib.rb是redis作者用ruby开发完成的,centos 系统yum安装的ruby存在版本较低问题,使用源码编译安装ruby。

 gem install redis

#如果无法在线安装,可以下载reids模块安装包离线安装
#https://rubygems.org/gems/redis #先下载redis模块安装包
#gem install -l redis-3.3.0.gem #安装redis模块

#修改密码redis 登录密码
/usr/local/lib/ruby/gems/2.5.0/gems/redis-4.1.0/lib/redis/client.rb

 

创建集群

redis-trib.rb create --replicas 1 10.0.0.3:6379 10.0.0.4:6379 10.0.0.5:6379 10.0.0.6:6379 10.0.0.7:6379 10.0.0.8:6379

 

redis5版本

redis-cli --cluster create 10.0.0.3:6379 10.0.0.4:6379 10.0.0.5:6379 10.0.0.6:6379 10.0.0.7:6379 10.0.0.8:6379 --cluster-replicas 1 

 

清空数据及重置集群

如果操作导致Redis集群创建报错,可执行清空数据和集群命令
127.0.0.1:6379> FLUSHALL
OK
127.0.0.1:6379> cluster reset
OK

 

扩容,新加服务器

增加Redis node节点,需要与之前的Redis node版本相同、配置一致,然后分别启动两台Redis node,一主一从。

1、添加节点到集群

#redis 4 
redis-trib.rb add-node 10.0.0.10:6379  10.0.0.11:6379

#redis 5 
redis-cli --cluster add-node 10.0.0.10:6379  10.0.0.11:6379

 

2、更改新加节点slave/master状态

需要手动将其指定为某个masterslave,否则其默认角色为master

 #要设置哪台为slave,则登陆该台。查看当前集群节点,找到目标master 的ID
10.0.0.11:6379> CLUSTER NODES

#将其设置为slave,命令格式为cluster replicate MASTERID
10.0.0.11:6379>CLUSTER REPLICATE 986338acd50c3015be68a760502b238f4509882d 

 

3、重新分配slot槽位

#redis 4
#查看当前状态
redis-trib.rb check 10.0.0.3:6379

redis-trib.rb reshard 10.0.0.11:6379

#redis 5 
redis-cli --cluster reshard 10.0.0.11:6379

 

posted @ 2021-10-15 09:48  滑了个蛋  阅读(92)  评论(0)    收藏  举报