单机启用多端口部署redis集群

环境
OS:Centos 7
db:4.0.14
角色 机器ip
主 192.168.1.84 6379
从 192.168.1.84 6380
主 192.168.1.84 6381
从 192.168.1.84 6382
主 192.168.1.84 6383
从 192.168.1.84 6384

 

1.下载安装介质
我这里下载的是redis-4.0.14.tar.gz
下载地址:
http://download.redis.io/releases/

 

2.解压介质并安装
[root@localhost soft]# yum install tcl
[root@dev_test_redis redis-4.0.14]# yum instal gcc
[root@dev_test_redis redis-4.0.14]#yum install gcc-c++ -y
[root@localhost soft]# tar -xvf redis-4.0.14.tar.gz
[root@localhost soft]# cd redis-4.0.14
[root@localhost redis-4.0.14]# make

报错的解决办法:
In file included from adlist.c:34:0:
zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
#include <jemalloc/jemalloc.h>
^
编译中断。
make[1]: *** [adlist.o] 错误 1
make[1]: 离开目录“/soft/redis-4.0.14/src”
make: *** [all] 错误 2


make MALLOC=libc
make test


[root@localhost redis-4.0.14]# make test
没有问题的话,会输入如下信息
\o/ All tests passed without errors!

Cleanup: may take some time... OK
make[1]: Leaving directory `/soft/redis-4.0.14/src'
You have mail in /var/spool/mail/root

安装到指定的目录,默认是安装在/usr/bin目录,我们这里统一安装到/home/middle/redis目录,该目录不用提前创建
[root@localhost redis-4.0.14]# cd src
[root@localhost src]# make PREFIX=/usr/local/services/redis install
Hint: It's a good idea to run 'make test' ;)
INSTALL install
INSTALL install
INSTALL install
INSTALL install
INSTALL install

拷贝 ./scr/redis-trib.rb到指定的目录,该脚本是用来创建集群用的
[root@localhost src]# cp redis-trib.rb /usr/local/services/redis/

 

3.创建目录并修改相应权限
[root@localhost src]# mkdir -p /home/middle/redis_01/conf
[root@localhost src]# mkdir -p /home/middle/redis_01/data
[root@localhost src]# mkdir -p /home/middle/redis_01/logs
[root@localhost src]# mkdir -p /home/middle/redis_01/run

创建数据目录
[root@localhost src]#mkdir -p /home/middle/redis_01/data/redis_6379
[root@localhost src]#mkdir -p /home/middle/redis_01/data/redis_6380
[root@localhost src]#mkdir -p /home/middle/redis_01/data/redis_6381
[root@localhost src]#mkdir -p /home/middle/redis_01/data/redis_6382
[root@localhost src]#mkdir -p /home/middle/redis_01/data/redis_6383
[root@localhost src]#mkdir -p /home/middle/redis_01/data/redis_6384

 

4.创建配置文件
vi /home/middle/redis_01/conf/6379.conf

内如如下:

复制代码
daemonize yes
bind 192.168.1.84
protected-mode yes
port 6379
tcp-backlog 511
timeout 300
tcp-keepalive 300
supervised no
pidfile "/home/middle/redis_01/run/redis_6379.pid"
loglevel notice
logfile "/home/middle/redis_01/logs/redis_6379.log"
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
dir "/home/middle/redis_01/data/redis_6379"
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
cluster-enabled yes
cluster-config-file "6379.conf"
cluster-node-timeout 5000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
##masterauth "hxl2018"
##requirepass "hxl2018"
maxmemory-policy allkeys-lfu
maxmemory 2gb
maxmemory-samples 5
复制代码

密码先注释掉,等创建了集群后再启用

拷贝 6379.conf 生成 6380.conf 配置文件
cd /home/middle/redis_01/conf
cp 6379.conf 6380.conf
cp 6379.conf 6381.conf
cp 6379.conf 6382.conf
cp 6379.conf 6383.conf
cp 6379.conf 6384.conf


替换修改配置文件的内容
sed -i 's/6379/6380/g' /home/middle/redis_01/conf/6380.conf
sed -i 's/6379/6381/g' /home/middle/redis_01/conf/6381.conf
sed -i 's/6379/6382/g' /home/middle/redis_01/conf/6382.conf
sed -i 's/6379/6383/g' /home/middle/redis_01/conf/6383.conf
sed -i 's/6379/6384/g' /home/middle/redis_01/conf/6384.conf

 

-----------------启动---------------------------------
/usr/local/services/redis/bin/redis-server /home/middle/redis_01/conf/6379.conf
/usr/local/services/redis/bin/redis-server /home/middle/redis_01/conf/6380.conf
/usr/local/services/redis/bin/redis-server /home/middle/redis_01/conf/6381.conf
/usr/local/services/redis/bin/redis-server /home/middle/redis_01/conf/6382.conf
/usr/local/services/redis/bin/redis-server /home/middle/redis_01/conf/6383.conf
/usr/local/services/redis/bin/redis-server /home/middle/redis_01/conf/6384.conf

 

查看进程情况

复制代码
[root@dev_test_redis redis_01]# ps -ef|grep redis
root      18778      1  0 11:50 ?        00:00:00 /usr/local/services/redis/bin/redis-server 192.168.1.84:6379 [cluster]
root      18783      1  0 11:50 ?        00:00:00 /usr/local/services/redis/bin/redis-server 192.168.1.84:6380 [cluster]
root      18788      1  0 11:51 ?        00:00:00 /usr/local/services/redis/bin/redis-server 192.168.1.84:6381 [cluster]
root      18793      1  0 11:51 ?        00:00:00 /usr/local/services/redis/bin/redis-server 192.168.1.84:6382 [cluster]
root      18798      1  0 11:51 ?        00:00:00 /usr/local/services/redis/bin/redis-server 192.168.1.84:6383 [cluster]
root      18803      1  0 11:51 ?        00:00:00 /usr/local/services/redis/bin/redis-server 192.168.1.84:6384 [cluster]
root      18808  18683  0 11:51 pts/0    00:00:00 grep --color=auto redis
复制代码

 

-------------------------------------------------------------------配置集群-------------------------------------------
[root@dev_test_redis redis_01]# /usr/local/services/redis/redis-trib.rb create --replicas 1 192.168.1.84:6379 192.168.1.84:6380 192.168.1.84:6381 192.168.1.84:6382 192.168.1.84:6383 192.168.1.84:6384
/usr/bin/env: ruby: 没有那个文件或目录

解决办法:
需要安装ruby
https://www.cnblogs.com/hxlasky/p/14734140.html

安装完成后重新创建创建集群命令

复制代码
[root@dev_test_redis soft]# /usr/local/services/redis/redis-trib.rb create --replicas 1 192.168.1.84:6379 192.168.1.84:6380 192.168.1.84:6381 192.168.1.84:6382 192.168.1.84:6383 192.168.1.84:6384
>>> Creating cluster
/opt/ruby/lib/ruby/gems/2.5.0/gems/redis-3.3.0/lib/redis/client.rb:459: warning: constant ::Fixnum is deprecated
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.1.84:6379
192.168.1.84:6380
192.168.1.84:6381
Adding replica 192.168.1.84:6383 to 192.168.1.84:6379
Adding replica 192.168.1.84:6384 to 192.168.1.84:6380
Adding replica 192.168.1.84:6382 to 192.168.1.84:6381
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 5b464c0092cd9949e9a61c4e6b88ac3976d061c3 192.168.1.84:6379
   slots:0-5460 (5461 slots) master
M: 7b60fa62b939127e6109d4a95a5a0ee417a36848 192.168.1.84:6380
   slots:5461-10922 (5462 slots) master
M: 385e0ff8f5d70e94d399cbaac729d1b52f3c11ad 192.168.1.84:6381
   slots:10923-16383 (5461 slots) master
S: 9ac6228cb71bdd70180bf58e53426e71d987ba4d 192.168.1.84:6382
   replicates 385e0ff8f5d70e94d399cbaac729d1b52f3c11ad
S: 5879fe798eab7328deb9b5841836625488a7e01f 192.168.1.84:6383
   replicates 5b464c0092cd9949e9a61c4e6b88ac3976d061c3
S: ad010914867982695a7c656663c936f40ff7cb25 192.168.1.84:6384
   replicates 7b60fa62b939127e6109d4a95a5a0ee417a36848
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join...
>>> Performing Cluster Check (using node 192.168.1.84:6379)
M: 5b464c0092cd9949e9a61c4e6b88ac3976d061c3 192.168.1.84:6379
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 9ac6228cb71bdd70180bf58e53426e71d987ba4d 192.168.1.84:6382
   slots: (0 slots) slave
   replicates 385e0ff8f5d70e94d399cbaac729d1b52f3c11ad
M: 385e0ff8f5d70e94d399cbaac729d1b52f3c11ad 192.168.1.84:6381
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: ad010914867982695a7c656663c936f40ff7cb25 192.168.1.84:6384
   slots: (0 slots) slave
   replicates 7b60fa62b939127e6109d4a95a5a0ee417a36848
S: 5879fe798eab7328deb9b5841836625488a7e01f 192.168.1.84:6383
   slots: (0 slots) slave
   replicates 5b464c0092cd9949e9a61c4e6b88ac3976d061c3
M: 7b60fa62b939127e6109d4a95a5a0ee417a36848 192.168.1.84:6380
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
复制代码

 

停掉每个节点,修改配置文件,启用密码认证
/usr/local/services/redis/bin/redis-cli -h 192.168.1.84 -p 6379 shutdown
/usr/local/services/redis/bin/redis-cli -h 192.168.1.84 -p 6380 shutdown
/usr/local/services/redis/bin/redis-cli -h 192.168.1.84 -p 6381 shutdown
/usr/local/services/redis/bin/redis-cli -h 192.168.1.84 -p 6382 shutdown
/usr/local/services/redis/bin/redis-cli -h 192.168.1.84 -p 6383 shutdown
/usr/local/services/redis/bin/redis-cli -h 192.168.1.84 -p 6384 shutdown


修改每个节点的配置文件,把每个节点的配置文件如下两项先注释掉
##masterauth "hxl2008"
##requirepass "hxl2008"

 

然后再次启动.
/usr/local/services/redis/bin/redis-server /home/middle/redis_01/conf/6379.conf
/usr/local/services/redis/bin/redis-server /home/middle/redis_01/conf/6380.conf
/usr/local/services/redis/bin/redis-server /home/middle/redis_01/conf/6381.conf
/usr/local/services/redis/bin/redis-server /home/middle/redis_01/conf/6382.conf
/usr/local/services/redis/bin/redis-server /home/middle/redis_01/conf/6383.conf
/usr/local/services/redis/bin/redis-server /home/middle/redis_01/conf/6384.conf

 

重新启动后,查看集群

/usr/local/services/redis/bin/redis-cli -c -h 192.168.1.84 -p 6379 -a yeemiao2018

复制代码
192.168.1.84:6379> cluster nodes
ad010914867982695a7c656663c936f40ff7cb25 192.168.1.84:6384@16384 slave 7b60fa62b939127e6109d4a95a5a0ee417a36848 0 1739340163000 6 connected
385e0ff8f5d70e94d399cbaac729d1b52f3c11ad 192.168.1.84:6381@16381 master - 0 1739340163000 3 connected 10923-16383
7b60fa62b939127e6109d4a95a5a0ee417a36848 192.168.1.84:6380@16380 master - 0 1739340163370 2 connected 5461-10922
5879fe798eab7328deb9b5841836625488a7e01f 192.168.1.84:6383@16383 slave 5b464c0092cd9949e9a61c4e6b88ac3976d061c3 0 1739340162000 5 connected
5b464c0092cd9949e9a61c4e6b88ac3976d061c3 192.168.1.84:6379@16379 myself,master - 0 1739340161000 1 connected 0-5460
9ac6228cb71bdd70180bf58e53426e71d987ba4d 192.168.1.84:6382@16382 slave 385e0ff8f5d70e94d399cbaac729d1b52f3c11ad 0 1739340161364 4 connected
192.168.1.84:6379> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:792
cluster_stats_messages_pong_sent:98
cluster_stats_messages_fail_sent:6
cluster_stats_messages_sent:896
cluster_stats_messages_ping_received:98
cluster_stats_messages_pong_received:97
cluster_stats_messages_fail_received:3
cluster_stats_messages_received:198
复制代码

 

###########################开机自启配置##########################################

1.把启动的脚步添加到 /etc/rc.local 文件

复制代码
[root@dev_test_redis ~]# more /etc/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
route add -net 0.0.0.0 gw 192.168.204.1

##redis测试集群1:redis_01
/usr/local/services/redis/bin/redis-server /home/middle/redis_01/conf/6379.conf
/usr/local/services/redis/bin/redis-server /home/middle/redis_01/conf/6380.conf
/usr/local/services/redis/bin/redis-server /home/middle/redis_01/conf/6381.conf
/usr/local/services/redis/bin/redis-server /home/middle/redis_01/conf/6382.conf
/usr/local/services/redis/bin/redis-server /home/middle/redis_01/conf/6383.conf
/usr/local/services/redis/bin/redis-server /home/middle/redis_01/conf/6384.conf
复制代码

 


2.赋予可执行权限
chmod +x /etc/rc.d/rc.local


3.重启验证
reboot

 

posted @   slnngk  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2020-02-12 goldengate12c不同步索引的处理办法
2019-02-12 wget下载阿里云RDS备份集
点击右上角即可分享
微信分享提示