基础环境

操作系统版本  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的更多相关文章

  1. Redis哨兵集群创建脚本--v2

    1. 基础环境 操作系统版本  CentOS Linux release 7.6.1810 (Core) Docker 版本  19.03.11, build 42e35e61f3 Redis  版本 ...

  2. redis哨兵集群搭建

    下载redis jar包redis-4.0.11.tar.gz放在/data/redis目录下 解压 命令:tar -zxvf redis-4.0.11.tar.gz 解压后如图所示 在/usr/lo ...

  3. Linux - redis哨兵集群实例

    目录 Linux - redis哨兵集群实例 命令整理 配置流程 Linux - redis哨兵集群实例 命令整理 官网地址:http://redisdoc.com/ redis-cli info # ...

  4. helm部署Redis哨兵集群

    介绍 Redis Sentinel集群是由若干Sentinel节点组成的分布式集群,可以实现故障发现.故障自动转移.配置中心和客户端通知. 如下图: Redis Sentinel 故障转移过程: 从这 ...

  5. 11.Redis 哨兵集群实现高可用

    作者:中华石杉 Redis 哨兵集群实现高可用 哨兵的介绍 sentinel,中文名是哨兵.哨兵是 redis 集群机构中非常重要的一个组件,主要有以下功能: 集群监控:负责监控 redis mast ...

  6. python连接redis哨兵集群

    一.redis集群模式有多种, 哨兵模式只是其中的一种实现方式, 其原理请自行谷歌或者百度 二.python 连接 redis 哨兵集群 1. 安装redis包 pip install redis 2 ...

  7. redis哨兵集群、docker入门

    redis-sentinel主从复制高可用 Redis-Sentinel Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果m ...

  8. redis 哨兵集群原理及部署

    复制粘贴自: https://www.cnblogs.com/kevingrace/p/9004460.html 请点击此链接查看原文. 仅供本人学习参考, 如有侵权, 请联系删除, 多谢! Redi ...

  9. Redis进阶实践之十 Redis哨兵集群模式

    一.引言             上一篇文章我们详细的讲解了Redis的主从集群模式,其实这个集群模式配置很简单,只需要在Slave的节点上进行配置,Master主节点的配置不需要做任何更改,但是有一 ...

随机推荐

  1. Hbase的基本架构以及对应的读写流程

    一.HBase简介 1,定义: HBase 是一种分布式.可扩展.支持海量数据存储的 NoSQL 数据库. 2,HBase的架构图: 架构角色: 1)Master Master是所有Region Se ...

  2. SUBSTRING / CHARINDEX_函数随手练_2

    SUBSTRING / CHARINDEX_函数随手练_2环境:MSSQL 2014(AdventureWorks2008R2附加到2014中的表 Location) /* Learning SQL ...

  3. C Primer Plus(三)

    重读C Primer Plus ,查漏补缺 重读C Primer Plus,记录遗漏的.未掌握的.不清楚的知识点 文件输入/输出 1.fgets函数在读取文件内容时会将换行符读入,但gets不会,fp ...

  4. view中显示部分区域

    在android中有时候要求只显示view的部分区域,这个时候就需要对当前的view进行剪裁的操作.在android中剪裁当前的view的有两种方法:一种是直接截取view,第二种是通过Outline ...

  5. python常见数据类型及操作方法

    title: "python数据类型及其常用方法" date: 2020-04-21T10:15:44+08:00 可变数据类型:允许变量的值发生变化,即如果对变量进行append ...

  6. JVM面试题总结

    1.介绍下 Java 内存区域(运行时数据区) Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域. JDK 1.8之前主要分为:堆.方法区.虚拟机栈.本地方法栈 ...

  7. 关于单向循环链表的约瑟夫问题(Java实现)

    关于单向循环链表的约瑟夫问题(Java实现) 最近在学习链表时,遇到单向循环链表中的约瑟夫问题.在构建循环链表的代码上,我有一点很不理解,遂记录下来. Josephu问题为: 设编号为1, 2,.. ...

  8. PHP丨PHP基础知识之流程控制WHILE循环「理论篇」

    昨天讲完FOR循环今天来讲讲他的兄弟WHILE循环!进入正题: while是计算机的一种基本循环模式.当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环.while语句的一般表达式为:whil ...

  9. 有关 HashMap 面试会问的一切

    前言 HashMap 是无论在工作还是面试中都非常常见常考的数据结构. 比如 Leetcode 第一题 Two Sum 的某种变种的最优解就是需要用到 HashMap 的,高频考题 LRU Cache ...

  10. 记一次mysql小版本升级

    最近护网操作比较紧,基线和漏洞检查比较频繁,新扫描出来的mysql漏洞需要修复,没有啥好的修复方法,只剩下升级版本这一条路,生产环境是5.7.12,二进制文件直接解压使用的,看了一下现在最新的版本,5 ...