linux centos7.8 安装redis缓存服务器 集群版
在处理高并发的时候,最大的问题就是数据库的压力,其中一种做法就是搭建一个独立的redis缓存服务器。
工具
- 系统:centos7.8
- 版本:redis6.0.9
- 神器:宝塔
前置条件
宝塔安装好:
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
随后在宝塔中把redis安装上,无脑操作就不作解释了。
开始配置
通常宝塔安装的服务都会在/www/server/下面,找到redis文件夹。
创建集群目录,redis-cluster(不限制名称,按你们自己喜欢的就可以)
创建需要的节点,通常要是偶数,也就是一主有一从的做法,当然想有别的做法各位自己尝试。另外就是,这本身的目的并不是在一个服务器上搞一个集群就完事了,正常情况下是多个服务器进行互联集群,步骤都一样,只是在其他服务器做同一个操作而已。其次栗子是创建6个节点也就是3主3从(自动分配)。
对应6个端口,7001,7002,7003,7004,7005,7006。
下一步:回到上一层文件夹也就是redis文件夹找到redis.conf,当然如果你们的集群文件夹跟我不一样那就自己找找。
把这个文件拷到各个节点的文件夹中。
然后对各个节点的redis.conf进行修改。
protected-mode no //关闭保护模式
port 7001 //端口
daemonize yes //redis后台运行
pidfile /var/run/redis_7001.pid //pidfile文件对应7001,7002,7003
appendonly no //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7001.conf //集群的配置 配置文件首次启动自动生成 7001,7002,7003,7004,7005,7006
cluster-node-timeout 5000 //请求超时 设置5秒够了
bind 192.168.1.2 127.0.0.1 //192.168.1.2 == 你的外网ip 此处是雷 切记要做好映射 否则集群无法创建
做好配置后写一键启动脚本startall.sh(懒人必备),此处有一雷,绝对不要用宝塔创建空文件来编写脚本,宝塔创建的sh中回车是算一个字符的,也就是按照windows的回车来算一个代码,会直接导致脚本运行失败。所以直接vim创建,然后:wq退出到宝塔编辑就可以,当然觉得你们手速快的话就直接vim编辑就可以了。
/www/server/redis/src/redis-server ./7001/redis.conf
/www/server/redis/src/redis-server ./7002/redis.conf
/www/server/redis/src/redis-server ./7003/redis.conf
/www/server/redis/src/redis-server ./7004/redis.conf
/www/server/redis/src/redis-server ./7005/redis.conf
/www/server/redis/src/redis-server ./7006/redis.conf
/www/server/redis/src/redis-server ../redis.conf
其中最后一行是关闭6379也就是单机版的redis,说白了还是懒,要关一起关要开一起开。
然后编辑一键关闭脚本shutdownall.sh,一个道理,vim创建。
redis-cli -h 127.0.0.1 -p 7001 shutdown
redis-cli -h 127.0.0.1 -p 7002 shutdown
redis-cli -h 127.0.0.1 -p 7003 shutdown
redis-cli -h 127.0.0.1 -p 7004 shutdown
redis-cli -h 127.0.0.1 -p 7005 shutdown
redis-cli -h 127.0.0.1 -p 7006 shutdown
redis-cli -h 127.0.0.1 -p 6379 shutdown
前面的bind已经将ip映射做好了,所以此处的ip直接就是127.0.0.1,而不是外网ip。
接下来就是startall.sh启动所有节点。
然后创建集群。
redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1
注意,5版本是个分水岭,这也是雷之一,5版本之前的创建集群方法是。
redis-cli --cluster create --cluster-replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006
注意这里还是127.0.0.1,因为做了映射,用外网ip会创建失败,当然可能也只是我没成功,你们试试?
具体如下:
[root@VM-0-14-centos redis-cluster]# redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 127.0.0.1:7005 to 127.0.0.1:7001
Adding replica 127.0.0.1:7006 to 127.0.0.1:7002
Adding replica 127.0.0.1:7004 to 127.0.0.1:7003
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 5a832ed146ddc2742a330e54543c8369d267936f 127.0.0.1:7001
slots:[0-5460] (5461 slots) master
M: bea9198d32d2e863bda79ac1d474cfb9baf9ad1e 127.0.0.1:7002
slots:[5461-10922] (5462 slots) master
M: e2aff10ce99a867e6e55751ebd0ee6e9328539d8 127.0.0.1:7003
slots:[10923-16383] (5461 slots) master
S: ea277c2353fbabd871dbd663b3ead0b30cc0994d 127.0.0.1:7004
replicates 5a832ed146ddc2742a330e54543c8369d267936f
S: c4cf78c158760b59b8417259aabc515df8b249e7 127.0.0.1:7005
replicates bea9198d32d2e863bda79ac1d474cfb9baf9ad1e
S: e9ee2325a1d895c459e4fbaec15033dc5e4d40ba 127.0.0.1:7006
replicates e2aff10ce99a867e6e55751ebd0ee6e9328539d8
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 127.0.0.1:7001)
M: 5a832ed146ddc2742a330e54543c8369d267936f 127.0.0.1:7001
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: bea9198d32d2e863bda79ac1d474cfb9baf9ad1e 127.0.0.1:7002
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
M: e2aff10ce99a867e6e55751ebd0ee6e9328539d8 127.0.0.1:7003
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: c4cf78c158760b59b8417259aabc515df8b249e7 127.0.0.1:7005
slots: (0 slots) slave
replicates bea9198d32d2e863bda79ac1d474cfb9baf9ad1e
S: ea277c2353fbabd871dbd663b3ead0b30cc0994d 127.0.0.1:7004
slots: (0 slots) slave
replicates 5a832ed146ddc2742a330e54543c8369d267936f
S: e9ee2325a1d895c459e4fbaec15033dc5e4d40ba 127.0.0.1:7006
slots: (0 slots) slave
replicates e2aff10ce99a867e6e55751ebd0ee6e9328539d8
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
测试集群
连接某个节点(-c必须加,雷之一):
redis-cli -h 127.0.0.1 -p 7002 -c
具体如下:
就证明集群创建成功,可以开始使用代码进行使用了。
单机版redis的测试就直接redis-cli就可以了。
到这里就结束了。
有其他交流的想法,可以加我创建的Q群:820080257