关闭防火墙和selinux
systemctl disable firewalld.service
systemctl stop firewalld
vim /etc/selinux/config
sed -n '7p' /etc/selinux/config
SELINUX=disabled
setenforce 0
从服务器首次做的是全量同步,且同步的数据会覆盖本机的数据
master 192.168.44.140 [root@z1 ~]#
slave 192.168.44.141 [root@z2 ~]#
1,在master节点z1和slave节点z2编译安装redis
tar xf redis-4.0.8.tar.gz
cd redis-4.0.8/
yum -y install make gcc
make && make install
初始化配置 (选项回车保持默认)
[root@z1 redis-4.0.8]# ./utils/install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf]
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log]
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379]
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server]
Selected config:
Port : 6379
Config file : /etc/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!
初始化完成后redis自动启动
[root@z1 redis-4.0.8]# ss -utnlp | grep redis
tcp LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=4910,fd=6))
[root@z2 redis-4.0.8]# ss -utnlp | grep redis
tcp LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=14578,fd=6))
2,配置一主一从
redis默认均为主的身份
主从结构的从服务器不允许执行存储数据的操作,只能读数据
运行的redis服务 必须使用本机的 物理网卡口的地址 接收连接请求 (使用默认的lo 地址无法彼此之间建立连接
2.1,修改配置文件,添加本机物理网卡接收请求,重启服务生效
修改配置文件
[root@z1 redis-4.0.8]# vim /etc/redis/6379.conf
[root@z1 redis-4.0.8]# sed -n '70p' /etc/redis/6379.conf
bind 127.0.0.1 192.168.44.140
重启查看
[root@z1 redis-4.0.8]# /etc/init.d/redis_6379 stop
Stopping ...
Redis stopped
[root@z1 redis-4.0.8]# ss -utnlp | grep redis
[root@z1 redis-4.0.8]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@z1 redis-4.0.8]# ss -utnlp | grep redis
tcp LISTEN 0 128 192.168.44.140:6379 *:* users:(("redis-server",pid=5169,fd=7))
tcp LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=5169,fd=6))
[root@z2 redis-4.0.8]# /etc/init.d/redis_6379 stop
Stopping ...
Redis stopped
[root@z2 redis-4.0.8]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@z2 redis-4.0.8]# ss -utnlp | grep redis
tcp LISTEN 0 128 192.168.44.141:6379 *:* users:(("redis-server",pid=14798,fd=7))
tcp LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=14798,fd=6))
2.2,连接服务器查看状态
两个服务器均为默认身份 主master role:master
两个服务器的从服务器均为0 connected_slaves:0
[root@z1 redis-4.0.8]# redis-cli -h 192.168.44.140 -p 6379
192.168.44.140:6379> ping
PONG
192.168.44.140:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:c8aae9e06288dee5f6f1ebb209fd3c8496290c31
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
192.168.44.140:6379>
[root@z2 redis-4.0.8]# redis-cli -h 192.168.44.141 -p 6379
192.168.44.141:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:c305720d6bdfd64c85a1f49afa1d6b3d95131ac8
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
192.168.44.141:6379>
2.3,配置主从。
把192.168.44.141 [root@z2 ~]# 设置为192.168.44.140 [root@z1 ~]#的从服务器
在192.168.44.141 [root@z2 ~]# 配置 指定主服务器的IP和端口
192.168.44.141:6379> slaveof 192.168.44.140 6379
OK
192.168.44.141:6379> info replication
# Replication
role:slave
master_host:192.168.44.140
master_port:6379
master_link_status:up
master_last_io_seconds_ago:9
master_sync_in_progress:0
slave_repl_offset:210
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:2adfaaeda40d88b94262c096cdcd3962396530ce
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:210
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:210
在192.168.44.140 [root@z1 ~]#服务器查看状态
[root@z1 redis-4.0.8]# redis-cli -h 192.168.44.140 -p 6379
192.168.44.140:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.44.141,port=6379,state=online,offset=728,lag=1
master_replid:2adfaaeda40d88b94262c096cdcd3962396530ce
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:728
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:728
3,验证一主一从
连接主服务器存储数据
连接从服务器查询数据
[root@z1 redis-4.0.8]# redis-cli -h 192.168.44.140 -p 6379
192.168.44.140:6379> keys *
(empty list or set)
192.168.44.140:6379> mset a 1 b 2 c 3 d 4
OK
192.168.44.140:6379> keys *
1) "d"
2) "b"
3) "a"
4) "c"
192.168.44.140:6379> mget a b c d
1) "1"
2) "2"
3) "3"
4) "4"
192.168.44.140:6379>
[root@z2 redis-4.0.8]# redis-cli -h 192.168.44.141 -p 6379
192.168.44.141:6379> keys *
1) "d"
2) "b"
3) "c"
4) "a"
192.168.44.141:6379> mget a b c d
1) "1"
2) "2"
3) "3"
4) "4"
192.168.44.141:6379>