Redis主从和哨兵模式搭建

 

一、系统环境和redis版本:

    1. 系统:CentOS-7-x86_64
    2. Redis:redis-5.0.2
    3. 环境配置:一台master,二台slave

      

名称

IP

端口

密码

Master

192.168.8.111

6379

1+1=2?Yes

Slave

192.168.8.112

6379

1+1=2?Yes

slave

192.168.8.113

6379

1+1=2?Yes

 

 

二、安装配置CentOS7:

  a)安装系统太简单不描述,linux主要系统目录如下:

  

/etc/sysconfig/network-scripts/ifcfg-eth0 #网卡配置文件

/etc/resolv.conf #客户端DNS

/etc/hosts #本地的主机名解析的文件

/etc/sysconfig/network #主机名

/etc/fstab #开机磁盘自动挂载的文件

/etc/rc.local #把命令写在此处,系统自启动时会执行

/etc/inittab #开机加载先后级别的脚本

/etc/init.d # yum、rpm安装的软件默认的启动命令放在目录下

/etc/profile #全局(所有用户)

/etc/bashrc #全局(所有用户)

~/.bashrc #局部(当前用户)

/usr/local #C盘Program默认的安装目录

/usr/src #源码安装目录

/var/log/messages #系统日志

/var/log/secure #安全日志

 

  b)配置网络:

    vim /etc/sysconfig/network-scripts/ifcfg-eth0 # 网卡配置文件一般为ifcfg-xxxxxx

    

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=eth0

UUID=7a752861-020f-427c-bc29-fd8f1eeb80bc

DEVICE=eth0

ONBOOT=yes

IPADDR=192.168.8.111

PREFIX=24

GATEWAY=192.168.8.1

    DNS1=114.114.114.114

    Service network restart

    Ip addr

  c) 防火墙策略:

    firewall-cmd --zone=public --add-port=6379/tcp --permanent # 开放6379端口

    firewall-cmd --zone=public --remove-port=6379/tcp --permanet # 删除6379端口

    firewall-cmd --zone=public --add-port=26379/tcp --permanent # 开放26379端口

    firewall-cmd --zone=public --remove-port=26379/tcp --permanet # 删除26379端口

    firewall-cmd --reload # 配置立即生效

    firewall-cmd --zone=public --list-ports # 查看当前防火墙开放的端口

    systemctl stop firewalld.service # 关闭防火墙

    firewall-cmd --state # 查看防火墙状态

    netstat -lnpt # 查看端口开放状态

    ss -tanl #查看端口

  d) 配置环境:

    yum -y install gcc automake autoconf libtool make

    yum -y install tcl

    yum -y install telnet

    yum -y install openssh*

    systemctl enable sshd

    vim /etc/ssh/sshd_config # 配置ssh文件

    

Port 22

ListenAddress 192.168.8.111

PermitRootLogin yes

PasswordAuthentication yes

AllowUsers root #添加允许远程SSH登陆的用户名,空格隔开(需reboot)

 

 

三、配置redis:

  a) 上传或wget得到redis-5.0.2.tar.gz压缩包:

    cd /root

    wget http://download.redis.io/releases/redis-5.0.2.tar.gz

  b) 安装redis:

    tar -xzvf redis-5.0.2.tar.gz

    ll

    cd redis-5.0.2 #进入redis目录

    make # 编译

    make install # 执行安装,可用参数指定安装路径”PREFIX=/xxx/xxx”

  c) 测试redis正确安装:

    redis-server redis.conf # 启动redis服务,顺便看一下是否安装成功

    redis-cli -h 192.168.8.111 -p 6379 -a 1+1=2?Yes # 登陆redis命令界面

    redis-cli -h 192.168.8.111 -p 6379 -a 1+1=2?Yes shutdown # 关闭redis进程或kill

  d) 配置主从复制模式:

    1. Master端,修改conf文件:

      vim /root/redis-5.0.2/redis.conf #修改redis配置,完成后可用mv改名

      

protected-mode no # 允许远程访问

daemonize yes # redis服务后台运行

port 6379 # 端口号

logfile 7000.log # 日志文件及路径

dir ./ # 数据文件目录

requirepass 1+1=2?Yes # 配置redis登陆密码

masterauth 1+1=2?Yes # 配置哨兵模式选举时的内部访问密码

bind 192.168.8.111 127.0.0.1 # 配置外网访问IP

# AOF 数据持久化,主从模式必须开启

