背景
- 两台Linux虚拟机
- redis5.0.5
前言
- 搭建一主一从二哨兵模式
- Linux系统必须安装有gcc
- 关闭防火墙让telnet可通端口
service iptables stop
,需要root用户
写给自己
- 虚拟机-网络适配器设置为
适配器-桥接模式(自动检测)
- 根据所连接wifi的子网掩码、路由器进行网络配置,ip地址为wifi的ipv4地址同网段,最后一位不同;通过
vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改后即可上网,相互间也可ping通
步骤
redis安装
- 下载的redis安装包是 redis-5.0.5.tar.gz
- 上传到安装的环境,放到/home/xxx/redis路径下。
- 解压缩 tar xzf redis-5.0.5.tar.gz
cd redis-5.0.5/
开始执行安装命令:
make
若对安装的有疑问,在make之后再执行make test。
分别备份一下redis.conf 和 sentinel.conf 执行命令
cp redis.conf redis.conf.bak
cp sentinel.conf sentinel.conf.bak
若make报如下错:
/bin/sh: cc: command not found
make[1]: *** [adlist.o] Error 127
make[1]: Leaving directory `/usr/local/redis-5.0.5/src'
make: *** [all] Error 2
则是没有安装linux系统的gcc环境,执行命令
yum install gcc
若报以下错:
In file included from adlist.c:34:
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/usr/local/redis-5.0.5/src'
make: *** [all] Error 2
则是jemalloc重载了linux下的ANSI C的malloc和free函数,解决办法,执行命令
make MALLOC=libc
linux系统配置
- 修改linux单进程最大文件连接数(linux系统最大连接数会影响redis最大连接数maxiclients)
修改 /etc/security/limits.conf 末尾添加如下内容:
xxx soft nofile 100000
xxx hard nofile 100000
xxx soft nproc 100000
xxx hard nproc 100000
xxx soft memlock unlimited
xxx hard memlock unlimited
说明: xxx表示只针对xxx用户生效,*表示针对所有用户生效
- 增加软连接
ln -s /home/xxx/redis-5.0.5/src/redis-cli /usr/bin/redis-cli
ln -s /home/xxx/redis-5.0.5/src/redis-server /usr/bin/redis-server
ln -s /home/xxx/redis-5.0.5/src/redis-sentinel /usr/bin/redis-sentinel
说明:/home/xxx/redis-5.0.5/为redis安装目录
Redis server启动
在第二步make完redis的安装后,需要对主从配置进行修改。
master的redis.conf
打开redis.conf,master修改配置文件如下:
#bind 127.0.0.1
protected-mode no
daemonize yes
logfile "/home/logs/redis.log"
replicaof master-ip 6379 (仅slave配置,master注释掉此项)
masterauth !QAZxsw2
requirepass !QAZxsw2
**以下根据需要设置,如果只为了学习可不设置**
repl-diskless-sync yes (在磁盘速度缓慢,网速快的情况下推荐yes)
repl-backlog-size 5mb
maxclients 10000
maxmemory 10GB
maxmemory-policy volatile-lru
maxmemory-samples 5
appendonly yes
activedefrag yes (开启主动磁盘碎片整理)
active-defrag-ignore-bytes 100mb
active-defrag-threshold-lower 20
active-defrag-threshold-upper 80
active-defrag-cycle-min 5
active-defrag-cycle-max 75
active-defrag-max-scan-fields 1000
slave的redis.conf
若是单机部署,则不需要执行此步骤,若是多台机器安装,请执行完以下步骤
#bind 127.0.0.1
protected-mode no
daemonize yes
logfile "/home/logs/redis.log"
replicaof master-ip 6379 (仅slave配置,master注释掉此项)
masterauth !QAZxsw2
requirepass !QAZxsw2
**以下根据需要设置,如果只为了学习可不设置**
repl-diskless-sync yes (在磁盘速度缓慢,网速快的情况下推荐yes)
repl-backlog-size 5mb
maxclients 10000
maxmemory 10GB
maxmemory-policy volatile-lru
maxmemory-samples 5
appendonly yes
activedefrag yes (开启主动磁盘碎片整理)
active-defrag-ignore-bytes 100mb
active-defrag-threshold-lower 20
active-defrag-threshold-upper 80
active-defrag-cycle-min 5
active-defrag-cycle-max 75
active-defrag-max-scan-fields 1000
以上配置是启动主从模式的基本修改参数,其他的参数可以在以后的应用中修改。
分别启动主从的server ./src/redis-server redis.conf
启动后,可以进redis-cli中,auth+密码,info replication,查看是否主从连接
哨兵配置及启动
打开哨兵的配置文件 sentinel.conf,master和slave的配置文件一样,修改如下:
protected-mode no
daemonize yes
logfile "/home/logs/redis-sentinel.log"
sentinel monitor mymaster master-ip 6379 2
sentinel auth-pass mymaster !QAZxsw2
说明:
!QAZxsw2 为redis密码,主从需保持一致
master-ip 是你指定的master的ip地址
哨兵配置完后 ./src/redis-sentinel sentinel.conf
才会启动
配置监控数据(测试环境可不执行此步)
tar -xzf redis_exporter-v0.25.0.linux-amd64.tar
cd redis_exporter-v0.25.0.linux-amd64
启动命令为:
nohup ./redis_exporter -redis.password xxxank@test &
暴露的端口是9121
测试
主服务器kill掉或shutdown后,从服务器自动变为master
日志文件在 /home/logs/redis-sentinel.log
原master重启 ./src/redis-server redis.conf 后变为从,可反复切换
Q.E.D.