一:Redis Sentinel(Redis集群监控管理软件)
集群最小单位为:1个Sentinel、2个redis;
检查主机的 REDIS 角色
redis-cli -h 192.168.146.144 -p 6379 info Replication
1.启动并配置好主从redis
2.配置 Redis Sentinel
sentinel.conf
port 26379
sentinel monitor mymaster 192.168.146.144 6379 1 #修改IP地址,IP可以是集群中的任意一个IP地址
sentinel down-after-milliseconds mymaster 5000 #默认1s检测一次,这里配置超时5秒为宕机
sentinel failover-timeout mymaster 60000 #60秒 超时
sentinel can-failover mymaster yes #允许宕机
sentinel parallel-syncs mymaster 1 #通知slave机器数量
3.启动 Redis Sentinel
/usr/local/bin/redis-server /usr/local/redis/sentinel.conf --sentinel &
4.检查sentinel 状态
redis-cli -h 192.168.146.144 -p 26379 info Sentinel
5.检查slave 的 sentinel 状态
redis-cli -h 192.168.146.144 -p 26379 sentinel slaves mymaster
从库(name数量),从库的IP地址和状态,主库的IP地址和状态。
#还有‘runid’ ,redis的从接管主没有优先级的参数可以配置,默认使用runid的大小来竞争主库,所以这里也可以预测下一个主是哪台
故障模拟
1.关闭主redis
# 如果不是主宕机,而是从宕机,那么不会发生切换行为,只会把宕机的那台从集群中剔除。
# 已宕机的机器,如果再次加入集群,只要它成为了当前主的从机,则Sentinel会自动发现,并将其加入集群成员
对程序而言,存在IP变动的情况
二:redis 优化
/proc/sys/net/core/somaxconn
/proc/sys/net/core/somaxconn 对应 net.core.somaxconn
通过listen系统调用可以指定的最大accept队列backlog,当排队的请求连接大于该值时,后续进来的请求连接会被丢弃。
/proc/sys/net/core/somaxconn | 定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。 | 128 | 2048 |
net.core.somaxconn = 2048
timeout 300
tcp-keepalive 60
三:gcc 升级
gcc 升级
升级版本
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
以上是临时启用, 要想长期使用gcc 9.1
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
编译安装
cd /root
wget https://download.redis.io/releases/redis-6.0.9.tar.gz
$ tar xzf redis-6.0.9.tar.gz
$ cd redis-6.0.9
make make PREFIX=/usr/local/redis install
添加环境变量:
Vim /etc/profile
export PATH=$PATH:/usr/local/redis/bin
配置生效:
Source/etc/profile
创建目录
mkdir -p /data/redis/{etc,data,log}
cp /root/redis-6.0.9/redis.conf .
修改配置项
Bind 绑定的IP地址,默认是只能本地访问
Pidfile
Dump
dir数据存储路径
Log 指定日志
Daemonize 修改运行模式
启动服务:
Redis-server /data/redis/etc/redis.conf
启动服务:
设置密码:
Vim /usr/local/redis/etc/redis.conf
Requirepass 123456
服务化
添加redis服务文件:
Vim /lib/systemd/system/redis.service
[Unit]
Description=redis
After=network.target
[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis/src/redis-server /usr/local/redis/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
配置生效:
Systemctl daemon-reload
加入开机启动:
Systemctl enable redis.service
启动服务:
Systemctl start redis
停止服务:
Systemctl stop redis
查看服务状态:
Systemctl status redis
基准测试
redis-benchmark -h localhost -p 6379 -c 100 -n 10000
-c: 指定客户端的数量
-n: 请求数量
客户端操作
1)连接服务
Redis-cli -h 127.0.0.1 -p 6379 -a 密码
2)关闭服务
Redis-cli shutdown
常见问题:
1. 在文件/etc/profile文件添加全局变量之后 ,在root用户下无法使用
解决:添加变量到/root/.bashrc
复制代码
vim /root/.bashrc
export PATH=$PATH:/usr/local/redis/bin
或者添加软连接
ln -s export /usr/local/redis/bin/redis-server /usr/bin/redis-server