redis cluster 安装
- 启动前的配置
如果直接启动redis,日志会报以下警告,可以选择性的进行配置。
1,/proc/sys/net/core/somaxconn
原因就是因为128太小了。执行echo 511 > /proc/sys/net/core/somaxconn
命令就把这个问题解决了。但是这个只是暂时的。如果想要永久解决,打开 /etc/sysctl.conf
在这里面添net.core.somaxconn= 1024 然后执行sysctl -p 就可以永久消除这个warning
2,/proc/sys/vm/overcommit_memory
警告超委托内存设置为0!后台保存可能在低内存条件下失败。
临时解决:执行命令:echo 1 > /proc/sys/vm/overcommit_memory
要解决此问题,请将“vm.overcommit_.=1”添加到/etc/sysctl.conf,然后重新启动或运行命令“sysctl vm.overcommit_.=1”
3,/sys/kernel/mm/transparent_hugepage/enabled
WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis.
警告您的内核中启用了透明大页面(THP)支持。这将导致Redis的延迟和内存使用问题。
要解决此问题,请以root用户身份运行命令“echo never>/sys/kernel/mm/transparent_hugepage/enabled”
并将其添加到/etc/rc.local中,以便在重新启动后保留设置。禁用THP后,必须重新启动Redis。
安装
- 依赖包安装
yum install -y gcc g++ make gcc-c++ kernel-devel automake autoconf libtool make wget tcl vim ruby rubygems unzip git
- 下载安装包
- cd /opt
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
解压
tar -xzvf redis-5.0.7.tar.gz
重命名
mv redis-5.0.7.tar.gz redis
进入目录后编译
cd redis
- 编译
make && make PREFIX=/opt/redis install
如果编译报错,使用:make MALLOC-libc
添加配置文件
cp -r bin/redis-* /usr/local/bin/
mkdir -p /opt/redis/redis-6381
mkdir -p /opt/redis/redis-6381/data
cd /opt/redis/redis-6381
vi redis-6381.conf
port 6381
bind 0.0.0.0
protected-mode no
daemonize yes
loglevel notice
timeout 0
tcp-keepalive 60
activerehashing no
dir /opt/redis/redis-6381/data/
save ""
appendonly yes
maxmemory 2gb
maxmemory-policy volatile-lru
cluster-enabled yes
cluster-require-full-coverage no
cluster-node-timeout 15000
cluster-migration-barrier 1
cluster-config-file nodes6381.conf
masterauth 123456
requirepass 123456
(三台机器,每台1个主节点,一个从节点共6个。配置相同)
三台机器端口分别如下
172.17.37.13 (6381主---6384从)
172.17.37.14 (6382主---6385从)
172.17.37.15 (6383主---6386从)
启动方法:
redis-server /opt/redis/redis-6381/redis-6381.conf
redis-server /opt/redis/redis-6384/redis-6384.conf
redis-server /opt/redis/redis-6382/redis-6382.conf
redis-server /opt/redis/redis-6385/redis-6385.conf
redis-server /opt/redis/redis-6383/redis-6383.conf
redis-server /opt/redis/redis-6386/redis-6386.conf
查看运行状态
ps -ef | grep redis
设置密码
命令:redis-cli -c -p 6381
127.0.0.1:6381> auth "123456"
加入集群
- 如果加了密码,那么创建集群时就需要加-a 123456参数(密码是123456)
- redis-cli -a allen --cluster create 172.17.37.13:6381 172.17.37.13:6384 172.17.37.16:6382 172.17.37.16:6385 172.17.37.17:6383 172.17.37.17:6386 -a 123456 --cluster-replicas 1
#--cluster-replicas 1指的是每个主实例附带一个从实例,构成主从。 启动过程会提示哪些为master和slave节点,输入yes将自动分配完成。 无报错,提示OK即可。
查看集群状态
运行命令:redis-cli -h 172.17.37.13 -p 6381
输入 cluster nodes
如图
设置服务自动检测并启动脚本命令如下 redisstart.sh
#!/bin/sh
while :
do
run=$(ps -ef | grep redis-server | grep -v grep)
if [ "$run" ] ; then
echo "start..."
else
echo "restart..."
cd /opt/redis/
nohup command redis-server /opt/redis/redis-6379/redis-6379.conf &
echo 'redis start success.'
fi
sleep 10
done
启动自动检测运行 nohup command sh /opt/redis/redisstart.sh > /opt/redis/redisLog.log 2>&1 &
停止检测运行 ps -ef | grep redisstart.sh | awk '{print $2}' | xargs -i kill -9 {} >/dev/null 2>&1 &