一.单点 reids 安装部署
官网地址:https://redis.io/download
下载包:wget http://download.redis.io/releases/redis-3.2.12.tar.gz
1.将安装包解压至/usr/local/下
tar xf redis-3.2.12.tar.gz -C /usr/local/
cd /usr/local/
ln -s redis-3.2.12 redis
2.安装环境依赖
yum -y install gcc automake autoconf libtool make
3.编译
cd /usr/local/redis/
make && make install #编译安装
4.配置环境变量
vim /etc/bash.rc
export PATH=/usr/local/redis/src:$PATH
source /etc/bash.rc
5.编写配置文件
daemonize yes #是否后台运行
port 6379 #默认端口
logfile /usr/local/redis/redis.log #日志文件位置
dir /usr/local/redis #持久化文件存储位置
pidfile /usr/local/redis/redis.pid #pid文件存储位置
dbfilename dump.rdb #RDB持久化数据文件:
protected-mode no #默认开启了保护模式,只允许本地回环地址登录并访问数据库。
bind 10.0.0.100 #指定通过那个ip连接到redis
requirepass 123 #设置登录密码
6.启动redis
redis-server /usr/local/redis/redis.conf
7.连接测试
redis-cli -h 10.0.0.100 -p6379 -a 123
8.设置开机自启
vim /etc/rc.d/rc.local
/usr/local/bin/redis-server /usr/local/redis/6379/redis.conf
chmod +x /etc/rc.d/rc.local
9.redis 服务关闭
redis-cli shutdown #方法一
[root@redis-2 ~]# redis-cli -a 123456 #方法二
127.0.0.1:6379> shutdown
not connected>
pkill redis-server #方法三
10.redis 配置参数详解
daemonize:如需要在后台运行,把该项的值改为yes
pdifile:把pid文件放在/var/run/redis.pid,可以配置到其他地址
bind:指定redis只接收来自该IP的请求,如果不设置,那么将处理所有请求,在生产环节中最好设置该项
port:监听端口,默认为6379
timeout:设置客户端连接时的超时时间,单位为秒
loglevel:等级分为4级,debug,revbose,notice和warning。生产环境下一般开启notice
logfile:配置log文件地址,默认使用标准输出,即打印在命令行终端的端口上
database:设置数据库的个数,默认使用的数据库是0
save:设置redis进行数据库镜像的频率
rdbcompression:在进行镜像备份时,是否进行压缩
dbfilename:镜像备份文件的文件名
dir:数据库镜像备份的文件放置的路径
slaveof:设置该数据库为其他数据库的从数据库
masterauth:当主数据库连接需要密码验证时,在这里设定
requirepass:设置客户端连接后进行任何其他指定前需要使用的密码
maxclients:限制同时连接的客户端数量
maxmemory:设置redis能够使用的最大内存
appendonly:开启appendonly模式后,redis会把每一次所接收到的写操作都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态
appendfsync:设置appendonly.aof文件进行同步的频率
vm_enabled:是否开启虚拟内存支持
vm_swap_file:设置虚拟内存的交换文件的路径
vm_max_momery:设置开启虚拟内存后,redis将使用的最大物理内存的大小,默认为0
vm_page_size:设置虚拟内存页的大小
vm_pages:设置交换文件的总的page数量
vm_max_thrrads:设置vm IO同时使用的线程数量
二.redis主从安装部署
1.资源清单 采取一主两从
10.0.0.100 reids主
10.0.0.101 reids从
10.0.0.102 redis从
2.三个节点安装reids 并启动
10.0.0.100 、10.0.0.101、10.0.0.102 三个节点
### mkdir /data
cat >> /data/redis.conf <<EOF
port 6379
daemonize yes
pidfile /data/redis.pid
loglevel notice
logfile "/data/redis.log"
dbfilename dump.rdb
dir /data/
requirepass 123
masterauth 123
EOF
启动:
redis-server /data/redis.conf
3、开启主从
101/102这两台机器命令行操作:
redis-cli -h 10.0.0.101 -p 6379 -a 123 SLAVEOF 10.0.0.100 6379 #这里的ip跟端口是主的
redis-cli -h 10.0.0.102 -p 6379 -a 123 SLAVEOF 10.0.0.100 6379
4.查询主从状态
主节点
[root@redis-100 ~]# redis-cli -h 10.0.0.100 -p 6379 -a 123 info replication
Replication
role:master
connected_slaves:2
slave0:ip=10.0.0.101,port=6379,state=online,offset=71,lag=0
slave1:ip=10.0.0.102,port=6379,state=online,offset=71,lag=1
master_repl_offset:71
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:70
从节点
[root@redis-101 ~]# redis-cli -h 10.0.0.101 -p 6379 -a 123 info replication
Replication
role:slave
master_host:10.0.0.100
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:127
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
三、sentinel(哨兵模式)
1.介绍
sentinel,中文名是哨兵。哨兵是 Redis 集群架构中非常重要的一个组件,主要有以下功能:
- 集群监控:负责监控 redis master 和 slave 进程是否正常工作
- 消息通知:如果某个 redis 实例有故障,那么哨兵负责发送消息作为报警通知给管理员
- 故障转移:如果 master node 挂掉了,通过选举从slave node上产生新的master node
- 配置中心:如果故障转移发生了,通知 client 客户端新的 master 地址
哨兵用于实现 redis 集群的高可用,本身也是分布式的,作为一个哨兵集群去运行,互相协同工作
2.修改配置文件
# 1. 保护模式修改为否,允许远程连接
protected-mode no
# 2. 设定监控地址,为对应的主redis库的内网地址,mymaster为集群名字,可以根据情况自己修改
sentinel monitor mymaster 10.0.0.100 6379 2
# 3. 表示如果master重新选出来后,其它slave节点能同时并行从新master同步缓存的台数有多少个,显然该值越大,所有slave节点完成同步切换的整体速度越快,但如果此时正好有人在访问这些slave,可能造成读取失败,影响面会更广。最保定的设置为1,只同一时间,只能有一台干这件事,这样其它slave还能继续服务,但是所有slave全部完成缓存更新同步的进程将变慢。
sentinel parallel-syncs mymaster 2
# 4. 主数据库密码,需要将配置放在sentinel monitor master 10.0.0.100 6379 2下面
sentinel auth-pass mymaster 123
2-1编写守护进程启动sentinel
#编写sentinel启动和关闭脚本
##启动sentinel脚本
cat > /script/sentinel_start.sh <<EOF
nohup /usr/local/redis/src/redis-sentinel /usr/local/redis/sentinel.conf >./sentinel.log &
EOF
##关闭sentinel脚本
cat > /script/sentinel_stop.sh <<EOF
#!/bin/bash
kill -9 `ps -ef |grep sent |awk 'NR==1 {print $2}'`
EOF
#配置sentinel 守护进程启动
cat > /usr/lib/systemd/system/sentinel.service <<EOF
[Unit]
Description=shaobing
After=network.target
[Service]
Type=forking
Restart=no
ExecStart=/script/sentinel_start.sh #启动脚本或命令
ExecStop=/script/sentinel_stop.sh #关闭脚本或命令
[Install]
WantedBy=multi-user.target
EOF
3.启动
启动顺序需要按照Master->Slave->Sentinel进行启动,分别把redis的config里面的daemonize参数设置为yes,这样就可以后台启动进程了,不用开启多个窗口了,启动步骤如下:
# 启动redis-server的master和slave(根据配置文件启动)
redis-server /data/redis.conf
#三个节点启动sentinel
systemctl start sentinel.service
systemctl enab sentinel.service
#查看进程 和端口
netsat -lntup
4.测试
killl 7453(主库进程pid)
redis-cli -h 10.0.0.102 -p 6381 -a 123 info replication
redis-cli -h 10.0.0.102 -p 6382 -a 123 info replication
此时会发现其中一台从库成了主
网友评论