文章目录
redis 集群
1、规划
序号 | ip:服务端口 | 域名 | 主/从 | 集群端口(服务端口+10000) |
---|---|---|---|---|
1 | 192.168.85.151:7111 | redis1 | m1 | 17111 |
2 | 192.168.85.152:7112 | redis2 | m2 | 17112 |
3 | 192.168.85.153:7113 | redis3 | m3 | 17113 |
4 | 192.168.85.154:7114 | redis4 | s1 | 17114 |
5 | 192.168.85.155:7115 | redis5 | s2 | 17115 |
6 | 192.168.85.156:7116 | redis6 | s3 | 17116 |
1.1 开启防火墙端口
1#
firewall-cmd --add-port=7111/tcp --zone=public --permanent
firewall-cmd --add-port=17111/tcp --zone=public --permanent
systemctl restart firewalld
2#
firewall-cmd --add-port=7112/tcp --zone=public --permanent
firewall-cmd --add-port=17112/tcp --zone=public --permanent
systemctl restart firewalld
3#
firewall-cmd --add-port=7113/tcp --zone=public --permanent
firewall-cmd --add-port=17113/tcp --zone=public --permanent
systemctl restart firewalld
4#
firewall-cmd --add-port=7114/tcp --zone=public --permanent
firewall-cmd --add-port=17114/tcp --zone=public --permanent
systemctl restart firewalld
5#
firewall-cmd --add-port=7115/tcp --zone=public --permanent
firewall-cmd --add-port=17115/tcp --zone=public --permanent
systemctl restart firewalld
6#
firewall-cmd --add-port=7116/tcp --zone=public --permanent
firewall-cmd --add-port=17116/tcp --zone=public --permanent
systemctl restart firewalld
1.2 安装
安装目录:
/usr/local/redis3
编译和安装需要的包
yum install gcc tcl wget -y
下载安装
mkdir /usr/local/redis3
cd /usr/local/src
wget http://download.redis.io/releases/redis-3.0.3.tar.gz
tar vxf redis-3.0.3.tar.gz
cd redis-3.0.3
make PREFIX=/usr/local/redis3 install
1.3 创建配置
1.3 创建配置
1#
[root@redis1 bin]#
mkdir -p /usr/local/redis3/cluster/7111
2#
[root@redis2 bin]#
mkdir -p /usr/local/redis3/cluster/7112
3#
[root@redis3 bin]#
mkdir -p /usr/local/redis3/cluster/7113
4#
[root@redis4 bin]#
mkdir -p /usr/local/redis3/cluster/7114
5#
[root@redis5 bin]#
mkdir -p /usr/local/redis3/cluster/7115
6#
[root@redis6 bin]# mkdir -p /usr/local/redis3/cluster/7116
1.4 配置选项说明
配置选项 | 选项值 | 说明 |
---|---|---|
daemonize | yes | 是否作为守护进程 |
pidfile | /var/run/redis-7111.pid | 默认为:/var/run/redis.pid |
port | 7111 | 监听端口,默认为6379 |
databases | 1 | 可用数据库数,默认为16,建议使用一个 |
cluster-enabled | yes | 打开redis集群 |
cluster-config-file | /usr/local/redis3/cluster/7111/nodes.conf | 集群配置文件(启动自动生成),不用人为干预 |
cluster-node-timeout | 15000 | 节点间互联超时,毫秒 |
cluster-migration-barrier | 1 | 数据迁移的副本临界数,一个主节点在拥有多个好的从节点的时候就要割让一个从节点出来给另外一个没有任何从节点的主节点 |
cluster-require-full-coverage | yes | 如果某一些key space 没有被集群中的任何节点覆盖,集群将停止接受写入 |
appendonly | yes | 启动 aof持久化方式,因为redis本身同步文件是按照save条件来同步的,所以有的数据会再一段时间内只存在于内存中 |
1.5 上传配置文件
1.6 安装ruby rubygems
yum install ruby rubygems -y
gem install -redis 安装的时候ruby 版本过低
yum install -y curl
curl -L get.rvm.io | bash -s stable
source /usr/local/rvm/scripts/rvm
rvm install 2.4.0
rvm remove 2.0.0
#安装redis 插件
gem install redis
1.7 写脚本 批量启动redis
#!/bin/bash
for i in 1 2 3 4 5 6
do
ssh root@192.168.85.15$i "source /etc/profile;/usr/local/redis3/bin/redis-server /usr/local/redis3/cluster/711$i/redis-711$i.conf;ps -ef |grep redis"
echo "$i";
done
1.8 配置redis集群,配置成功
[root@redis1 src]# cp redis-trib.rb /usr/local/bin/redis-trib
[root@redis1 src]# redis-trib create --replicas 1 192.168.85.151:7111 192.168.85.152:7112 192.168.85.153:7113 192.168.85.154:7114 192.168.85.155:7115 192.168.85.156:7116
[root@redis1 ~]# redis-trib create --replicas 1 192.168.85.151:7111 192.168.85.152:7112 192.168.85.153:7113 192.168.85.154:7114 192.168.85.155:7115 192.168.85.156:7116
>>> Creating cluster
Connecting to node 192.168.85.151:7111: OK
Connecting to node 192.168.85.152:7112: OK
Connecting to node 192.168.85.153:7113: OK
Connecting to node 192.168.85.154:7114: OK
Connecting to node 192.168.85.155:7115: OK
Connecting to node 192.168.85.156:7116: OK
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.85.151:7111
192.168.85.152:7112
192.168.85.153:7113
Adding replica 192.168.85.154:7114 to 192.168.85.151:7111
Adding replica 192.168.85.155:7115 to 192.168.85.152:7112
Adding replica 192.168.85.156:7116 to 192.168.85.153:7113
M: e04868606198c01ee9fbd0ea712f2904cc108ae0 192.168.85.151:7111
slots:0-5460 (5461 slots) master
M: ba914dbab029a06fe84354644ca0090f743bdcd2 192.168.85.152:7112
slots:5461-10922 (5462 slots) master
M: ba285f4d3a6278f11531f9e7150e9da358452871 192.168.85.153:7113
slots:10923-16383 (5461 slots) master
S: 7ef267c2d8f15d38cefb538b32cb830f10482cd1 192.168.85.154:7114
replicates e04868606198c01ee9fbd0ea712f2904cc108ae0
S: fd4013211413b9d18515f86083f68f6ec58a7543 192.168.85.155:7115
replicates ba914dbab029a06fe84354644ca0090f743bdcd2
S: d7b491bfb96e4914764771730981ff4b68f63c48 192.168.85.156:7116
replicates ba285f4d3a6278f11531f9e7150e9da358452871
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.85.151:7111)
M: e04868606198c01ee9fbd0ea712f2904cc108ae0 192.168.85.151:7111
slots:0-5460 (5461 slots) master
M: ba914dbab029a06fe84354644ca0090f743bdcd2 192.168.85.152:7112
slots:5461-10922 (5462 slots) master
M: ba285f4d3a6278f11531f9e7150e9da358452871 192.168.85.153:7113
slots:10923-16383 (5461 slots) master
M: 7ef267c2d8f15d38cefb538b32cb830f10482cd1 192.168.85.154:7114
slots: (0 slots) master
replicates e04868606198c01ee9fbd0ea712f2904cc108ae0
M: fd4013211413b9d18515f86083f68f6ec58a7543 192.168.85.155:7115
slots: (0 slots) master
replicates ba914dbab029a06fe84354644ca0090f743bdcd2
M: d7b491bfb96e4914764771730981ff4b68f63c48 192.168.85.156:7116
slots: (0 slots) master
replicates ba285f4d3a6278f11531f9e7150e9da358452871
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@redis1 ~]# ./redis-cli -c -p 7111
#登录测试,集群成功
1.9 测试
#通过登录测试 进行 插入key 和查询key ,
#数据会根据不同的solt 的值的返回自动转向定位到值
[root@redis1 ~]# ./redis-cli -c -p 7111