自动配置redis主从和哨兵

本文介绍了一个Shell脚本,用于自动化配置和部署多个Redis主从及哨兵服务,简化了手动配置过程,避免了错误,提高了效率。脚本通过循环创建指定数量的Redis服务和哨兵配置,自动设置端口和IP地址。

每次创建redis主从和哨兵服务,文件夹要复制好几个,配置文件改一大堆.繁琐还容易出错,就想通过shell脚本自动帮我配置好端口以及文件,下面就是脚本内容:

redis-tool.sh

#!/bin/bash
redis_port=6379
sentinel_port=26379
ip=127.0.0.1

function config()
{
rm -rf $1
cp -rf $2 $1
cd $1
touch $1.conf
echo "$3" > $1.conf
cd ../
}

function cre_redis_conf()
{
redis_conf="
# 启动端口
port ${redis_port}
# 守护进程模式
daemonize yes
#关闭保护模式
protected-mode no
"
config redis-${redis_port} $1 "${redis_conf}"
}

function cre_sentinel_conf()
{
sentinel_conf="
#sentinel端口
port ${sentinel_port}
#工作路径,注意路径不要和主重复
dir `pwd`/sentinel-${sentinel_port}
# 守护进程模式
daemonize yes
#关闭保护模式
protected-mode no
# 指明日志文件名
logfile ./sentinel-${sentinel_port}.log
#哨兵监控的master,主从配置一样,这里只用输入redis主节点的ip/port和法定人数。
sentinel monitor mymaster ${ip} 6379 1
# master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
sentinel down-after-milliseconds mymaster 3000
#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout mymaster 18000
#设置master和slaves验证密码
sentinel auth-pass mymaster 123456 
#指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步
sentinel parallel-syncs mymaster 1
"
config sentinel-${sentinel_port} $1 "${sentinel_conf}"
}


function init()
{
  echo "redis文件夹名称:"
  read path
  echo "创建redis服务数:"
  read num
  echo "ip地址:"
  read local_ip
  ip=$local_ip
  for((i=0;i<$num;i++));
do
  cre_redis_conf $path
  cre_sentinel_conf $path
  ((redis_port++))
  ((sentinel_port++))
done
echo "创建完成!"
}
init
# init 4 redis-3.5.2

使用时

  1. 将脚本放在编译完成后的redis文件夹的同级目录中

chmod +x redis-tool.sh授权为可执行文件

  1. 执行脚本依次输入redis文件夹/需要多少个服务/本机ip
./redis-tool.sh 
redis文件夹名称:
redis-3.2.8
创建redis服务数:
3
ip地址:
192.168.37.220
创建完成!

文件夹目录如下:

生成文件详情:

停止redis集群脚本

#!/bin/bash
pid_name="redis"
echo "杀死的进程名称:" $pid_name
 
pids=$(ps -ef|grep $pid_name|grep -v grep|awk '{print $2}')
 
echo "pid列表:" $pids
 
#反转字符串
reversal_str=''
for word in $pids
do
  reversal_str="$word $reversal_str"
done
 
#循环杀死pid
for item in $reversal_str
do
  echo "杀死进程pid=" $item
  kill -9 $item
done

转载于:https://www.cnblogs.com/linyufeng/p/9881851.html

### 环境准备 - 配置yum源,确保系统能够正常下载软件包。 - 修改SELinux,为Redis的正常运行提供合适的安全环境。 - 安装Redis,可使用`yum install`命令进行安装,或者下载源码包进行编译安装,如使用`redis-3.2.8.tar.gz`版本,下载地址为`http://download.redis.io/releases/` [^2][^3]。 ### 主从服务配置启动 #### 主库redis.conf配置 编辑主库的`redis.conf`文件,主要配置项如下: ```plaintext bind 0.0.0.0 # 允许所有IP访问 port 6379 # 监听端口 daemonize yes # 以守护进程方式运行 ``` #### 从库redis.conf配置 从库需要在主库配置基础上,添加主库的连接信息,两台从库配置相同: ```plaintext bind 0.0.0.0 port 6379 daemonize yes slaveof <主库IP> <主库端口> # 指定主库的IP端口 ``` #### 启动主从服务 分别启动主库从库的Redis服务: ```bash ./src/redis-server redis.conf ``` 连接到Redis主库,查看主从信息: ```bash redis-cli -h <主库IP> -p <主库端口> info replication ``` ### 哨兵配置启动 #### 三台哨兵配置 编辑三台哨兵的`redis-sentinel.conf`文件,配置如下: ```plaintext port 26379 # 哨兵监听端口 daemonize yes sentinel monitor mymaster <主库IP> <主库端口> 2 # 监控主库,2表示至少需要2个哨兵同意才能进行故障转移 sentinel down-after-milliseconds mymaster 30000 # 主库多长时间无响应判定为下线 sentinel failover-timeout mymaster 180000 # 故障转移超时时间 ``` #### 启动哨兵 分别启动三台哨兵进程: ```bash ./src/redis-sentinel sentinel.conf ``` #### 测试哨兵 模拟主库故障,查看哨兵是否能自动进行故障转移,将新的从库提升为主库。 ### 开放防火墙端口 开放Redis主从服务端口(默认6379)哨兵端口(默认26379),确保网络通信正常。 ```bash firewall-cmd --zone=public --add-port=6379/tcp --permanent firewall-cmd --zone=public --add-port=26379/tcp --permanent firewall-cmd --reload ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值