Redis安装环境:

环境 IP 端口 访问示例 备注
测试1 10.251.12.153 16379 redis-cli -h 10.251.12.153 -p 16379 Master
测试2 10.252.12.153 16379 redis-cli -h 10.252.12.153 -p 16379 Master
准生产 10.255.12.153 16379 redis-cli -c -h 10.255.12.153 -p 16379 Master
10.255.12.153 16380 Slave
10.255.12.154 16381 Master
10.255.12.154 16382 Slave
10.255.12.155 16383 Master
10.255.12.155 16384 Slave
生产环境 10.228.12.153 16379 redis-cli -c -h 10.228.12.153 -p 16379 Master
10.228.12.154 16380 Slave
10.228.12.155 16381 Master
10.228.12.156 16382 Slave
10.228.12.157 16383 Master
10.228.12.158 16384 Slave

修改系统内核参数:

内核参数 修改方法
vm.overcommit_memory 1 sysctl vm.overcommit_memory=1 (在/etc/sysctl.conf中添加: vm.overcommit_memory=1)
/sys/kernel/mm/transparent_hugepage/enabled never echo never > /sys/kernel/mm/transparent_hugepage/enabled (把整个命令加到/etc/rc.local中)

安装软件版本:

软件 版本 备注
Redis 4.0.1 http://download.redis.io/releases/redis-4.0.1.tar.gz
Openssl 1.1.0f ftp://ftp.openssl.org/source/openssl-1.1.0f.tar.gz
Zlib 1.2.11 http://www.zlib.net/zlib-1.2.11.tar.gz
Ruby 2.4.1 https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.gz
Centos 6.9 测试和准生产
Centos 7.3.111 生产
1.  Redis安装 (全程以admin账号执行,仅需要root权限时再切换到root执行)
yum install tcl
mkdir -p /opt/software
mkdir -p /opt/software/redis
mkdir -p /opt/data
mkdir -p /opt/date/redis
mkdir -p /opt/logs/redis
mkdir -p /opt/data/redis
cd /opt/software/redis
wget http://download.redis.io/releases/redis-4.0.1.tar.gz
tar xzf redis-4.0.1.tar.gz
cd redis-4.0.1
make 
make test
cp /opt/software/redis/redis-4.0.1/src/redis-cli  /opt/software/redis/
cp /opt/software/redis/redis-4.0.1/src/redis-server  /opt/software/redis/
cd ..
/opt/software/redis/redis-server /opt/software/redis/redis-master.conf &

    (All tests passed without errors!)

2.  搭建非生产环境,修改redis参数如下:
测试1(master) 测试2(master) 准生产1 准生产2 准生产3 备注
pidfile /var/run/redis_16379.pid /var/run/redis_16379.pid /var/run/redis_16379.pid /var/run/redis_16381.pid /var/run/redis_16383.pid Master
/var/run/redis_16380.pid /var/run/redis_16382.pid /var/run/redis_16384.pid slave
port 16379 16379 16379 16381 16383 Master
16380 16382 16384 slave
bind 10.251.12.153 10.252.12.153 10.255.12.153 10.255.12.154 10.255.12.155 Master
10.255.12.153 10.255.12.154 10.255.12.155 slave
logfile /opt/logs/redis/redis-master.log /opt/logs/redis/redis-master.log /opt/logs/redis/redis-16379.log /opt/logs/redis/redis-16381.log /opt/logs/redis/redis-16383.log Master
/opt/logs/redis/redis-16380.log /opt/logs/redis/redis-1632.log /opt/logs/redis/redis-16384.log slave
dbfilename redis-master.rdb redis-master.rdb redis-16379.rdb redis-16381.rdb redis-16383.rdb Master
redis-16380.rdb redis-16382.rdb redis-16384.rdb slave
FLUSHALL 不禁用 不禁用 rename-command FLUSHALL "" Master和Slave上都禁用
FLUSHDB 不禁用 不禁用 rename-command FLUSHDB "" Master和Slave上都禁用
KEYS 不禁用 不禁用 rename-command KEYS Master和Slave上都禁用
数据持久化 不禁止 不禁止 禁止master上数据持久化#save 900 1#save 300 10#save 60 10000 仅在Master上
dir /opt/data/redis
*确保用户对目录/var/run有写权限。
chmod o+w /var/run

Master参数文件示例:
pidfile /var/run/redis_16379.pid
port 16379
bind 10.255.12.153
logfile /opt/logs/redis/redis-master.log
dbfilename redis-master.rdb
dir /opt/data/redis 

Slave参数文件示例:
pidfile /var/run/redis_16380.pid
port 16380
bind 10.255.12.153
logfile /opt/logs/redis/redis-slave.log
dbfilename redis-slave.rdb
dir /opt/data/redis 

