Operation and maintenance
  • 目录
  • linux 历史
    • Linux网卡配置
    • linux互相登陆
  • 文件目录管理
    • linux目录结构
    • 文件的基本信息
    • linux别名alias
    • 环境变量
    • linux终端相关快捷键
    • linux文件和目录添加删除
    • linux文件查看命令
    • linux文件目录权限
    • linux文件特殊权限
    • 链接文件
    • linux下文件查找
    • linux和window文件互传
    • linux文件压缩和打包
    • vim工具集
  • 用户和组管理
    • 用户组和用户管理
    • 修改组和用户
    • 用户切换
    • 禁止root远程登陆
  • linux磁盘管理
    • 磁盘分区
    • 格式化磁盘
    • 分区挂载
    • 手动添加swap分区
    • lvm基础
  • linux软件安装和卸载
    • rpm工具
    • yum工具
    • 源码安装包
  • 日常运维
    • 监控磁盘IO
    • 查看网络状态
    • linux抓包
    • linux网络相关
    • Linux防火墙-netfilter
    • linux任务计划
    • linux系统服务管理
    • linux同步工具rsync
    • linux系统日志和screen
  • LAMP架构
    • 安装mysql
    • 免编译安装mariadb
    • 安装apache
    • 安装php5
    • 安装php7
    • apache 配置虚拟主机
    • apache 用户认证
    • apache 域名跳转
    • apache 访问日志
    • apache 不记录文件日志
    • apache 配置静态元素过期时间
    • apache 配置防盗链
    • apache 访问控制
    • apache 禁止解析php文件
    • apache 禁止user_agent
    • php 配置文件
    • php 动态扩展模块安装
  • LNMP架构
    • 安装mariadb
    • 安装php
    • 安装nginx
    • nginx 默认虚拟主机
    • nginx 用户认证
    • nginx 域名重定向
    • nginx 访问日志
    • nginx 日志切割
    • nginx不记录指定文件类型日志
    • nginx 静态文件和过期时间
    • nginx 防盗链
    • nginx 访问控制
    • nginx 解析php
    • nginx 代理
    • nginx 负载均衡
    • nginx 支持https
  • MySQL集合
    • 更改root密码
    • mysql 常用操作
    • mysql 常用sql
    • mysql 数据备份
    • mysql 主从配置
  • linux常用服务
    • nfs 服务搭建
    • CentOS7 搭建snmp服务
    • ftp 服务搭建
    • samba 服务搭建
    • Squid 服务搭建
    • Tomcat 服务搭建
    • resin 搭建
    • dns 服务搭建
    • iscsi 服务搭建
  • linux开发语言环境
    • python 开发环境
    • golang 开发环境
  • linux集群架构
    • linux 高可用
    • linux 负载均衡
  • linux监控平台
    • zabbix 监控平台(上)
  • shell集合
  • NoSql
    • memcached (上)
    • memcached(下)
    • redis(上)
    • redis(中)
    • redis(下)
    • mongodb(上)
    • mongodb(中)
    • mongodb(下)
  • 代码管理工具
    • 代码管理工具 svn
    • 代码管理工具 git
    • 搭建git私有仓库
    • 安装配置gitlab
  • docker 入门
    • docker 安装
    • docker 镜像管理
    • docker 容器管理
    • docker 仓库管理
    • docker 共享目录
    • docker 数据备份和恢复
    • docker 网络管理
    • docker 使用dockerfile
    • docker compose
  • 自动化运维
    • saltstack 安装
    • saltstack 配置认证
    • saltstack 远程执行命令
    • saltstack grains
    • saltstack pillar
    • saltstack 实战:安装配置httpd
    • saltstack 实战:配置管理文件
    • saltstack 实战:配置管理远程命令
    • saltstack 实战:配置管理任务计划
    • saltstack salt-ssh工具
    • ansible 安装
    • ansible 远程命令
    • ansible 远程目录拷贝
    • ansible 任务计划
    • ansible 远程rpm/服务管理
    • ansible playbook 详解
    • ansible playbook 实战:安装nginx
  • linux虚拟化
    • KVM介绍
    • 安装KVM
    • 虚拟机管理
    • 克隆虚拟机
    • 快照管理
    • 磁盘扩容
    • 调整虚拟机配置
    • 迁移虚拟机
  • 错误排查
    • linux启动挂在不上sysroot问题
由 GitBook 提供支持
在本页
  • redis 安全设置
  • redis 慢查询日志
  • 添加php的redis扩展
  • Redis实现session共享
  • Redis主从配置
  • Redis集群
  • Redis集群命令

这有帮助吗?

  1. NoSql

redis(下)

redis 安全设置

由于redis没有密码有监听在所有端口,非常不安全。可以通过以下一些方法来防范。

1.设置监听ip

bashbind 127.0.0.1 2.2.2.2//可以是多个ip,用空格分隔

2.设置监听端口

port 16000

3.设置密码

