Redis哨兵集群创建脚本--v1
基础环境
操作系统版本 CentOS Linux release 7.6.1810 (Core)
Docker 版本 19.03.11, build 42e35e61f3
Redis 版本 3.2.3-alpine
网络配置使用docker macvlan ,创建命令如下:
docker network create -d macvlan --subnet=10.10.10.0/24 --gateway=10.10.10.1 -o parent=eth0 macnet
脚本内容如下:
参数解释:
cmd 定义redis容器启动命令
sentinel_cmd 定义sentinel容器启动命令
image 容器启动镜像
redis_conf redis容器配置文件
sentinel_conf sentinel容器配置文件
redis_quota redis容器cpu、内存配额
sentinel_quota sentinel容器cpu、内存配额
base_dir 脚本运行的家目录
base_conf_dir redis配置文件目录
envv 环境配置,为区分多套集群配置,暂时写死
#!/bin/bash
#Author: Jixson
#Date: 2020-07-02
cmd="/usr/local/bin/redis-server /usr/local/etc/redis/redis.conf"
sentinel_cmd="/usr/local/bin/redis-sentinel /usr/local/etc/redis/sentinel.conf"
image="redis:3.2.3-alpine"
redis_conf="/usr/local/etc/redis/redis.conf"
sentinel_conf="/usr/local/etc/redis/sentinel.conf"
redis_quota="-c2 -m 4g"
sentinel_quota="-c2 -m 1g"
base_dir="/jixson/redis"
base_conf_dir="${base_dir}/conf"
envv="gemini"
mkdir -p ${envv}
#Get IP address
#创建macvlan网络后,把可用IP写入ipmark文件,把已使用的IP写入ipmark_assigned
#由于macvlan自动分配的IP可能与局域网内的IP冲突,故实际使用时,可以使用--iprange参数,限制使用范围
master_ip=$(cat ipmark | head -1)
sed -i "/^${master_ip}/d" ipmark
echo "${master_ip} assigned" >> ipmark_assigned
slave_ip=$(cat ipmark | head -1)
sed -i "/^${slave_ip}/d" ipmark
echo "${slave_ip} assigned" >> ipmark_assigned
sentinel_ip01=$(cat ipmark | head -1)
sed -i "/^${sentinel_ip01}/d" ipmark
echo "${sentinel_ip01} assigned" >> ipmark_assigned
sentinel_ip02=$(cat ipmark | head -1)
sed -i "/^${sentinel_ip02}/d" ipmark
echo "${sentinel_ip02} assigned" >> ipmark_assigned
sentinel_ip03=$(cat ipmark | head -1)
sed -i "/^${sentinel_ip03}/d" ipmark
echo "${sentinel_ip03} assigned" >> ipmark_assigned
#声明主机,写入容器内的hosts
hn1="--add-host=redisdata01.biyao.com:${master_ip}"
hn2="--add-host=redisdata02.biyao.com:${slave_ip}"
hn3="--add-host=sentinel01.biyao.com:${sentinel_ip01}"
hn4="--add-host=sentinel02.biyao.com:${sentinel_ip02}"
hn5="--add-host=sentinel03.biyao.com:${sentinel_ip03}"
hosts="$hn1 $hn2 $hn3 $hn4 $hn5"
#配置文件可从官网获取,根据实际情况修改
#生成master conf
\cp -f "${base_conf_dir}/redis-master.conf" "${base_dir}/${envv}/redis-master.conf"
master_conf="${base_dir}/${envv}/redis-master.conf"
masterconf="-v ${master_conf}:${redis_conf}"
#生成slave conf
\cp -f "${base_conf_dir}/redis-slave.conf" "${base_dir}/${envv}/redis-slave.conf"
slave_conf="${base_dir}/${envv}/redis-slave.conf"
slaveconf="-v ${slave_conf}:${redis_conf}"
#生成sentinel conf
\cp -f "${base_conf_dir}/sentinel.conf" "${base_dir}/${envv}/sentinel01.conf"
sentinel01_conf="${base_dir}/${envv}/sentinel01.conf"
sentinel01conf="-v ${sentinel01_conf}:${sentinel_conf}"
\cp -f "${base_conf_dir}/sentinel.conf" "${base_dir}/${envv}/sentinel02.conf"
sentinel02_conf="${base_dir}/${envv}/sentinel02.conf"
sentinel02conf="-v ${sentinel02_conf}:${sentinel_conf}"
\cp -f "${base_conf_dir}/sentinel.conf" "${base_dir}/${envv}/sentinel03.conf"
sentinel03_conf="${base_dir}/${envv}/sentinel03.conf"
sentinel03conf="-v ${sentinel03_conf}:${sentinel_conf}"
#run redis
docker run -d --network macnet --ip=$master_ip $redis_quota $hosts --name redis-master ${masterconf} ${image} ${cmd}
docker run -d --network macnet --ip=$slave_ip $redis_quota $hosts --name redis-slave ${slaveconf} ${image} ${cmd}
#run sentinel
docker run -d --network macnet --ip=$sentinel_ip01 $sentinel_quota $hosts --name sentinel01 ${sentinel01conf} ${image} ${sentinel_cmd}
docker run -d --network macnet --ip=$sentinel_ip02 $sentinel_quota $hosts --name sentinel02 ${sentinel02conf} ${image} ${sentinel_cmd}
docker run -d --network macnet --ip=$sentinel_ip03 $sentinel_quota $hosts --name sentinel03 ${sentinel03conf} ${image} ${sentinel_cmd}
创建后的效果
Redis哨兵集群创建脚本--v1的更多相关文章
- Redis哨兵集群创建脚本--v2
1. 基础环境 操作系统版本 CentOS Linux release 7.6.1810 (Core) Docker 版本 19.03.11, build 42e35e61f3 Redis 版本 ...
- redis哨兵集群搭建
下载redis jar包redis-4.0.11.tar.gz放在/data/redis目录下 解压 命令:tar -zxvf redis-4.0.11.tar.gz 解压后如图所示 在/usr/lo ...
- Linux - redis哨兵集群实例
目录 Linux - redis哨兵集群实例 命令整理 配置流程 Linux - redis哨兵集群实例 命令整理 官网地址:http://redisdoc.com/ redis-cli info # ...
- helm部署Redis哨兵集群
介绍 Redis Sentinel集群是由若干Sentinel节点组成的分布式集群,可以实现故障发现.故障自动转移.配置中心和客户端通知. 如下图: Redis Sentinel 故障转移过程: 从这 ...
- 11.Redis 哨兵集群实现高可用
作者:中华石杉 Redis 哨兵集群实现高可用 哨兵的介绍 sentinel,中文名是哨兵.哨兵是 redis 集群机构中非常重要的一个组件,主要有以下功能: 集群监控:负责监控 redis mast ...
- python连接redis哨兵集群
一.redis集群模式有多种, 哨兵模式只是其中的一种实现方式, 其原理请自行谷歌或者百度 二.python 连接 redis 哨兵集群 1. 安装redis包 pip install redis 2 ...
- redis哨兵集群、docker入门
redis-sentinel主从复制高可用 Redis-Sentinel Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果m ...
- redis 哨兵集群原理及部署
复制粘贴自: https://www.cnblogs.com/kevingrace/p/9004460.html 请点击此链接查看原文. 仅供本人学习参考, 如有侵权, 请联系删除, 多谢! Redi ...
- Redis进阶实践之十 Redis哨兵集群模式
一.引言 上一篇文章我们详细的讲解了Redis的主从集群模式,其实这个集群模式配置很简单,只需要在Slave的节点上进行配置,Master主节点的配置不需要做任何更改,但是有一 ...
随机推荐
- TCP/IP三次握手协议
一.简介 三次握手协议指的是在发送数据的准备阶段,服务器端和客户端之间需要进行三次交互,OSI参考模型中的网络层,在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一 ...
- 彻底搞懂 etcd 系列文章(三):etcd 集群运维部署
0 专辑概述 etcd 是云原生架构中重要的基础组件,由 CNCF 孵化托管.etcd 在微服务和 Kubernates 集群中不仅可以作为服务注册与发现,还可以作为 key-value 存储的中间件 ...
- .NET Web应用中为什么要使用async/await异步编程
前言 什么是async/await? await和async是.NET Framework4.5框架.C#5.0语法里面出现的技术,目的是用于简化异步编程模型. async和await的关系? asy ...
- 8000字长文让你彻底了解 Java 8 的 Lambda、函数式接口、Stream 用法和原理
我是风筝,公众号「古时的风筝」.一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...
- 大话计算机网络一 聊聊UDP
引言 UDP是一个简单的面向数据报的运输层协议 UDP不提供可靠性,它把应用程序传给IP层得数据发送出去,不保证它们能达到目的地 UDP首部 端口号表示发送进程和接受进程. UDP长度字段指的是UDP ...
- error: RPC failed; curl 18 transfer closed with outstanding read data remaining的解决
解决方案也是网上搜的,总结一下 一,加大缓存区git config --global http.postBuffer 524288000这个大约是500M二.少clone一些,–depth 1git ...
- Java实现定时任务的三种简单方法
第一种方法: /** * 先定义一个任务每天执行的时间点,再写一个死循环,不断地拿当前时间和事先定义的时间去比对,若到时间则执行任务 */ @Test public void test1() { St ...
- [noi.ac省选模拟赛20200606]赌怪
题目 点这里看题目. 分析 先特判掉\(K=2\)的情况. 首先可以考虑到一个简单 DP : \(f(i)\):前\(i\)张牌的最大贡献. 转移可以\(O(n^2)\)地枚举区间 ...
- [BZOJ]最长道路
题目 点这里看题目. BZOJ 上是权限题目. 分析 这道题可以用点分治,但是我就是喜欢边分治 QAQ . 分治过程中,我们考虑经过分治边的路径的最大痛苦值.一条经过分治边的路径会被 ...
- @topcoder - SRM603D1L3@ SumOfArrays
目录 @desription@ @solution@ @accepted code@ @details@ @desription@ 给定两个长度为 n 的数列 A, B.现你可以将两数列重排列,然后对 ...
