【原创】Redis安装及配置之V3.2-V4.0单机主从哨兵搭建

2019-01-04  本文已影响0人  箛獨劍

目录

QQ截图20190104141720.png

1. 单机安装方法

1.1 下载安装包

官方下载地址

1.2 解压到特定目录

[root@localhost 7101]# pwd
/usr/local/mredisCluster/7101
[root@localhost 7101]# ls
redis3.2.11  redis-3.2.11.tar.gz
[root@localhost 7101]# tar -zxvf redis-3.2.11.tar.gz 

1.3 执行make和make install

[root@localhost redis3.2.11]# make
cd src && make all
make[1]: 进入目录“/usr/local/mredisCluster/7101/redis3.2.11/src”
rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html
……
……
Hint: It's a good idea to run 'make test' ;)
make[1]: 离开目录“/usr/local/mredisCluster/7101/redis3.2.11/src”

[root@localhost redis3.2.11]# make install
cd src && make install
make[1]: 进入目录“/usr/local/mredisCluster/7101/redis3.2.11/src”

Hint: It's a good idea to run 'make test' ;)

    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
make[1]: 离开目录“/usr/local/mredisCluster/7101/redis3.2.11/src”

1.4 基本配置

找到redis主目录下,本文为“/usr/local/mredisCluster/7101/redis3.2.11”的redis.conf文件,在redis.conf文件中,找到并修改如下内容

1.4.1 安全的生产环境最小配置

【下载-redis.conf】

port 7101
daemonize yes
protected-mode yes
bind ip 192.168.0.167
requirepass bamboocloud

1.4.2 开发时最省心的最小配置

port 6379
daemonize yes
protected-mode no
# bind ip 127.0.0.1
# requirepass foobared

1.4.3 配置 保护模式(protected-mode)

# 说明:保护模式yes-开启;

protected-mode yes

# 说明:保护模式no-关闭;bind ip-注释掉;requirepass-注释掉

protected-mode no
# bind ip 127.0.0.1
# requirepass foobared

1.4.4 <span id="jump"> 配置提供服务地址(bind ip)</span>

原文参见:配置redis外网可访问

翻看网上的文章,此处多翻译为“指定redis只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求,在生产环境中最好设置该项”。这种解释会totally搞糊涂初学者,甚至是错误的。
该处说明bind的是interface,也就是说是网络接口。服务器可以有一个网络接口(通俗的说网卡),或者多个。打个比方说机器上有两个网卡,分别为192.168.205.5 和192.168.205.6,如果bind 192.168.205.5,那么只有该网卡地址接受外部请求,如果不绑定,则两个网卡口都接受请求。
OK,不知道讲清楚没有,在举一个例子。在我上面的实验过程中,我是将bind项注释掉了,实际上我还有一种解决方案。由于我redis服务器的地址是 192.168.1.4 。如果我不注释bind项,还有什么办法呢?我可以做如下配置:

# bind 192.168.1.4

这里很多人会误以为绑定的ip应该是请求来源的ip。其实不然,这里应该绑定的是你redis服务器本身接受请求的ip。
该处的英文原文为

# If you want you can bind a single interface, if the bind option is not
# specified all the interfaces will listen for incoming connections.
# bind 127.0.0.1

所以bind后面的ip的意思,并不是限制客户端的地址,而是限制的服务端提供服务的地址。因为我服务器只有一个实际的物理网卡,我实际的配置就是这个网卡的地址:

#1. bind 127.0.0.1 改为实际地址
bind 192.168.0.167

1.4.5 配置端口

默认端口为6379,可根据个人情况指定(特别是集群和哨兵的时候需要指定),注意放开防火墙。

port 6379

1.4.6 配置连接密码

不需要密码时,注释掉本行内容,否则填入相应的密码

requirepass foobared

1.4.7 配置为守护模式

守护模式说明

requirepass foobared

2. 一主两从配置

2.1 直接复制单机环境并修改基本配置

2.1.1 复制环境

新建7102和7103目录,复制redis主目录中所有内容

[root@localhost mredisCluster]# ls
7101  7102  7103
[root@localhost mredisCluster]# cd 7103
[root@localhost 7103]# cp -rf ../7101/redis3.2.11/ .
[root@localhost 7103]# ls
redis3.2.11

2.1.2 修改部分配置

修改端口为保持和文件夹命名一致

[root@localhost 7103]# 
[root@localhost 7103]# vim redis3.2.11/redis.conf 

port 7103

2.2 修改配置形成主从集群

2.2.1 分别修改7102和7103的redis配置

[root@localhost 7103]# pwd
/usr/local/mredisCluster/7103
[root@localhost 7103]# vim redis3.2.11/redis.conf 


