您的位置:首页 > 数据库 > Redis

redis cluster install

2016-05-28 15:53 736 查看
官网下载最新包
解压 进入目录 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日志开启  有需要就开启,它会每次写操作都记录一条日志

启动 会发现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

2.源码安装
    去官网下载1.9版本以上的ruby
     https://www.ruby-lang.org/zh_cn/documentation/installation/

     通过源码安装 Ruby。下载,解压,然后执行:
$ ./configure
$ make
$ sudo make install

默认情况下,Ruby 安装到 /usr/local
 目录。如果想使用其他目录,可以把 
--prefix=DIR
 选项传给 
./configure
 脚本。
[/code]
 接下去需要安装ruby的redis api    wegt 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集群