redis 安装部署 、主从复制、哨兵模式

2022-02-14  本文已影响0人  su酥饼

一.单点 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 集群的高可用,本身也是分布式的,作为一个哨兵集群去运行,互相协同工作

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
此时会发现其中一台从库成了主
上一篇 下一篇

猜你喜欢

热点阅读