#!/bin/bash #部署一主二从三哨兵redis集群,请将redis-3.2.12.tar.gz、redis.sh上传到三个节点的/root目录 #填写自己的IP地址 HOSTIP1=192.168.200.11 HOSTIP2=192.168.200.12 HOSTIP3=192.168.200.13 #检查是否是root用户 if [ $(id -u) != "0" ]; then echo "Error: You must be root to run this script, please use root to install" exit 1 fi #配置基本环境 install_init(){ #关闭防火墙 systemctl stop firewalld && systemctl disable firewalld setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #获取主机IP HOSTIP=$(ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}') #根据主机IP修改主机名、设置主机名映射 if [ $HOSTIP1 == $HOSTIP ]; then hostnamectl set-hostname redis1 echo "$HOSTIP1 redis1" >>/etc/hosts elif [ $HOSTIP2 == $HOSTIP ]; then hostnamectl set-hostname redis2 echo "$HOSTIP2 redis2" >>/etc/hosts elif [ $HOSTIP3 == $HOSTIP ]; then hostnamectl set-hostname redis3 echo "$HOSTIP3 redis3" >>/etc/hosts fi #配置本地yum源 tar -xvf redis-3.2.12.tar.gz -C /opt/ mv /etc/yum.repos.d/* /media/ cat >/etc/yum.repos.d/redis.repo<< EOF [redis] name=redis baseurl=file:///opt/redis gpgcheck=0 enabled=1 EOF yum clean all && yum repolist } #安装、配置redis install_redis(){ #使用yum安装redis yum install -y redis #启动redis并设置开机自启 systemctl enable redis && systemctl start redis #检查redis服务是否ok if [ $? -eq 0 ];then echo -e "\033[36m==========redis安装、启动成功==========\033[0m" else echo -e "\033[31m**********redis安装、启动失败,请检查**********\033[0m" exit 1 fi sleep 2 #修改redis配置文件 sed -i 's/bind 127.0.0.1/#bind 127.0.0.1/g' /etc/redis.conf sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf sed -i 's/daemonize no/daemonize yes/g' /etc/redis.conf sed -i 's/appendonly no/appendonly yes/g' /etc/redis.conf sed -i '$a\requirepass "123456"' /etc/redis.conf sed -i '$a\masterauth "123456"' /etc/redis.conf #修改非主节点的配置文件 if [ $HOSTIP != $HOSTIP1 ]; then echo "slaveof $HOSTIP1 6379" >>/etc/redis.conf fi systemctl restart redis } #配置哨兵模式 sentinels(){ #修改配置文件 sed -i 's/# protected-mode no/protected-mode no/g' /etc/redis-sentinel.conf sed -i 's/sentinel monitor mymaster 127.0.0.1 6379 2/sentinel monitor mymaster 192.168.200.11 6379 2/g' /etc/redis-sentinel.conf sed -i 's/sentinel down-after-milliseconds mymaster 30000/sentinel down-after-milliseconds mymaster 5000/g' /etc/redis-sentinel.conf sed -i 's/sentinel failover-timeout mymaster 180000/sentinel failover-timeout mymaster 15000/g' /etc/redis-sentinel.conf sed -i 's/sentinel parallel-syncs mymaster 1/sentinel parallel-syncs mymaster 2/g' /etc/redis-sentinel.conf sed -i '$a\sentinel auth-pass mymaster 123456' /etc/redis-sentinel.conf systemctl enable redis-sentinel systemctl restart redis-sentinel #检查哨兵模式是否ok if [ $? -eq 0 ];then echo -e "\033[36m==========redis哨兵模式启动成功==========\033[0m" else echo -e "\033[31m**********redis哨兵模式启动失败,请检查**********\033[0m" exit 1 fi } #运行脚本的入口,以下为函数调用顺序 install_init install_redis sentinels
脚本部署redis数据库集群
于 2024-03-31 21:52:24 首次发布