appendonly yes

appendfilename aof-7000.aof

appendfsync everysec

no-appendfsync-on-rewrite yes

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

 

    2. Slave端,修改conf配置文件:

      vim /root/redis-5.0.2/redis.conf #修改redis配置,完成后可用mv改名

      

protected-mode no # 允许远程访问

daemonize yes # redis服务后台运行

port 6379 # 端口号

logfile 7000.log # 日志文件及路径

dir ./ # 数据文件目录

requirepass 1+1=2?Yes # 配置redis登陆密码

slaveof 192.168.8.111 6379 # 绑定master的IP和端口

masterauth 1+1=2?Yes # 配置哨兵模式选举时的内部访问密码

bind 192.168.8.111 127.0.0.1 # 配置外网访问IP

# AOF 数据持久化,主从模式必须开启

appendonly yes

appendfilename aof-7000.aof

appendfsync everysec

no-appendfsync-on-rewrite yes

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

 

    3. 配置redis服务系统启动:

      cd /root/redis-5.0.2/untils/

      ./install_server.sh # 执行redis提供的系统启动解决方案,一路回车即可

      (注:执行完毕,会自动生成”/etc/init.d/redis_6379”脚本文件)

      chkconfig –add redis_6379 # 将生成的脚本写入自定义系统服务

      systemctl start redis_6379 # 启动服务,重启也成

      systemctl daemon-reload # 重启系统也可以

 

  e) 配置哨兵模式:

    1. 哨兵模式Sentinel架构示意图:

      

 

 

    2. 配置三台机器的conf,以启动Sentinel:

      cd /root/redis-5.0.2

      vim sentinel-26379.conf

      

port 26379 # 指定哨兵模式端口

daemonize yes #后台运行

logfile "/root/redis-5.0.2/26379.log" # 日志位置

dir "./" # 数据目录

sentinel monitor mymaster 192.168.8.111 6379 2

 # 指定监控主库mymaster的IP、端口、2台sentinel选举

sentinel down-after-milliseconds mymaster 30000

   # 指定失效30秒后mymaster为不可用

sentinel parallel-syncs mymaster 1 # 主备时只允许1台slave同步

sentinel failover-timeout mymaster 15000

sentinel auth-pass mymaster 1+1=2?Yes # 主从密码必须一致

bind 192.168.8.111 127.0.0.1 # 映射对外IP

      redis-sentinel sentinel-26379.conf

      # 其余2台slave的配置同上,只是bind映射的IP换成各自对外IP即可

    3. 测试Sentinel:

      当主mymaster故障关闭时,两台slavewf 选举出新的mymaster,自动切换主从,日志记录如下(可放大200%查看具体内容):

      

 

 

    4. 为了sentinel更好的运行,需要修改一些系统限制:

      (1) 修改open files:

        ulimit -n 10032 # 系统默认是1024

        ulimit -a # 再查看确认一下修改成功,重启后失效

        

永久修改open files数量,需要修改系统配置文件limits.conf如下:

vim /etc/security/limits.conf

增加如下信息:

* soft nofile 32768  #软限制

* hard nofile 65536  #硬限制

      (2) 修改net.core.somaxconn:

        vim /etc/sysctl.conf

        

net.core.somaxconn = 1024 #写入sysctl.conf,使系统默认128改成1024

        sysctl -p #重载sysctl.conf配置

    5. 配置sentinel服务系统运行:

      chmod +x /etc/rc.d/rc.local #赋权限

      chmod +x /etc/rc.local #赋软链接权限

      ll /etc/rc.* #查看确认一下赋rc.local的权限成功

      vim /etc/rc.local

      

redis-sentinel /root/redis-5.0.2/sentinel-26379.conf

      reboot #或init 6重启生效

 

  f) Redis的一些常用操作命令:

    redis-server redis.conf # 以redis.conf配置启动redis

    redis-sentinel sentinel-26379.conf # sentinel-26379.conf配置启动哨兵模式

    redis-cli -h 192.168.8.111 -p 6379 -h 1+1=2?Yes # 登陆redis命令界面

    set #添加记录

    get #获取一条记录

    keys * #显示当前redis中所有的记录

    info server #查询当前redis信息

    info replication #查询主从复制状态和关系

    info keyspace #查询keys所有数量

    flushdb #清库

posted @ 2021-12-14 12:32  天海沙  阅读(304)  评论(0)    收藏  举报