redis部署
redis docker部署
docker pull registry.docker-cn.com/library/redis
docker-compose.yml
version: '2'
services:
redis:
image: redis:latest
container_name: redis
restart: always
ports:
- 3308:6379
volumes:
- /data/home/redis/config/redis.conf:/usr/local/etc/redis/redis.conf
- /data/home/redis/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
离线部署redis
【准备】
1.Centos7.x系统
2.安装gcc
3.redis安装包
【防火墙配置】
查看防火墙状态
firewall-cmd --state
停止firewall
systemctl stop firewalld.service
禁止firewall开机启动
systemctl disable firewalld.service
关闭selinux
进入到/etc/selinux/config文件
vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
【安装】
tar -zxvf redis-5.0.5.tar.gz
编译
make
安装
make PREFIX=/usr/local/redis install
在/usr/local/redis/下创建redis.conf和sentinel.conf文件
主:redis.conf
port 6379
bind 192.168.18.190 #本机ip
requirepass "myredis" #认证密码
daemonize yes #支持后台运行,默认值为no
logfile "6379.log" #日志文件
dbfilename "dump-6379.rdb" #数据库文件
dir "./"
#如若master设置了认证密码,那么所有redis数据节点都配置上masterauth属性
从:redis.conf
port 6379
bind 192.168.18.191
requirepass "myredis" #认证密码
daemonize yes
logfile "6379.log"
dbfilename "dump-6379.rdb"
dir "./"
#如若master设置了认证密码,那么所有redis数据节点都配置上masterauth属性
masterauth "myredis" #主库密码
slaveof 192.168.18.190 6379
【sentinel】
port 26379
#开启守护进程
daemonize yes
dir "/tmp" #Sentinel服务运行时使用的临时文件夹
#指定日志文件存放位置
logfile "26379.log"
#指定主的IP 端口 “2”代表有两个哨兵进程发现主服务器宕机便选取一个从服务器为主
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 192.168.18.190 6379 2 #主master
#redis数据master节点设置了认证,则需要如下配置
sentinel auth-pass mymaster myredis #认证密码
sentinel down-after-milliseconds mymaster 30000
sentinel config-epoch mymaster 1
sentinel failover-timeout mymaster 180000
【配置文件说明:】
1. port :当前Sentinel服务运行的端口
2. dir : Sentinel服务运行时使用的临时文件夹
3.sentinel monitor master001 192.168.110.101 6379 2:Sentinel去监视一个名为master001的主redis实例,这个主实例的IP地址为本机地址192.168.110.101,端口号为6379,而将这个主实例判断为失效至少需要2个 Sentinel进程的同意,只要同意Sentinel的数量不达标,自动failover就不会执行
4.sentinel down-after-milliseconds master001 30000:指定了Sentinel认为Redis实例已经失效所需的毫秒数。当实例超过该时间没有返回PING,或者直接返回错误,那么Sentinel将这个实例标记为主观下线。只有一个 Sentinel进程将实例标记为主观下线并不一定会引起实例的自动故障迁移:只有在足够数量的Sentinel都将一个实例标记为主观下线之后,实例才会被标记为客观下线,这时自动故障迁移才会执行
5.sentinel parallel-syncs master001 1:指定了在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长
6.sentinel failover-timeout master001 180000:如果在该时间(ms)内未能完成failover操作,则认为该failover失败
7.sentinel notification-script <master-name> <script-path>:指定sentinel检测到该监控的redis实例指向的实例异常时,调用的报警脚本。该配置项可选,但是很常用
redis-cli -h 192.168.18.190 -p 6379 -a 123456 info replication
redis-cli -h 192.168.18.191 -p 6379 -a 123456 info replication
redis-cli -h 192.168.18.191 -p 6379 -a 123456 info replication
redis-server /etc/redis/6379.conf
redis-server /etc/redis/6379.conf #启动redis
redis-cli -h 192.168.18.190 -p 6379 -a 123456 shutdown #关闭redis
【连接】
redis-cli -h 192.168.18.190 -p 6379 -a myredis
【关闭】
redis-cli -h 192.168.18.190 -p 6379 -a myredis shutdown