requirepass pass>word
redis-cli  -a 'pass>word'

4.将config命令改名

rename-command CONFIG default

# 禁掉config命令 

rename-command CONFIG ""

redis 慢查询日志

编辑配置文件/etc/redis.conf

针对慢查询日志,可以设置两个参数,一个是执行时长,单位是微秒,另一个是慢查询日志的长度。当一个新的命令被写入日志时,最老的一条会从命令日志队列中被移除。

slowlog-log-slower-than 1000 # 单位ms,表示慢于1000ms则记录日志

slowlog-max-len 128          # 定义日志长度,表示最多存128条


slowlog get   # 列出所有的慢查询日志

slowlog get 2 # 只列出2条

slowlog len   # 查看慢查询日志条数

添加php的redis扩展

下载

wget https://codeload.github.com/phpredis/phpredis/zip/develop
mv develop phpredis.zip
unzip phpredis.zip

编译安装

cd phpredis-develop/

/usr/local/php/bin/phpize         #生成./configure 文件

./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

修改配置文件

vim /usr/local/php/etc/php.ini
# 添加行
extension = redis.so
#查看是否成功
/usr/local/php/bin/php -m |grep redis

Redis实现session共享

多种方法

# 第一种:php.ini中加入
session.save_handler = "redis"
session.save_path = "tcp://127.0.0.1:6379"
# 第二种:Apache虚拟主机中加入
php_value session.save_handler "redis"
php_value session.save_path "tcp://127.0.0.1:6379"
# 第三种:php-fpm.conf对应的pool中加入
php_value[session.save_handler] = redis
php_value[session.save_path] = "tcp://127.0.0.1:6379"

Redis存储session测试

编辑测试文件/usr/local/apache2/htdocs/session.php

<?php 
        session_start(); 
        if (!isset($_SESSION['TEST'])) { 
                $_SESSION['TEST'] = time(); 
        } 
        $_SESSION['TEST3'] = time(); 
        print $_SESSION['TEST']; 
        print "<br><br>"; 
        print $_SESSION['TEST3']; 
        print "<br><br>"; 
        print session_id(); 
?>
# curl localhost/session.php
1455899141<br><br>1455899141<br><br>cn3ujd9pt0hdf69hecpudfij21

# /usr/local/redis/bin/redis-cli
127.0.0.1:6379> get PHPREDIS_SESSION:cn3ujd9pt0hdf69hecpudfij21
"TEST|i:1455899141;TEST3|i:1455899141;"

Redis主从配置

两台服务器: master(192.168.127.128) slave(192.168.127.129)

先安装好redis并启动

master配置不变

slave配置文件上添加行

# vim /usr/local/redis/etc/redis.conf

slaveof 192.168.127.128 6379       #主的IP和端口

# 如果master上有设置密码,在添加行
masterauth passwd

分别启动master和slave

[root@localhost ~]# tail /var/log/redis.log 
4479:M 08 Sep 19:14:21.663 * Synchronization with slave 192.168.127.129:6379 succeeded
4479:M 08 Sep 19:14:34.277 # Connection with slave 192.168.127.129:6379 lost.
4479:M 08 Sep 19:14:50.656 * Slave 192.168.127.129:6379 asks for synchronization
4479:M 08 Sep 19:14:50.656 * Full resync requested by slave 192.168.127.129:6379
4479:M 08 Sep 19:14:50.656 * Starting BGSAVE for SYNC with target: disk
4479:M 08 Sep 19:14:50.657 * Background saving started by pid 4485
4485:C 08 Sep 19:14:50.659 * DB saved on disk
4485:C 08 Sep 19:14:50.659 * RDB: 6 MB of memory used by copy-on-write
4479:M 08 Sep 19:14:50.753 * Background saving terminated with success
4479:M 08 Sep 19:14:50.753 * Synchronization with slave 192.168.127.129:6379 succeeded

Redis主从其他相关配置

slave-read-only yes   #让从只读
repl-ping-slave-period 10  #设置slave向master发起ping的频率,每10s发起一次
repl-timeout 60  #设置slave ping不通master多少s后就超时
repl-disable-tcp-nodelay no  #是否开启tcp_nodelay,开启将会使用更少带宽,但会有延迟
repl-backlog-size 1mb   #同步队列的长度,backuplog时master的一个缓冲区,主从断开后,master会先吧数据写到缓冲后,slave再次连接会从缓冲区同步数据
repl-backlog-ttl 3600   #主从断开后,缓冲区的有效时间,单位秒,默认1小时
slave-priority 100    #多个slave时可以设置优先级的,数值越小优先级越高,应用于集群中,优先级高的会在主down后代替主
min-slave-to-write 3  #和下面的一起使用,它的意思是master发现有超过3个slave的延迟高于10s,那么master就会暂时停止写操作。这两个数据任何一个为0,则关闭改功能,默认第一数值为0
min-slaves-max-lay 10  #最大延迟时长

Redis集群

