最近在开始准备做毕设。楼主实习的公司为传统行业,技术太老了。。只能自己慢慢找资料摸索新东西,打算用spring boot+spring cloud+redis+es+mysql+docker做个web游戏后端服务。。打算使用docker来部署环境部署完es和mysql准备部署redis。。研究了一下docker的安装部署redis集群。。查了些资料不靠谱,退而求其次还是用普通安装包的方式来部署,而网上的redis集群部署版本老旧 而且很麻烦坑也很多,研究了一天,部署成功了。。将该方法记录下来给大家分享。
我的项目由于自己比较穷只有一台笔记本,还好配置还行。。自己装了个VM ware workstation 然后装了三个centos7 ,每个分配4G内存,关闭了防火墙和selinux 而且配置的网络环境为nat转发,并且改了静态ip三台的ip分别为:192.168.153.128,192.168.153.129,192.168.153.130保证三台机子可以互相ping通,并且跟宿主机可以ping通,同一网段不用再废话了。。
下面正文开始:
首先,我的构思是三台虚拟机,三主三从,每个机子部署一个主master还有一个备的slaver,然后把三个机子整合为一个cluster。
架构:
一.安装redis
1.下载redis
打开redis官网 https://redis.io/ 下载最新版
1.cd /usr/local/src
2. wget http://download.redis.io/releases/redis-5.0.2.tar.gz
2.编译安装redis
需要先安装gcc编译器
yum -y install gcc
解压redis包 然后编译安装
tar -zxvf redis-5.0.2.tar.gz
cd redis-5.0.2
make && make install
同样的操作去给另外两条机器安装redis
二. 创建节点
1. 我选择在/usr/local下创建了一个redis-cluster文件夹用于存放redis节点的配置文件(redis.conf)
mkdir /usr/local/redis-cluster
cd /usr/local/redis-cluster
mkdir 9000 9001
cp /usr/local/redis-5.0.2/redis.conf /usr/local/redis-cluster/9000
cp /usr/local/redis-5.0.2/redis.conf /usr/local/redis-cluster/9001
2.修改配置文件(9000和9001文件夹下各一个配置文件 都需要修改,9001参照9000的配置只需要把端口改了)
daemonize yes //守护线程 ,后台运行redis
pidfile /var/run/redis_9000.pid
port 9000 //每个节点的端口号
cluster-enabled yes //开启集群模式
cluster-config-file nodes_9000.conf //集群节点的配置
cluster-node-timeout 5000 //节点请求超时时间
appendonly yes //aof日志每一个操作都记录模式bind 0.0.0.0 //开启网络,保证其他网络可以访问该机子
三. 分发该配置到另外两台机器
我选择了使用scp命令进行文件的分发。。真的很好用。
scp -r /usr/local/redis-cluster 192.168.153.129:/usr/local
然后输入root密码。
scp -r /usr/local/redis-cluster 192.168.153.130:/usr/local
然后输入root密码。
四. 启动每台机器上的两个节点
cd /usr/loacl/src/
redis-server /usr/local/redis-cluster/9000/redis.conf
redis-server /usr/local/redis-cluster/9001/redis.conf
同样的操作去另外两条机器启动剩下的四个节点。
五. 创建集群
redis5.0真心舒服 集群创建方式改为了C编写的redis-cli创建,不用再安装麻烦的ruby(需要安装一些库,而且cenos7 yum -y install ruby 默认安装的ruby版本是2.0 而gem install redis 需要的ruby最低2.2上网看了些资料 真的懒得折腾了 5.0 !!!舒服!!!)了。
cd /usr/local/src/redis-5.0.2
redis-cli --cluster create 192.168.153.128:9000 192.168.153.129:9000 192.168.153.130:9000 192.168.153.128:9001 192.168.153.129:9001 192.168.153.130:9001 --cluster-replicas 1 //创建集群,--cluster-replicas 1 指定从库数量1
//创建顺序三个主,三个从,前面三个是主后面三个是从
启动后,可看到成功信息,如下:
[root@hadoop01 local]# redis-cli --cluster create 192.168.153.128:9000 192.168.153.129:9000 192.168.153.130:9000 192.168.153.128:9001 192.168.153.129:9001 192.168.153.130:9001 --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 192.168.153.129:9001 to 192.168.153.128:9000
Adding replica 192.168.153.128:9001 to 192.168.153.129:9000
Adding replica 192.168.153.130:9001 to 192.168.153.130:9000
>>> Trying to optimize slaves allocation for anti-affinity
[OK] Perfect anti-affinity obtained!
M: 274618a39848cd3e7c8fb0476703ac663eb4f098 192.168.153.128:9000
slots:[0-5460] (5461 slots) master
M: b6eef47101d34c6f6905ea65467186051374f38d 192.168.153.129:9000
slots:[5461-10922] (5462 slots) master
M: 76123e02af1a85ce730e12431a8fdc8aa28a0b2c 192.168.153.130:9000
slots:[10923-16383] (5461 slots) master
S: 90734168c2e428ad1cfd70ce2b9506708b6f548b 192.168.153.128:9001
replicates b6eef47101d34c6f6905ea65467186051374f38d
S: 3c17d33fd0270a711e3e00c1d95f4aa16ec2cc88 192.168.153.129:9001
replicates 76123e02af1a85ce730e12431a8fdc8aa28a0b2c
S: 067da7a5d5e6b63b5617b18cf389ffa153b48c09 192.168.153.130:9001
replicates 274618a39848cd3e7c8fb0476703ac663eb4f098
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.153.128:9000)
M: 274618a39848cd3e7c8fb0476703ac663eb4f098 192.168.153.128:9000
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: 76123e02af1a85ce730e12431a8fdc8aa28a0b2c 192.168.153.130:9000
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: 3c17d33fd0270a711e3e00c1d95f4aa16ec2cc88 192.168.153.129:9001
slots: (0 slots) slave
replicates 76123e02af1a85ce730e12431a8fdc8aa28a0b2c
M: b6eef47101d34c6f6905ea65467186051374f38d 192.168.153.129:9000
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 067da7a5d5e6b63b5617b18cf389ffa153b48c09 192.168.153.130:9001
slots: (0 slots) slave
replicates 274618a39848cd3e7c8fb0476703ac663eb4f098
S: 90734168c2e428ad1cfd70ce2b9506708b6f548b 192.168.153.128:9001
slots: (0 slots) slave
replicates b6eef47101d34c6f6905ea65467186051374f38d
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
redis集群搭建完毕。
至此。。redis集群搭建完毕了。。然后就是jedis来连接redis集群了
不是本片内容重点。。就先省略了。
如果有什么错误的地方,可以在下面留言指出 。 关于原理这部分楼主是自己了解过之后才来进行本篇的实践。。网上原理有很多,靠谱的实践缺很少。。不要眼高手低了,就有点low了。。