世界上最伟大的投资就是投资自己的教育

首页Redis
随风 · 练气

Redis 的复制与 Nginx 的 tcp 负载均衡的结合

随风发布于2877 次阅读

1. redis 的复制

redis 的复制除去源码级的代码不说,要操作起来实在太简单,我们这里就不介绍它的定义了。

它具体的内容都可以在官方文档查到。

这一节只是来介绍它的实践和与 nginx 的结合。

首先,已经有了一台主服务器,监听在 6379 端口。

它的配置文件位于/usr/local/etc/redis.conf

现在我们要制造一个从服务器。

那很简单,只要监听在别的端口就可以了。

我们把配置文件复制一份,改成/usr/local/etc/redis-slave.conf

找到类似下面的内容改一下:

pidfile /usr/local/var/run/redis-slave.pid

port 6380

我们把从服务器监听在 6380 端口。

再把它启动起来。

$ redis-server /usr/local/etc/redis-slave.conf

现在我们需要开启一个客户端,连接上从服务器,再去同步主服务器的数据。

我们使用 redis-cli 客户端。

$ redis-cli -p 6380

接着执行以下命令表示设置为从服务器。

slaveof 127.0.0.1 6379

现在已接完成了 redis 的复制了,至于效果,可以在主服务器上添加一些内容,再到从服务器上看是否有一样的结果。

如果要查看复制的情况,可以用下面的命令:

$ info replication

输出:

# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6380,state=online,offset=753,lag=1
master_repl_offset:753
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:752

2. nginx 的 tcp 负载均衡

nginx 自从 1.9 之后,就有 tcp 负载均衡了。

它使用的是ngx_stream_core_module这个模块,默认是没有编译的,你要重新编译一下。重新编译的时候使用--with-stream这个选项即可。

在 nginx 配置文件中,添加类似这样的内容:

stream {
    upstream backend {
        server 127.0.0.1:6379            max_fails=3 fail_timeout=30s;
        server 127.0.0.1:6380            max_fails=3 fail_timeout=30s;
    }

    server {
        listen 6378;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass backend;
    }
}

注意:stream 是和 http 同级的

这样,用redis-cli连接上 6378 端口。就可以进行尝试了。

3. 总结

上面的例子只是一个案例,只是为了演示,在生产环境中你可能需要改造一下。

一般来说,主服务器只有写的功能,从服务器就只有读的功能。

在程序里控制一下,写的功能指定为主服务器,从服务器那边做负载均衡就可以了。

有时候主服务器会挂掉,这个时候可以就需要redis sentinel的功能了。

本篇完结。

本站文章均为原创内容,如需转载请注明出处,谢谢。

0 条回复
暂无回复~~
相关小书
redis入门与应用教程

redis入门与应用教程

redis从入门开始讲起,通过应用来深入理解redis

发表于

喜欢
统计信息
    学员: 29974
    视频数量: 1996
    文章数量: 526

© 汕尾市求知科技有限公司 | Rails365 Gitlab | 知乎 | b 站 | csdn

粤公网安备 44152102000088号粤公网安备 44152102000088号 | 粤ICP备19038915号

Top