企业网站维护工作,网站一直不被收录,怎样进网站空间服务器,旅游网站论文目录
1. 准备环境:
2. 简介:
- 2.1 前言:
- 2.2 Redis集群架构实现了对redis的水平扩容
- 2.3 redis cluster集群原理
3. 搭建后特别需要注意的问题
-3.1 [重点]: 如果一个服务出现故障: 是否可以继续提供服务???
--- 3.1.1 如果集群中故障re…目录
1. 准备环境:
2. 简介:
- 2.1 前言:
- 2.2 Redis集群架构实现了对redis的水平扩容
- 2.3 redis cluster集群原理
3. 搭建后特别需要注意的问题
-3.1 [重点]: 如果一个服务出现故障: 是否可以继续提供服务???
--- 3.1.1 如果集群中故障redis服务存在主从服务
--- 3.1.2 如果redis集群中没有按官方推荐的去做主从备份
- 3.2 理解:
--- 3.2.1 修改配置 redis.conf
- 3.3 单服务器部署多个节点是否会影响带宽
4. 实际操作
- 4.1 创建文件夹
- 4.2 进入目录
- 4.3 创建模板 -- 4.3.1 文件输入内容
--- 4.3.2 模板注释
--- 4.3.3 特别注意宿主机ip
- 4.4 在当前目录下操作
- 4.5 创建docker 容器
- 4.6 进入redis-8010容器
- 4.7 创建redis-cluster集群配置 - 4.8 搭建成功了, 进入集群redis查看(内网ip)
- 4.9 测试,如图所示, 也就解释了上述问题
5.出现异常, 执行下面重新来过
下一篇: java使用redis集群进行操作 1. 准备环境: 云服务器虚拟机也可以, centos7.9, docker-ce , 有redis镜像 2. 简介:
- 2.1 前言(云服务器请与06配合使用): 传送门: 06-redis集群模式(中) 项目测试的云服务ip变内网等(解决大多数问题) 主从模式 哨兵模式, 都会在集群模式中体现出来, 官方推荐集群最少三主三从 6个redis服务 - 2.2 Redis集群架构实现了对redis的水平扩容 即启动N个redis节点将整个数据分布存储在这N个redis节点中每个节点存储总数据的1/N。redis集群通过分区提供一定程度的可用性即使集群中有一部分节点失效或无法进行通讯集群也可以继续处理命令请求。 - 2.3 redis cluster集群原理 redis cluster集群默认16384个hash槽,集群搭建成功之后,需要给每一个主节点分配hash槽。当外部数据插入的时候,会对key进行crc16然后对16384取模,这样就计算出哪个节点对该数据进行管理。创建集群时就已经分配哈希槽, 如果采用的3主3从的结构,主从模式通过哨兵模式,实现类主服务故障自动切换, 进而实现类服务的高可用 3. 搭建后特别需要注意的问题
-3.1 [重点]: 如果一个服务出现故障: 是否可以继续提供服务???
--- 3.1.1 如果集群中故障redis服务存在主从服务 那么访问的时候回访问从redis服务集群正常运行, 参考主从哨兵机制, 重新选举master 一般30秒 --- 3.1.2 如果redis集群中没有按官方推荐的去做主从备份 其中有一台redis服务故障挂掉emm, 会导致整个集群则都不能使用因为Redis集群的时候每一个Redis节点保存的数据不一样如果一个节点有问题则整个数据就缺失。 - 3.2 理解: 假设是一个云平台, 每个数据存在不同服务里 其中正好存你的数据服务gg了, 并且还没从服务重新选举, emm 其他人没影响需要做一下配置 , 你的数据查不出来了 --- 3.2.1 修改配置 redis.conf 取决于redis.conf中的参数cluster-require-full-coverage 如果某一段插槽的主从都挂掉而cluster-require-full-coverage为yes 整个集群都挂掉 如果某一段插槽的主从都挂掉而cluster-require-full-coverage为no 该插槽数据全都不能使用也无法存储。 - 3.3 单服务器部署多个节点是否会影响带宽 相当会了 详细介绍引用他人文章了: Redis Cluster集群优势劣势已经介绍 4. 实际操作
- 4.1 创建文件夹
mkdir -p /usr/local/src/docker/redis-cluster
- 4.2 进入目录
cd /usr/local/src/docker/redis-cluster- 4.3 创建模板
vim redis-cluster.tmpl -- 4.3.1 文件输入内容
port ${PORT}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 10.0.4.*
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
bind 0.0.0.0
protected-mode no
--- 4.3.2 模板注释 port: 节点端口(对外通信) cluster-enabled: 开启集群 cluster-config-file: 集群的配置是 nodes.conf cluster-node-timeout连接超时时间5000毫秒 cluster-announce-ip宿主机ip cluster-announce-port集群节点映射端口 cluster-announce-bus-port集群总线端口 appendonly持久化模式 aof是否开启 --- 4.3.3 特别注意宿主机ip 1 可以是内网ip(如果想远端必须是公网ip) ps: 但是公网ip需要进行下面操作: 传送门: 06-redis集群模式(中) 项目测试的云服务ip变内网等(解决大多数问题) 2 可以使用域名解析 3 不可以使用172.0.0.1 - 4.4 在当前目录下操作 for port in $(seq 8010 8015); \
do \mkdir -p ./${port}/conf \ PORT${port} envsubst ./redis-cluster.tmpl ./${port}/conf/redis.conf \ mkdir -p ./${port}/data; \
done解释一下: shell脚本 循环 参数传递 生成配置文件 - 4.5 创建docker 容器
for port in $(seq 8010 8015); \
do \docker run -it -d -p ${port}:${port} -p 1${port}:1${port} \--privilegedtrue -v /usr/local/src/docker/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \--privilegedtrue -v /usr/local/src/docker/redis-cluster/${port}/data:/data \--restart always --name redis-${port} --net redis-net \--sysctl net.core.somaxconn1024 redis redis-server /usr/local/etc/redis/redis.conf; \
done
- 4.6 进入redis-8010容器
docker exec -it redis-8010 bash
- 4.7 创建redis-cluster集群配置
redis-cli --cluster create 10.0.4.*:8010 10.0.4.*:8011 10.0.4.*:8012 10.0.4.*:8013 10.0.4.*:8014 10.0.4.*:8015 --cluster-replicas 1 - 4.8 搭建成功了, 进入集群redis查看(内网ip)
redis-cli -c -h 10.0.4.* -p 8010 cluster nodes #查看集群节点数 cluster info #查看集群基本信息 - 4.9 测试,如图所示, 也就解释了上述问题 5.出现异常, 执行下面重新来过 批量删除容器 批量删除目录挂载 docker ps -a | grep -i redis-801* | awk {print $1} | xargs docker stop
docker ps -a | grep -i redis-801* | awk {print $1} | xargs docker rm -f#shell脚本 删除redis容器
for i in $(seq 8010 8015); \
do docker rm -f redis-${i}; \
done;rm -rf 801{0..5}/conf/redis.conf
rm -rf 801{0..5} [留下拓展, 正式生产环境 配置密码等配置, 后续补充]
预告06篇: 06-redis集群模式(中) 项目测试的云服务ip变内网等(解决大多数问题)
预告07篇: java使用redis集群进行操作, 常规配置解释等