redis 集群 哨兵

分布存储机制-槽

redis-cluster 把所有的物理节点映射到[0-16383]slot 上,cluster 负责维护

Redis 集群中内置了(0-16383) 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节

单机redis安装

0.安装环境
yum install gcc-c++
1.获取redis资源
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
2.解压压缩包   
tar zxvf redis-4.0.10.tar.gz
3.c语言编译 把redis编译过来
cd redis-4.0.10 
make
4.指定安装路径
make install PREFIX=/指定安装路径

5.修改为后台运行 进入解压的文件复制配置文件redis.conf到安装目录
cp redis.conf /安装redis的据对路径bin下
修改redis.conf的 daemonize的属性 改为 yes

cluster-enabled yes打开集群
requirepass 密码设定
appendonly yes 打开aof存档 每秒保存 快照模式容易丢失数据或者
appendonlync always:总是执行
appendonlync everysec:每秒钟执行(默认)
appendonlync no:不执行
自动压缩文件
auto -aof -rewrite-percentage 100
auto -aof -rewrite-size 64mb

安装redis集群 主节点需要基数

1.进入解码包安装6个节点
make install PREFIX=/usr/local/redis-cluster/redis-1
make install PREFIX=/usr/local/redis-cluster/redis-2
make install PREFIX=/usr/local/redis-cluster/redis-3
make install PREFIX=/usr/local/redis-cluster/redis-4
make install PREFIX=/usr/local/redis-cluster/redis-5
make install PREFIX=/usr/local/redis-cluster/redis-6
2.复制解码包的配置文件
cp redis.conf /usr/local/redis-cluster/redis-1/bin
cp redis.conf /usr/local/redis-cluster/redis-2/bin
cp redis.conf /usr/local/redis-cluster/redis-3/bin
cp redis.conf /usr/local/redis-cluster/redis-4/bin
cp redis.conf /usr/local/redis-cluster/redis-5/bin
cp redis.conf /usr/local/redis-cluster/redis-6/bin
3.修改节点端口 打开集群
vi /usr/local/redis-cluster/redis-1/bin/redis.conf     7001
vi /usr/local/redis-cluster/redis-2/bin/redis.conf     7002
vi /usr/local/redis-cluster/redis-3/bin/redis.conf     7003
vi /usr/local/redis-cluster/redis-4/bin/redis.conf     7004
vi /usr/local/redis-cluster/redis-5/bin/redis.conf     7005
vi /usr/local/redis-cluster/redis-6/bin/redis.conf     7006
port  cluster-enabled 去掉注释
快速查找在不编辑的情况 /查找的内容   回车
4.启动各个节点服务
cd /usr/local/redis-cluster/redis-1/bin/
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-2/bin/
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-3/bin/
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-4/bin/
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-5/bin/
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-6/bin/
./redis-server redis.conf
6.查看服务启动情况
ps -ef | grep redis
7.确保防火墙关闭
 systemctl stop firewalld
8.安装ruby
yum install ruby
yum install rubygems
9.安装环境
yum install ruby
yum install rubygems
gem install redis-3.2.0.gem
10.在解码包src文件下执行
./redis-trib.rb create --replicas 1 192.168.25.140:7001 192.168.25.140:7002 192.168.25.140:7003
192.168.25.140:7004 192.168.25.140:7005 192.168.25.140:7006

application.yml 节点配置 所有的主从都要加以防其中一个主节点宕机,从节点变主节点

spring  
  redis:
    cluster:
      nodes:
      - 192.168.0.*:7001
      - 192.168.0.*:7002
      - 192.168.0.*:7003
      - 192.168.0.*:7004
      - 192.168.0.*:7005
      - 192.168.0.*:7006

 edis 哨兵 复制 sentinel.conf到主节点bin里 修改成监听节点的IP port端口节点数量

cp sentinel.conf /usr/local/redis-cluster/redis1/bin/
vi /usr/local/redis-cluster/redis1/bin/sentinel.conf
修改成监听节点的IP port端口节点数量  例如:
sentinel monitor mymaster 192.68.0.* 7001 2
启动哨兵
./redis-sentinel sentinel.conf

 

首先我们要了解docker的网络类型有:

None:不为容器配置任何网络功能,没有网络 --net=none

Container:与另一个运行中的容器共享Network Namespace,--net=container:containerID

Host:与主机共享Network Namespace,--net=host

Bridge:Docker设计的NAT网络模型(默认类型)

重点关注下Host类型:

host模式创建的容器没有自己独立的网络命名空间,是和物理机共享一个Network Namespace,并且共享物理机 的所有端口与IP。但是它将容器直接暴露在公共网络中,是有安全隐患的。

我们这里使用host网络进行搭建集群:

#拉取镜像

docker pull redis:5.0.2

#创建容器

docker create --name redis-node01 --net host -v /data/redis-data/node01:/data redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-01.conf --port 6379
docker create --name redis-node02 --net host -v /data/redis-data/node02:/data redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-02.conf --port 6380
docker create --name redis-node03 --net host -v /data/redis-data/node03:/data redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-03.conf --port 6381

#启动容器
docker start redis-node01 redis-node02 redis-node03

#进入redis-node01容器进行操作
docker exec -it redis-node01 /bin/bash

#组建集群(注意端口的变化)
redis-cli --cluster create 192.188.215.130:6379 192.188.215.130:6380 192.188.215.130:6381 --cluster-replicas 0

查看集群信息:

root@91df3e5228b1:/data# redis-cli

127.0.0.1:6379> CLUSTER NODES

 

posted @ 2021-04-15 03:33  chen1777  阅读(61)  评论(0)    收藏  举报