Redis集群搭建教程

一、概述

Redis3.0版本之后支持Cluster.

1.1、redis cluster的现状

  目前redis支持的cluster特性:

  1):节点自动发现

  2):slave->master 选举,集群容错

  3):Hot resharding:在线分片

  4):进群管理:cluster xxx

  5):基于配置(nodes-port.conf)的集群管理

  6):ASK 转向/MOVED 转向机制.

1.2、redis cluster 架构

  1)redis-cluster架构图

Redis 集群教程

本文档是Redis集群的一般介绍,没有涉及复杂难懂的分布式概念的赘述,只是提供了从用户角度来如何搭建测试以及使用的方法,如果你打算使用并深入了解Redis集群,推荐阅读完本章节后,仔细阅读 Redis 集群规范 一章。

本教程试图提供最终用户一个简单的关于集群和一致性特征的描述

请注意,本教程使用于Redis3.0(包括3.0)以上版本

如果你计划部署集群,那么我们建议你从阅读这个文档开始。

Redis集群介绍

Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。

Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误.

Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis 集群的优势:

自动分割数据到不同的节点上。
整个集群的部分节点失败或者不可达的情况下能够继续处理命令。

centos安装redis

官网下载的安装包 redis-4.0.2.tar.gz

1.解压文件tar -zxvf redis-4.0.2.tar.gz
2.make   #如果错误则使用下面的命令
make MALLOC=libc

a001

3.安装完毕后就配置文件

3.1 设置redis可以一直在后台运行,以守护进程方式运行,即关闭SSH工具程序也在运行。
daemonize no 改成 daemonize yes

3.2 默认的话redis-server启动时会在当前目录生成或读取dump.rdb,可以指定生成的路径
dir ./ 改成 dir /usr/local/redis/

3.3 指定是否在每次更新操作后进行日志记录
appendonly no 改成 appendonly yes

因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no

3.4 默认redis是只能内网127.0.0.0访问,如果想外网访问需要修改绑定的地址
bind 127.0.0.1 改成 bind 0.0.0.0
改成任何IP都能访问的,当然这里也可以绑定单独的IP;改成外网访问需要设置密码,否则会报错;

3.5 修改保护模式,不修改保护模式也是只能内网访问的
protected-mode yes 改成 protected-mode no

3.6 设置密码
将”# requirepass foobared“ 改成 requirepass 123
4.启动redis服务

./redis-server redis.conf
*注:必需指定redis.conf文件,如果不指定,会加载默认的配置,那修改过的配置也不会生效。

5.验证服务是否启动:

ps aux|grep redis

a003

redis-cli测试内网
cd /www/server/redis.4.0.2/src
./redis-cli #我的是没有设置密码,所以直接回车
./redis-cli -a 123
备注:redis-cli -h 实例连接地址 -a 密码

a002

 

yum -y install gcc gcc-c++ gcc-g77 make libtool autoconf patch unzip automake libxml2 libxml2-devel ncurses ncurses-devel libtool-ltdl-devel libtool-ltdl libmcrypt libmcrypt-devel libpng libpng-devel libjpeg-devel openssl openssl-devel curl curl-devel libxml2 libxml2-devel ncurses ncurses-devel libtool-ltdl-devel libtool-ltdl autoconf automake libaio*

Nginx支持socket转发

有个接口是通过socket通信,对端服务器访问存在IP限制,只好通过跳板机,因为它具备访问对端服务器的权限。nginx1.9开始支持tcp层的转发,通过stream实现的,而socket也是基于tcp通信。

一.实现过程:

1.安装nginx,stream模块默认不安装的,需要手动添加参数:–with-stream,官方下载地址:download,根据自己系统版本选择nginx1.9或以上版本。

2.nginx.conf 配置,参考说明:ngx_stream_core_module

nginx.conf

user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
……………..
}

# tcp层转发的配置文件夹

include /etc/nginx/tcp.d/*.conf;
请注意,stream配置不能放到http内,即不能放到/etc/nginx/conf.d/,因为stream是通过tcp层转发,而不是http转发。

如配置在http内,启动nginx会报如下错误:

nginx: [emerg] “server” directive is not allowed here
3.在tcp.d下新建个bss_num_30001.conf文件,内容如下:

Nginx使用upstream模块实现tomcat负载均衡

UPSTREAM负载均衡模块

负载均衡模块用于从”upstream”指令定义的后端主机列表中选取一台主机。nginx先使用负载均衡模块找到一台主机,再使用upstream模块实现与这台主机的交互。为了方便介绍负载均衡模块,做到言之有物,以下选取nginx内置的ip hash模块作为实际例子进行分析。

配置

要了解负载均衡模块的开发方法,首先需要了解负载均衡模块的使用方法。因为负载均衡模块与之前书中提到的模块差别比较大,所以我们从配置入手比较容易理解。

在配置文件中,我们如果需要使用ip hash的负载均衡算法。我们需要写一个类似下面的配置:

18910111224
 
Copyright © 2008-2021 lanxinbase.com Rights Reserved. | 粤ICP备14086738号-3 |