多个redis节点网络互联,数据共享 ,所有的节点都是一主一从(可以是多个从),其中从不提供服务,仅作为备用 。不支持同时处理多个键(如mset/mget),因为redis需要把键均匀分布在各个节点上,并发量很高的情况下同时创建键值会降低性能并导致不可预测的行为。 支持在线增加、删除节点 客户端可以连任何一个主节点进行读写。

场景设置:

两台机器,分别开启三个Redis服务(端口)

  • A机器上三个端口7000,7002,7004,全部为主

  • B机器上三个端口7001,7003,7005,全部为从

两台机器上都要编译安装redis,然后编辑并复制3个不同的redis.conf,分别设置不同的端口号、dir等参数,还需要增加cluster相关参数,然后分别启动6个redis服务 。

配置redis

如在A机器上:

# /etc/redis_7000.conf

port 7000
bind 192.168.127.128
daemonize yes
pidfile /var/run/redis_7000.pid
dir /data/redis_data/7000
cluster-enabled yes
cluster-config-file nodes_7000.conf
cluster-node-timeout 10100
appendonly yes
# /etc/redis_7002.conf

port 7002
bind 192.168.127.128
daemonize yes
pidfile /var/run/redis_7002.pid
dir /data/redis_data/7002
cluster-enabled yes
cluster-config-file nodes_7002.conf
cluster-node-timeout 10100
appendonly yes
# /etc/redis_7004.conf

port 7004
bind 192.168.127.128
daemonize yes
pidfile /var/run/redis_7004.pid
dir /data/redis_data/7004
cluster-enabled yes
cluster-config-file nodes_7004.conf
cluster-node-timeout 10100
appendonly yes

创建存储目录

mkdir /data/redis_data
mkdir /data/redis_data/{7000,7002,7004}

然后再B机器上

# /etc/redis_7001.conf

port 7001
bind 192.168.127.129
daemonize yes
pidfile /var/run/redis_7001.pid
dir /data/redis_data/7001
cluster-enabled yes
cluster-config-file nodes_7001.conf
cluster-node-timeout 10100
appendonly yes
# /etc/redis_7003.conf

port 7003
bind 192.168.127.129
daemonize yes
pidfile /var/run/redis_7003.pid
dir /data/redis_data/7003
cluster-enabled yes
cluster-config-file nodes_7003.conf
cluster-node-timeout 10100
appendonly yes
# /etc/redis_7004.conf

port 7005
bind 192.168.127.129
daemonize yes
pidfile /var/run/redis_7005.pid
dir /data/redis_data/7005
cluster-enabled yes
cluster-config-file nodes_7005.conf
cluster-node-timeout 10100
appendonly yes

创建存储目录

mkdir /data/redis_data
mkdir /data/redis_data/{7001,7003,7005}

安装ruby2.2

安装ruby2.2可以选择源码编译安装也可以将源码包转成rpm包再安装。这个选择第二种。

安装相关组件

yum -y groupinstall "Development Tools"

yum -y install gdbm-devel libdb4-devel libffi-devel libyaml libyaml-devel ncurses-devel openssl-devel readline-devel tcl-deve

将源码包转成rpm

cd /root/

mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

wget http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz -P rpmbuild/SOURCES

wget https://raw.githubusercontent.com/tjinjin/automate-ruby-rpm/master/ruby22x.spec -P rpmbuild/SPECS

rpmbuild -bb rpmbuild/SPECS/ruby22x.spec

安装ruby

yum -y localinstall rpmbuild/RPMS/x86_64/ruby-2.2.3-1.el7.centos.x86_64.rpm

gem install redis

配置集群

cp /usr/local/src/redis-4.0.1/src/redis-trib.rb  /usr/bin/

redis-trib.rb create --replicas 1 192.168.127.128:7000 192.168.127.128:7002 192.168.127.128:7004 192.168.127.129:7001 192.168.127.129:7003 192.168.127.129:7005

Redis集群命令

redis-cli -c -h 192.168.133.130 -p 7000  # -c说明以集群的方式登录
 任意一个节点都可以创建key,或者查看key(演示)

redis-trib.rb check 192.168.133.130:7000 # 检测集群状态
127.0.0.1:7000> cluster nodes # 列出节点


127.0.0.1:7000> cluster info  # 查看集群信息


127.0.0.1:7000> cluster meet ip port # 添加节点,新加的节点默认为master


127.0.0.1:7000> cluster forget node_id # 移除某个节点,不能移除master的,且不能再登陆这台节点的情况下移除


127.0.0.1:7000> cluster replicate node_id # 将当前节点设置为指定节点的从,要先登陆这个节点


127.0.0.1:7000> cluster saveconfig # 保存配置文件
上一页redis(中)下一页mongodb(上)

最后更新于4年前

这有帮助吗?

如果想用php连接redis cluster,需要使用predis扩展 安装方法类似phpredis,predis扩展地址

https://github.com/nrk/predis