哨兵集群创建脚本docker-redis-docker-redis

基础环境

操作系统版本  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}

创建后的效果

  • 打赏
请选择打赏方式
  • 微信
  • 支付宝

发表回复

在线客服
在线客服
我们将24小时内回复。
2024-05-19 03:51:24
您好,有任何疑问请与我们联系!
您的工单我们已经收到,我们将会尽快跟您联系!
[xiaoliu客服]
3300489242
微信公众号
[公司座机]
0731-82208183
取消

选择聊天工具:

Verified by MonsterInsights