一、部署Redis集群
1.环境
主机名 | 服务端口 | IP地址 | 配置文件名 |
redis01 | 6001 | 10.11.59.81 | /redis/6001/conf/redis.conf |
redis01 | 6002 | 10.11.59.81 | /redis/6002conf/redis.conf |
redis02 | 6001 | 10.11.59.82 | /redis/6001/conf/redis.conf |
redis02 | 6002 | 10.11.59.82 | /redis/6002/conf/redis.conf |
redis03 | 6001 | 10.11.59.83 | /redis/6001/conf/redis.conf |
redis03 | 6002 | 10.11.59.83 | /redis/6002/conf/redis.conf |
2、修改集群主机名
[root@localhost ~]# hostnamectl --static set-hostname redis01
[root@localhost ~]# hostnamectl --static set-hostname redis02
[root@localhost ~]# hostnamectl --static set-hostname redis03
3 本地解析
[root@redis01 ~]# cat >> /etc/hosts <<-EOF
10.11.59.81 redis01
10.11.59。82 redis02
10.11.59.83 redis03
EOF
4、修改系统参数(所有节点)
1、修改最大可打开文件数
[root@redis01 ~]# cat >> /etc/security/limits.conf << EOF
* soft nofile 102400
* hard nofile 102400
EOF
2、TCP监听队列大小
- 要想永久生效,需要在文件/etc/sysctl.conf中增加一行:net.core.somaxconn = 32767,然后执行命令“sysctl -p”以生效。
- Redis配置项tcp-backlog的值不能超过somaxconn的大小。
[root@redis01 ~]# echo "net.core.somaxconn = 32767" >> /etc/sysctl.conf
[root@redis01 ~]# sysctl -p
- 即TCP listen的backlog大小,定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,“/proc/sys/net/core/somaxconn”的默认值一般较小如128,需要修改大一点,比如改成32767。立即生效还可以使用命令:
[root@redis01 ~]# sysctl -w net.core.somaxconn=32767
###3、OOM相关:vm.overcommit_memory
[root@redis01 ~]# echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
[root@redis01 ~]# sysctl -p
4、开内核的“Transparent Huge Pages (THP)”特性
- 默认值为“[always] madvise never”,建议设置为never,以开启内核的“Transparent Huge Pages (THP)”特性,设置后redis进程需要重启。
- 为了永久生效,请将
[root@redis01 ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
- 加入到文件/etc/rc.local中。
[root@redis01 ~]# echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local
[root@redis01 ~]# chmod +x /etc/rc.local
5、安装 redis 并配置 redis-cluster
1、安装gcc套装
[root@redis01 ~]# yum -y install gcc glibc glibc-kernheaders glibc-common glibc-devel make
2、升级gcc
[root@redis01 ~]# yum -y install centos-release-scl
[root@redis01 ~]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
[root@redis01 ~]# scl enable devtoolset-9 bash
3、设置永久升级
[root@redis01 ~]# echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
4、redis01 安装
[root@redis01 ~]# cd /usr/local/src
[root@redis01 ~]# wget http://download.redis.io/releases/redis-6.0.5.tar.gz
[root@redis01 ~]# tar -zxvf redis-6.0.5.tar.gz
[root@redis01 ~]# cd redis-6.0.5/
[root@redis01 ~]# make
[root@redis01 ~]# make install PREFIX=/usr/local/redis-cluster
1、创建实例目录
[root@redis01 ~]# mkdir -p /redis/{6001,6002}/{conf,data,log}
2、配置
1、redis01 6001 配置文件
[root@redis01 ~]#cd /redis/6001/conf/
[root@redis01 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
requirepass redis
pidfile /redis/6001/redis.pid
logfile /redis/6001/log/redis.log
EOF
2、redis01 6002 配置文件
[root@redis01 conf]# sed 's/6001/6002/g' redis.conf > /redis/6002/conf/redis.conf
3、启动脚本 start-redis-cluster.sh
[root@redis01 ~]# 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
4、添加权限
[root@redis01 ~]# chmod +x /usr/local/redis-cluster/start-redis-cluster.sh
5、启动 redis
[root@redis01 ~]# bash /usr/local/redis-cluster/start-redis-cluster.sh
6、redis02 redis03和redis01一样
6 创建 redis cluster
- 如果只是想快速创建和启动redis集群,可使用redis官方提供的脚本create-cluster,注意redis-5.0.0版本开始才支持“–cluster”
[root@redis01 bin]# cd /usr/local/redis-cluster/bin
[root@redis01 bin]# ./redis-cli --cluster create 10.11.59.81:6001 10.11.59.81:6002 10.11.59.82:6001 10.11.59.82:6002 10.11.59.83:6001 10.11.59.83:6002 --cluster-replicas 1 -a redis # -a 指定密码
1 查看redis状态
2 查看集群节点
二 部署Keepalived,实现主从热备、秒级切换
1 环境
keepalived1: 10.11.59.81
keepalived2: 10.11.59.82
vip地址: 10.11.59.242
2 安装keepalived
yum -y install keepalived
3 修改配置文件
1 keepalived1 配置
! Configuration File for keepalived
global_defs {
router_id haproxy1
}
vrrp_script check_run {
script "/etc/keepalived/keepalived_check_mysql.sh"
interval 5
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 89
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass redis
}
track_script {
check_run
}
virtual_ipaddress {
10.11.59.242
}
}
2 keepalived2 配置
! Configuration File for keepalived
global_defs {
router_id haproxy2
}
vrrp_script check_run {
script "/etc/keepalived/keepalived_check_mysql.sh"
interval 5
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 89
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass redis
}
track_script {
check_run
}
virtual_ipaddress {
10.11.59.242
}
}
3 启动keepalived
systemctl start keepalived
systemctl enable keepalived
4 健康检测脚本
5 查看vip
查看IP,此时备节点不会有VIP(只有当主挂了的时候,VIP才会飘到备节点)
6 #### Keepalived 高可用 vip 测试
1 访问测试
使用VIP 10.11.59.242登录redis-cluster
2 模拟负载均很器故障测试关闭keepalived主节点。再次登录
三、部署haproxy,实现访问6379端口时,轮询访问六个节点
环境
haproxy1: 10.11.59.81
haproxy: 10.11.59.82
1、安装 haproxy
yum -y install haproxy
2、创建 haproxy.conf
master haproxy
将配置文件拷贝到slave服务器
[root@ha-proxy-master ~]# scp /etc/haproxy/haproxy.cfg 10.11.59.82:/etc/haproxy/
访问测试
使用haproxy 代理ip访问redis
3 、Haproxy rsyslog 日志配置
vim /etc/rsyslog.conf
重启rsyslog日志服务
查看haproxy日志
4、haproxy 监控页面访问验证
端口8888 账号密码 qianfeng 123