redis安全设置及主从配置

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

#设置监听ipbind 127.0.0.1 2.2.2.2   #可以是多个ip,使用空格分隔#设置监听端口prot 63634#配置文件中设置登录密码,设置后使用redis-cli-a'password'指定密码来登录redis、requitepass  newpasswd#将config命令改名为其他字符rename-command CONFIG linux#禁用config命令,找到配置行将其命令的参数改为空,如:rename-command CONFIG ""

redis慢查询日志

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

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

慢日志配置项:

slowlog-log-slower-then10000#单位ms(毫秒),表示慢于10000ms的执行时间则记录日志slowlog-max-len128#定义日志长度,表示最多存储128条日志

redis的慢日志是存储在内存当中的,要查看慢日志必须要登入redis的命令终端来使用命令来查看慢日志记录

slowlogget#列出所有慢查询日志slowlogget2#只列出两条查询日志slowlog len#查看慢查询日志条数

在php中安装redis模块

首先在下载好php的redis模块,需要解压并编译到php当中

下载redis模块可以在google或者redis支持中查找(自行寻找)

这里可以在php官网找到github上的下载地址,下载下来的包为zip压缩格式

将下载后的包解压

[root@nfs1 src]# unzip phpredis.zip Archive: phpredis.zip837b1ae51fb2e79849f35cc21f373a4c3187f828   creating: phpredis-develop/  inflating: phpredis-develop/.gitignore --------------------省略

进入到解压目录下,使用phpize来生成编译文件,并执行./configure编译安装模块

[root@nfs1 src]# cd phpredis-develop/[root@nfs1 phpredis-develop]# /usr/local/php-fpm/bin/phpize Configuringfor:PHP Api Version:20160303Zend Module Api No:20160303Zend Extension Api No:320160303[root@nfs1 phpredis-develop]# ./configure --with-php-config=/usr/local/php-fpm/bin/php-config checkingforgrepthat handles long linesand-e... /usr/bin/grepcheckingforegrep... /usr/bin/grep-E-----------------------省略[root@nfs1 phpredis-develop]# make-----------------------省略Build complete.Don't forget to run 'make test'.

[root@nfs1 phpredis-develop]# make install

Installing shared extensions: /usr/local/php-fpm/lib/php/extensions/no-debug-non-zts-20160303/

php需要注意一个地方,在安装php服务时,使用的编译参数中指定的php.ini路径不能错误,否则在修改php.ini添加模块时,模块不会被加载上。造成编译好模块也不会被php加载使用

图中是php的配置文件php.ini的路径,这个路径是在php编译时指定的

编辑php.ini文件,在配置文件中增加redis的模块配置项

[root@nfs1 phpredis-develop]# vim /usr/local/php-fpm/etc/php.ini----------------------省略配置文件内容extension=redis.so

重启php-fpm,然后执行php -m查看所有模块,并过滤显示出redis模块

[root@nfs1 phpredis-develop]# /usr/local/php-fpm/bin/php -m |grep redisredis

redis存储session

修改/usr/local/php-fpm/etc/php-fpm.conf配置文件,在配置文件中指定redis的服务地址及端口,如:

[root@nfs1 etc]# cat php-fpm.conf[global]pid = /usr/local/php-fpm/var/run/php-fpm.piderror_log = /usr/local/php-fpm/var/log/php-fpm.log​[www]listen = 192.168.1.234:9000listen.mode = 666user = php-fpmgroup = php-fpm  pm = dynamicpm.max_children = 50pm.start_servers = 20pm.min_spare_servers = 5         pm.max_spare_servers = 35pm.max_requests = 500rlimit_files = 1024php_value[session.save_handler] = redisphp_value[session.save_path] ="tcp://127.0.0.1:6379"

测试php使用redis存储session数据

在nginx虚拟主机指定的网站页面路径下创建一个测试页面,这里创建的名称为index.php,能够直接访问域名就能得出测试session信息

[root@nfs1 aaa.com]# cat index.php               查看测试页的语句<?phpsession_start();if(!isset($_SESSION['TEST'])) {$_SESSION['TEST'] = time();}$_SESSION['TEST3'] = time();print$_SESSION['TEST'];print"<br><br>";print$_SESSION['TEST3'];print"<br><br>";printsession_id();?>[root@nfs1 b.com]# curl localhost/1.php1542173659

1542173659

1t8v3k3io2j707ah15qr1hskse[root@nfs1 b.com]# curl localhost/1.php1542173661

1542173661

iprg7uugki44g78dfh2kvpcsk0[root@nfs1 b.com]# curl localhost/1.php1542173662

1542173662

o5tgkueq5o2h5j0egj8sia14jt[root@nfs1 b.com]# curl localhost/1.php1542173667

1542173667