3.  命令: 测试/关闭redis-server/启动redis-server
/opt/software/redis/redis-cli -h 10.255.12.155 -p 16379
ping
exit
/opt/software/redis/redis-cli -h 10.255.12.155 -p 16379 shutdown
ps -ef|grep redis
/opt/software/redis/redis-server /opt/software/redis/redis-16379.conf
/opt/software/redis/redis-server /opt/software/redis/redis-16380.conf 

ps -ef|grep redis

4.  搭建生产环境集群,修改redis参数如下:
1)  配置相关参数
配置选项 说明
daemonize yes 是否作为守护进程运行
pidfile /var/run/redis_16379.pid (master) 如以后台进程运行,则需指定一个 pid,默认为/var/run/redis_6379.pid
/var/run/redis_16380.pid (slave)
port 16379/16380/16381/16382/16383/16384 Master/Slave(6个节点使用不用的端口)
databases 16 可用数据库数,默认值为 16,默认数据库存储在 DB 0号 ID 库中
cluster-enabled yes 打开redis 集群
cluster-config-file nodes-16379.conf至nodes-16384.conf 集群配置文件,默认为nodes-6379.conf
cluster-node-timeout 15000 开启节点互连超时时间。毫秒,默认15000。
cluster-migration-barrier 1 数据迁移的副本临界数,这个参数表示的是,一个主节点在拥有多少个好的从节点的时候就要割让一个从节点出来给另一个没有任何从节点的主节点。
cluster-require-full-coverage yes 如果某一些 key space 没有被集群中任何节点覆盖,集群将停止接受写入。
appendonly yes 启用 aof 持久化方式
(因为 redis 本身同步数据文件是按上面 save 条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认值为 no)
appendfilename nodes-16379.aof至nodes-16384.aof 在每个节点上配置对应的文件,6个节点都配置。
save save 900 1 save 300 10 save 60 10000 Master和slave均开启
FLUSHALL rename-command FLUSHALL "" Master和Slave上都禁用
FLUSHDB rename-command FLUSHDB "" Master和Slave上都禁用
KEYS rename-command KEYS Master和Slave上都禁用

实际测试时发现AOF持久化方式需要使用 flushall 命令,如果要禁用这三个不安全命令,只能在配置文件中关闭AOF appendonly=no

2)  安装zlib, openssl和 ruby

wget ftp://ftp.openssl.org/source/openssl-1.1.0f.tar.gz
gzip -d  openssl-1.1.0f.tar.gz
tar -xvf openssl-1.1.0f
cd openssl-1.1.0f
./config --prefix=/usr/local/openssl –fPIC
make
make install
mv /usr/bin/openssl ~
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1 #centos6.9执行此命令
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1 #centos6.9执行此命令
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/local/lib64:/usr/lib64">> /etc/profile  #centos6.9执行此命令

安装zlib-1.2.11
wget http://www.zlib.net/zlib-1.2.11.tar.gz
gzip -d zlib-1.2.11.tar.gz
tar -xvf zlib-1.2.11.tar 
cd zlib-1.2.11
./configure --prefix=/usr/local/zlib
make
make install

wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.gz
gzip -d ruby-2.4.1.tar.gz
tar -xvf ruby-2.4.1.tar
cd ruby-2.4.1
./configure --prefix=/opt/software/ruby --with-openssl
make
sudo make install

sudo ln -s /opt/software/ruby/bin/ruby /usr/bin/ruby
sudo ln -s /opt/software/ruby/bin/gem /usr/bin/gem

#centos7.3执行以下命令,centos6.9无需执行
进入ruby源码[/tmp/ruby-4.0.1]目录下的ext/openssl
sudo ruby extconf.rb --with-openssl-include=/usr/local/openssl/include/ --with-openssl-lib=/usr/local/openssl/lib
sudo ln -s /tmp/ruby-4.0.1/include /
sudo make
sudo make install
#centos7.3执行以上命令


3)  安装ruby 和redis集成
gem install redis 

4)  加入集群(只需要在一个节点上执行一次)
执行前请关闭所有节点上的防火墙。以下为准生产环境启动集群过程,生产环境类似。
cp /opt/software/redis/redis-4.0.1/src/redis-trib.rb /opt/software/redis/redis-trib
cd /opt/software/redis
./redis-trib create --replicas 1 10.255.12.153:16379 10.255.12.153:16380 10.255.12.154:16381 10.255.12.154:16382 10.255.12.155:16383 10.255.12.155:16384


5)  访问集群
   cd /opt/software/redis/
   #IP和端口可以为6个节点中任意ip或port
   ./redis-cli -c -h 10.255.12.153 -p 16379   
   cluster nodes