实现主从热备、负载均衡、秒级切换实战
- Redis+Keepalived+Haproxy 的集群架构,分别用六个端口,实现多路复用,最终实现主从热备、负载均衡、秒级切换。
一、部署Redis集群
1、环境
-
3台虚拟机模拟6个节点,一台机器2个节点,创建出3 master、3 salve 环境
192.168.122.232 redis1
192.168.122.85 redis2
192.168.122.56 redis3
2、安装 redis 实例 (6节点)
#!/bin/bash
cd /usr/local
wget http://download.redis.io/releases/redis-6.0.5.tar.gz
tar -xvf redis-6.0.5.tar.gz >& /dev/null
if [ $? -eq 0 ];then
echo "tar ok"
else
exit
fi
cd redis-6.0.5/
make && make install PREFIX=/usr/local/redis-cluster >& /dev/null
if [ $? -eq 0 ];then
echo "make ok"
else
exit
fi
#mkdir dir
mkdir -p /redis/{6001,6002}/{conf,data,log}
echo "配置redis1 6001 配置文件"
cd /redis/6001/conf/
cat >> redis.conf << EOF
bind 0.0.0.0
protected-mode no
port 6001
dir /redis/6001/data
cluster-enabled yes
cluster-config-file /redis/6001/conf/nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
pidfile /redis/6001/redis.pid
logfile /redis/6001/log/redis.log
EOF
if [ $? -eq 0 ];then
echo "配置6002"
sed 's/6001/6002/g' redis.conf > /redis/6002/conf/redis.conf
else
exit
fi
#启动脚本
echo “启动脚本”
cat >/usr/local/redis-cluster/start-redis-cluster.sh<<-EOF
#!/bin/bash
REDIS_HOME=/usr/local/redis-cluster
REDIS_CONF=/redis
\$REDIS_HOME/bin/redis-server \$REDIS_CONF/6001/conf/redis.conf
\$REDIS_HOME/bin/redis-server \$REDIS_CONF/6002/conf/redis.conf
EOF
chmod +x /usr/local/redis-cluster/start-redis-cluster.sh
bash /usr/local/redis-cluster/start-redis-cluster.sh
3、检查 redis 启动情况
4、创建集群
#!/bin/bash
cd /usr/local/redis-cluster/bin
./redis-cli --cluster create 192.168.122.232:6001 192.168.122.232:6002 192.168.122.85:6001 192.168.122.85:6002 192.168.122.56:6001 192.168.122.56:6002 --cluster-replicas 1
ps -ef|grep redis
ln -s /usr/local/redis-cluster/bin/redis-cli /bin/redis-cli
5、集群验证
二、部署Keepalived,实现主从热备、秒级切换
1、环境
-
两台虚拟机或者选择集群中的任意两个节点配置
-
keepalived1:192.168.122.38
-
keepalived2:192.168.122.145
-
VIP地址:192.168.122.100
2、安装keepalived
```shell
yum install -y keepalived
```
3、修改配置文件
1、keepalived1 配置
2、keepalived2 配置
3、健康检测脚本 haproxy_chk.sh(chmod +x)
cat /etc/keepalived/check_haproxy.sh
#!/bin/bash
systemctl status haproxy | grep running
if [ $? -ne 0 ];then
systemctl stop keepalived
fi
4、开启服务验证是VIP(关掉第一个haproxy的keepalived之后,vip可以飘到haproxy2)
三、部署haproxy,实现访问6379端口时,轮询访问六个节点
1、安装 haproxy
yum -y install haproxy
2、创建 haproxy.conf
global
log 127.0.0.1 local0
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user nobody
group nobody
daemon
defaults
mode http
log global
option dontlognull
retries 3
maxconn 3000
contimeout 50000
clitimeout 50000
srvtimeout 50000
listen stats
bind *:8888
stats enable
stats hide-version
stats uri /haproxy
stats realm Haproxy\ stats
stats auth admin:admin
stats admin if TRUE
listen redis
bind *:6379
mode tcp
balance roundrobin
server redis1 192.168.122.232:6001 check
server redis2 192.168.122.232:6002 check
server redis3 192.168.122.85:6001 check
server redis4 192.168.122.85:6002 check
server redis5 192.168.122.56:6001 check
server redis6 192.168.122.56:6002 check
3、Haproxy rsyslog 日志配置
vim /etc/rsyslog.conf
4、haproxy 监控页面访问验证
- 端口8888 账号密码 admin:admin
- 有以下效果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u40vuzjE-1600507089313)(/home/achun/图片/2020-09-18 21-00-18屏幕截图.png)]