# slaveof <masterip> <masterport>
slaveof 192.168.0.167 7101
# masterauth <master-password>
masterauth bamboocloud


2.2.2 为redis提供日志输出

logfile "/usr/local/mredisCluster/7103/7103.log"

2.2.3 主从复制排错

110531:S 25 Dec 14:27:35.803 * MASTER <-> SLAVE sync started
110531:S 25 Dec 14:27:35.803 * Non blocking connect for SYNC fired the event.
110531:S 25 Dec 14:27:35.804 * Master replied to PING, replication can continue...
110531:S 25 Dec 14:27:35.804 * (Non critical) Master does not understand REPLCONF listening-port: -NOAUTH Authentication required.
110531:S 25 Dec 14:27:35.804 * (Non critical) Master does not understand REPLCONF capa: -NOAUTH Authentication required.
110531:S 25 Dec 14:27:35.804 * Partial resynchronization not possible (no cached master)
110531:S 25 Dec 14:27:35.804 # Unexpected reply to PSYNC from master: -NOAUTH Authentication required.

3. 新增哨兵配置

哨兵科普文章《
Redis哨兵配置详解》

3.1 哨兵端口规划

目前主从实例为7101为master、7102和7103为slave从节点;
所以,规划三个哨兵,端口分别为7201、7202、7203;

3.2 哨兵配置

# The valid charset is A-z 0-9 and the three characters ".-_".

sentinel monitor mymaster 192.168.0.167 7101 1
sentinel auth-pass mymaster bamboocloud

logfile "/usr/local/mredisCluster/7101/sen.log"
bind 192.168.0.167
masterauth "bamboocloud"
protected-mode yes
daemonize yes

3.3 启动哨兵

[root@localhost redis3.2.11]# ./src/redis-server sentinel.conf --sentinel



3.4 哨兵排错

3.4.1 离线的node重新加入后,与master无法通信问题

master_link_status:down
#redis.conf的配置
masterauth bamboocloud

3.4.2 启动哨兵时,显示如下错误

*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 69
>>> 'sentinel monitor mymaster 192.168.0.167 7101 1'
sentinel directive while not in sentinel mode

3.5 哨兵测试

root      79041  0.0  0.1 136972  2744 pts/0    Sl   16:56   0:00 ./src/redis-server *:7203 [sentinel]
root      80313  0.0  0.1 136972  2728 pts/0    Sl   16:58   0:00 ./src/redis-server *:7202 [sentinel]
root      81751  0.0  0.1 136972  2736 pts/0    Sl   17:00   0:00 ./src/redis-server *:7201 [sentinel]
root      88103  0.0  0.0 112724   984 pts/1    S+   17:10   0:00 grep --color=auto redis
root     111014  0.0  0.1 139020  2496 ?        Ssl  11:09   0:11 ./redis-server 192.168.0.167:7101
root     118507  0.0  0.1 136968  2356 ?        Ssl  14:38   0:04 ./redis3.2.11/src/redis-server 192.168.0.167:7102
root     119332  0.0  0.1 136968  2360 ?        Ssl  14:39   0:04 ./src/redis-server 192.168.0.167:7103

root      19802  0.0  0.1 136968  2580 ?        Ssl  18:43   0:03 ./src/redis-server 192.168.0.167:7201 [sentinel]
root      31755  0.0  0.1 136968  2480 ?        Ssl  19:01   0:02 ./src/redis-server 192.168.0.167:7202 [sentinel]
root      32986  0.1  0.1 136968  2508 ?        Ssl  19:03   0:02 ./src/redis-server 192.168.0.167:7203 [sentinel]
root      36312  0.1  0.1 139020  2716 ?        Ssl  19:08   0:03 ./src/redis-server 192.168.0.167:7101
root      61598  0.0  0.2 151648  5188 pts/2    S+   19:46   0:00 vim redis3.2.11/sentinel.conf
root      62737  0.0  0.0 112724   980 pts/1    S+   19:48   0:00 grep --color=auto redis
root     102469  0.0  0.1 139016  3132 ?        Ssl  17:31   0:05 ./src/redis-server 192.168.0.167:7102
root     119332  0.0  0.1 139016  2864 ?        Ssl  14:39   0:09 ./src/redis-server 192.168.0.167:7103


192.168.0.167-7101:0>info replication
"# Replication
role:master
connected_slaves:2
slave0:ip=192.168.0.167,port=7102,state=online,offset=12937,lag=1
slave1:ip=192.168.0.167,port=7103,state=online,offset=12937,lag=0
master_repl_offset:12937
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:12936
192.168.0.167-7102:0>info replication
"# Replication
role:slave
master_host:192.168.0.167
master_port:7101
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_repl_offset:13203
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
"
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.2.11 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in sentinel mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 7201
 |    `-._   `._    /     _.-'    |     PID: 19802
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

