1.redis 安装
1.1 安装准备
下载:
链接:https://pan.baidu.com/s/1f0E0BYaWSyDmxVPGjkNIPg
提取码:9927
1.2安装redis
tar -zxvf redis-6.0.9.tar.gz -C /apps
1.3 Redis简单配置
主从都需要以下操作:
新建数据持久化存放及日志目录
mkdir -p /apps/data
mkdir -p /apps/logs
mkdir -p /apps/conf
----------将下载好的redis.conf上传至/apps------------------
cd /apps/redis-6.0.9 //进入redis安装目录
mv redis.conf redis.conf.bak //修改原本的redis.conf文件名
mv /apps/redis.conf /apps/redis-6.0.9/redis.conf //将下载好的redis.conf放
到安装目录主从都需要(redis集群密码和客户端连接密码都是redispassword)
##########如果需要修改redis密码:########################
vim redis.conf
requirepass redispassword //客户端密码
masterauth redispassword //集群密码
– 改完后wq保存即可
+++++++++++++创建redis-status.conf文件++++++++++++++++
vim /apps/conf/redis-status.conf
####从节点操作,主节点不用填写内容只创建文件即可#####
vim /apps/conf/redis-status.conf //在redis-status.conf添加下面一行,内网ip根据实际情况添加
slaveof 10.25.10.11 6379(例如:主节点内网地址为10.25.10.11)
1.4 服务器参数配置
####需要sudo及以上权限操作#######
vim /etc/sysctl.conf
--添加以下两行----
net.core.somaxconn = 511 //somaxconn:定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。需要与redis.conf文件里的tcp-backlog(默认511)保持一致
vm.overcommit_memory = 1 //此参数设置为0可能会在低内存的情况下导致后台备份失败
####修改完成后需要执行才能生效######
sysctl -p //执行生效
#####关闭防火墙并禁用#####
systemctl stop firewalld
systemctl disable firewalld
1.5 启停Redis
修改完成后,分别启动2台redis,先启动主节点,再启动从节点。
###启动###
cd /apps/redis-6.0.9/src
./redis-server ../redis.conf
###停止###
ps -ef | grep redis
Kill -9 进程号,
启动后检查主从复制状态:
在redis的src目录下执行
./redis-cli
127.0.0.1>auth [客户端密码]
127.0.0.1>info
2.keepalived
在MASTER和SLAVE上安装keepalived:
yum -y install keepalived
安装以后先不要启动,2台服务器分别KEEPALIVED配置完成后再分别启动。
相应的修改和添加keepalived的配置内容如下
(实际配置过程中必须将注释删除,否则keepalive启动会不正常):
MASTER上keepalived.conf 添加:
vrrp_script chk_redis
{
script "/etc/keepalived/scripts/redis_check.sh"
interval 2 #检查间隔为2秒
timeout 2 #超时时间2秒
fall 3 #三次脚本执行失败后执行后续动作
}
修改:vrrp_instance VI_1 {
state BACKUP #一定设置为BACKUP
interface eth2 #业务网IP所在网卡
virtual_router_id 1 #一组主从要保持相同的virtual_router_id,但同一网段内virtual_router_id不能重复
priority 100
advert_int 3
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.3 #虚拟IP地址,主从保持一致
}
track_script {
chk_redis
}
notify_master "/etc/keepalived/scripts/redis_master.sh"
//状态变为MASTER时执行脚本
notify_backup "/etc/keepalived/scripts/redis_slave.sh"
//状态变为BAKCUP时执行脚本
notify_fault "/etc/keepalived/scripts/redis_fault.sh"
//状态错误时执行脚本
notify_stop "/etc/keepalived/scripts/redis_stop.sh"
//keepalived正常停止时执行
}
在/etc/keepalived下新建scripts目录:
mkdir -p /etc/keepalived/scripts
给脚本文件加执行权限
并在scripts目录下放置5个脚本,并赋予可执行权限,内容分别如下:
redis_check.sh:
#!/bin/bash
IPAD=192.168.1.1(主节点IP)
ALIVE=`/usr/local/bin/redis-cli -h $IPAD -a redhat ping` #-a 后面的Redhat是指设置的登录密码
if [ "$ALIVE" == "PONG" ];then
echo $ALIVE
exit 0
else
echo $ALIVE
exit 1
fi
redis_fault.sh:
#!/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo "[fault]" >> $LOGFILE
date >> $LOGFILE
pkill keepalived
redis_master.sh:
#!/bin/bash
REDISCLI="/usr/local/bin/redis-cli -a redhat" #-a 后面的Redhat是指设置的登录密码
LOGFILE="/var/log/keepalived-redis-state.log"
echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "Being master...." >> $LOGFILE 2>&1
echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1
echo "" > /apps/redis/conf/redis-status.conf
redis_slave.sh:
#!/bin/bash
IPAD=192.168.1.2(从节点IP)
REDISCLI="/usr/local/bin/redis-cli -a redhat" #-a 后面的Redhat是指redis设置的登录密码
LOGFILE="/var/log/keepalived-redis-state.log"
echo "[backup]" >> $LOGFILE
date >> $LOGFILE
echo "Being slave...." >> $LOGFILE 2>&1
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF $IPAD 6379 >> $LOGFILE 2>&1
echo -e "# $(date)\nslaveof $IPAD 6379" > /apps/redis/conf/redis-status.conf
redis_stop.sh:
#!/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo "[stop]" >> $LOGFILE
date >> $LOGFILE