官网下载最新包
解压 进入目录
redis-3.2.0
make
可能会遇到报错
make[3]: Entering directory `/home/redis/redis-3.2.0/deps/hiredis'
gcc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb net.c
make[3]: gcc: Command not found
make[3]: *** [net.o] Error 127
make[3]: Leaving directory `/home/redis/redis-3.2.0/deps/hiredis'
make[2]: *** [hiredis] Error 2
make[2]: Leaving directory `/home/redis/redis-3.2.0/deps'
make[1]: [persist-settings] Error 2 (ignored)
CC adlist.o
/bin/sh: cc: command not found
make[1]: *** [adlist.o] Error 127
make[1]: Leaving directory `/home/redis/redis-3.2.0/src'
make: *** [all] Error 2
一个是缺gcc 直接yum 安装 ,另一个解决方法
make MALLOC=libc
然后错误消失
make install
/home/redis/7000
/home/redis/7001
cp redis-3.2.0/redis.conf 7000/
cp redis-3.2.0/redis.conf 7001/
[
redis@iovsynchronous 7000]$ vim redis.conf
bind 172.31.0.220
daemonize yes //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应7000
port 7000 //端口7000
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes.conf //集群的配置 配置文件首次启动自动生成
cluster-node-timeout 5000 //请求超时 设置5秒够了
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
pidfile /var/run/redis_7000.pid //pidfile文件对应7000
port 7000 //端口7000
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes.conf //集群的配置 配置文件首次启动自动生成
cluster-node-timeout 5000 //请求超时 设置5秒够了
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
启动 会发现3个警告
/proc/sys/net/core/somaxconn 此值表示网络连接的队列大小
,在配置文件redis.conf中的“tcp-backlog 511”就配置在高并发环境下的最大队列大小,此值受限于系统的somaxconn与tcp_max_syn_backlog这两个值,所以应该把这两个内核参数值调大;
WARNING overcommit_memory is set to 0!
这个告警是overcommit_memory是被设置为0的,在主机配置较少内存时,redis运行可能出现故障
overcommit_memory有3个参数0,1,2
0.表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1. 表示内核允许分配所有的物理内存,而不管当前的内存状态如何
2.表示内核允许分配超过所有物理内存和交换空间总和的内存
WARNING you have Transparent Huge Pages (THP) support enabled in your kernel
照他说的
echo never > /sys/kernel/mm/transparent_hugepage/enabled
具体解决方法如下
vim /etc/sysctl.conf
#最大队列长度,应付突发的大并发连接请求
net.core.somaxconn = 65535
#半连接队列长度,此值受限于内存大小
net.ipv4.tcp_max_syn_backlog = 20480
#内存分配策略.
vm.overcommit_memory = 1
使之生效
sysctl -p
在重启之,发现告警已经没有了~~!
./redis-trib.rb create --replicas 1 172.31.0.220:7000 172.31.0.223:7001 172.31.0.223:7000 172.31.0.224:7001 172.31.0.224:7000 172.31.0.220:7001
搭建集群会发现提示错误 没有ruby环境
/usr/bin/env: ruby: No such file or directory
1.yum 安装ruby
yum install ruby && yum install
rubygem
接下去需要安装ruby的redis api
wegt https://rubygems.global.ssl.fastly.net/gems/redis-3.2.2.gem
gem install -l ./redis-3.2.2.gem
gem install -l ./redis-3.2.2.gem
2.源码安装
去官网下载1.9版本以上的ruby
通过源码安装 Ruby。下载,解压,然后执行:
$ ./configure
$ make
$ sudo make install
默认情况下,Ruby 安装到 /usr/local
目录。如果想使用其他目录,可以把 --prefix=DIR
选项传给 ./configure
脚本。
接下去需要安装ruby的redis apiwegt https://rubygems.global.ssl.fastly.net/gems/redis-3.2.2.gem
gem install -l ./redis-3.2.2.gem
配置集群,如果3台服务器,让3个主节点和从节点分开,不要都在同一台服务器上
./redis-trib.rb create --replicas 1 172.31.0.220:7000 172.31.0.223:7001 172.31.0.223:7000 172.31.0.224:7001 172.31.0.224:7000 172.31.0.220:7001
集群OK~
测试集群
redis-cli -c
redis-cli -c