19802:X 25 Dec 18:43:27.143 # Sentinel ID is 1c46113935b50308d1b5c77d096c34903501fb08
19802:X 25 Dec 18:43:27.143 # +monitor master mymaster 192.168.0.167 7101 quorum 1
19802:X 25 Dec 18:43:57.182 # +sdown master mymaster 192.168.0.167 7101
19802:X 25 Dec 18:43:57.182 # +odown master mymaster 192.168.0.167 7101 #quorum 1/1
19802:X 25 Dec 18:43:57.182 # +new-epoch 17
19802:X 25 Dec 18:43:57.182 # +try-failover master mymaster 192.168.0.167 7101
19802:X 25 Dec 18:43:57.216 # +vote-for-leader 1c46113935b50308d1b5c77d096c34903501fb08 17
19802:X 25 Dec 18:43:57.216 # +elected-leader master mymaster 192.168.0.167 7101
19802:X 25 Dec 18:43:57.216 # +failover-state-select-slave master mymaster 192.168.0.167 7101
19802:X 25 Dec 18:43:57.306 # -failover-abort-no-good-slave master mymaster 192.168.0.167 7101
19802:X 25 Dec 18:43:57.373 # Next failover delay: I will not start a failover before Tue Dec 25 18:49:57 2018
20397:X 25 Dec 18:44:21.017 * Increased maximum number of open files to 10032 (it was originally set to 1024).
20397:X 25 Dec 18:44:21.017 # Creating Server TCP listening socket 192.168.0.167:7201: bind: Address already in use
21388:X 25 Dec 18:45:50.958 * Increased maximum number of open files to 10032 (it was originally set to 1024).
21388:X 25 Dec 18:45:50.958 # Creating Server TCP listening socket 192.168.0.167:7201: bind: Address already in use
19802:X 25 Dec 18:49:29.070 * +slave slave 192.168.0.167:7102 192.168.0.167 7102 @ mymaster 192.168.0.167 7101
19802:X 25 Dec 18:49:29.142 # -sdown master mymaster 192.168.0.167 7101
19802:X 25 Dec 18:49:29.142 # -odown master mymaster 192.168.0.167 7101
19802:X 25 Dec 18:49:39.169 * +slave slave 192.168.0.167:7103 192.168.0.167 7103 @ mymaster 192.168.0.167 7101
19802:X 25 Dec 19:01:31.279 * +sentinel sentinel 22dc756cc162e34b53036b97c1c067493a11dfc5 192.168.0.167 7202 @ mymaster 192.168.0.167 7101
19802:X 25 Dec 19:03:22.252 * +sentinel sentinel 1fb55102b245eeedd35007821b8bae50ba0e793d 192.168.0.167 7203 @ mymaster 192.168.0.167 7101
w^H




19802:X 25 Dec 19:06:05.291 # +new-epoch 18
19802:X 25 Dec 19:06:05.302 # +vote-for-leader 1fb55102b245eeedd35007821b8bae50ba0e793d 18
19802:X 25 Dec 19:06:05.314 # +sdown master mymaster 192.168.0.167 7101
19802:X 25 Dec 19:06:05.314 # +odown master mymaster 192.168.0.167 7101 #quorum 1/1
19802:X 25 Dec 19:06:05.314 # Next failover delay: I will not start a failover before Tue Dec 25 19:12:05 2018
19802:X 25 Dec 19:06:06.108 # +config-update-from sentinel 1fb55102b245eeedd35007821b8bae50ba0e793d 192.168.0.167 7203 @ mymaster 192.168.0.167 7101
19802:X 25 Dec 19:06:06.108 # +switch-master mymaster 192.168.0.167 7101 192.168.0.167 7102
19802:X 25 Dec 19:06:06.108 * +slave slave 192.168.0.167:7103 192.168.0.167 7103 @ mymaster 192.168.0.167 7102
19802:X 25 Dec 19:06:06.108 * +slave slave 192.168.0.167:7101 192.168.0.167 7101 @ mymaster 192.168.0.167 7102

19802:X 25 Dec 19:06:36.114 # +sdown slave 192.168.0.167:7101 192.168.0.167 7101 @ mymaster 192.168.0.167 7102
19802:X 25 Dec 19:08:19.746 # -sdown slave 192.168.0.167:7101 192.168.0.167 7101 @ mymaster 192.168.0.167 7102
19802:X 25 Dec 19:08:29.721 * +convert-to-slave slave 192.168.0.167:7101 192.168.0.167 7101 @ mymaster 192.168.0.167 7102

上一篇下一篇

猜你喜欢

热点阅读