uq0cq2n6ab2sks5bphs4cse0un

登入redis查看存储的session数据  小程序开发找上海捌跃网络科技有限公司

[root@nfs1 b.com]#redis-cli127.0.0.1:6379>keys*1) "PHPREDIS_SESSION:iprg7uugki44g78dfh2kvpcsk0"2) "PHPREDIS_SESSION:uq0cq2n6ab2sks5bphs4cse0un"3) "PHPREDIS_SESSION:o5tgkueq5o2h5j0egj8sia14jt"4) "PHPREDIS_SESSION:1t8v3k3io2j707ah15qr1hskse"

配置php-fpm.conf需要注意在配置redis服务ip的时候,要以"tcp://ip+prot"的格式。否则在测试写入session是不成功的,redis存储不了session数据的

redis主从配置

这里我在两台机器上安装了redis,其中192.168.1.234为主redis,192.168.1.200为从redis。

我需要在主redis上开启监听本机可与其他主机通信的监听ip。根据需要,可以在主redis上设置redis的登入密码,确保redis安全

修改redis的配置文件,让其监听两个ip,其中127.0.0.1我在php中配置了session数据写入,监听localhost的ip暂不更改

监听多个ip使用空格来分割。配置如下:

[root@nfs1 b.com]# vim /etc/init.d/redis.conf----------------------省略bind127.0.0.1192.168.1.234

找到bind配置监听ip并保存退出

kill掉redis服务。然后重新启动redis

[root@nfs1 b.com]# killall redis-server[root@nfs1 b.com]# /usr/local/bin/redis-server /etc/init.d/redis.conf

查看redis服务新的监听信息

[root@nfs1 b.com]# netstat -ntlp |grep 6379tcp00192.168.1.234:63790.0.0.0:*LISTEN91823/redis-server  tcp00127.0.0.1:63790.0.0.0:*LISTEN91823/redis-server

接下来在从上操作

指定主的redis监听ip和端口信息,同样编辑redis.conf配置文件

如果是在一台服务器上安装两个redis,则需要修改其port、dir、pidfile和logfile的信息和文件存储路径

在配置文件中找到slaveof这行(新版本的redis在配置文件中则是replicaof的配置项),配置文件说明如下:

# +------------------+ +---------------+# | Master | ---> | Replica |# | (receive writes) | | (exact copy) |# +------------------+ +---------------+## 1) Redis replication is asynchronous, but you can configure a master to# stop accepting writes if it appears to be not connected with at least# a given number of replicas.# 2) Redis replicas are able to perform a partial resynchronization with the# master if the replication link is lost for a relatively small amount of# time. You may want to configure the replication backlog size (see the next# sections of this file) with a sensible value depending on your needs.# 3) Replication is automatic and does not need user intervention. After a# network partition replicas automatically try to reconnect to masters# and resynchronize with them.## replicaof <masterip> <masterport>添加一行master端监听的ip和端口配置replicaof192.168.1.2346379# If the master is password protected (using the "requirepass" configuration# directive below) it is possible to tell the replica to authenticate before# starting the replication synchronization process, otherwise the master will# refuse the replica request.## masterauth <master-password>配置密码:如果主redis存在登入密码。那么就需要在这里设定master上的登入密码,如:masterauth123456#Note:read only replicas are not designed to be exposed to untrusted clients# on the internet. It's just a protection layer against misuse of the instance.# Still a read only replica exports by default all the administrative commands# such as CONFIG, DEBUG, and so forth. To a limited extent you can improve# security of read only replicas using 'rename-command' to shadow all the# administrative / dangerous commands.replica-read-onlyyes配置从是否为只读,开启后从则不能写入数据,旧版本配置项则是:slave-read-onlyyes

在slave端重启redis,并在从redis查看是否有数据同步过来

在主上创建新的key,并且切换到从上查看是否同步

[root@nfs1 b.com]#redis-cli127.0.0.1:6379>zaddzset11abc(integer) 1127.0.0.1:6379>zaddlinux11 123(integer) 1127.0.0.1:6379>zaddcentos1 123(integer) 1127.0.0.1:6379>keys*1) "linux1"2) "centos"3) "zset1"

在从redis上查看这些数据是否存在

[root@localhost data]# redis-cli127.0.0.1:6379>keys *1)"centos"2)"linux1"3)"zset1"

开启只读后,从redis是无法写入的,比如如下操作

127.0.0.1:6379>set ksy10123(error) READONLY You can't write against a read only replica.

操作的结果不太好区分,但以上操作都是通过验证过的,没有出现不能同步问题,redis是自己实现自动同步数据的,只需要指定master的监听ip即可,可以在从服务器上使用redis-cli  -h  ip -p  port  来登录主redis验证连通的可用性

转自:http://blog.51cto.com/8844414/2316796

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容