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中) |
安装软件版本:
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