您的位置:js12345金沙官网登入 > 网络编程 > js12345金沙官网登入redis 主从+哨兵部署

js12345金沙官网登入redis 主从+哨兵部署

2020-03-01 07:13

redis作为NoSQL数据库的一种应用,响应速度和命中率上还是比较高效的。项目中需要用集中式可横向扩展的缓存框架,做了一点调研,即便redis、memcached存在效率上的差异,但其实都能满足目前项目的需求;但是redis还是比较风骚的,支持链表和集合操作,支持正则表达式查找key,目前项目缓存的结果大多是链表,如果链表新增或者修改数据的话,redis就体现出了极大的优势

环境介绍:

1、下载redis下载地址 推荐下载redis-1.2.6.tar.gz,之前这个版本同事已经有成功安装运行的经验,redis-2.0.4.tar.gz 这个版本我安装后无法操作缓存数据,具体原因后续再说

操作系统:中标麒麟6.0

2、安装redis下载后解压 tar zxvf redis-1.2.6.tar.gz 到任意目录,例如/usr/local/redis-1.2.6

redis最新稳定版4.0.6

解压后,进入redis目录

在这里我们搭建的是一个1主3从的redis+3个哨兵集群的环境,由于是在一台物理机上,所有我们用端口区分。

 cd /usr/local/redis-1.2.6 make 

主节点master物理机IP:192.168.150.129       端口:7000

拷贝文件cp redis.conf /etc/ 这个文件时redis启动的配置文件cp redis-benchmark redis-cli redis-server /usr/bin/ #这个倒是很有用,这样就不用再执行时加上./了,而且可以在任何地方执行

从节点slave1 物理机IP:192.168.150.129               端口:7001    哨兵sentinel1端口:26301

设置内存分配策略/proc/sys/vm/overcommit_memory可选值:0、1、2。0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。2, 表示内核允许分配超过所有物理内存和交换空间总和的内存

从节点slave2物理机IP:192.168.150.129               端口:7002    哨兵sentinel2端口:26302

值得注意的一点是,redis在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent占用的内存为8G,这个时候也要同样分配8G的内存给child,如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下降。所以这里比较优化的内存分配策略应该设置为 1

从节点slave3物理机IP:192.168.150.129               端口:7003    哨兵sentinel2端口:26303

开启redis端口,修改防火墙配置文件 vi /etc/sysconfig/iptables

一、下载安装

加入端口配置 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT

依赖安装

重新加载规则 service iptables restart

wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz 

3、启动redis服务

sudo tar xzvf tcl8.6.1-src.tar.gz  -C /usr/local/ 

 [root@Architect redis-1.2.6]# pwd /usr/local/redis-1.2.6 [root@Architect redis-1.2.6]# redis-server /etc/redis.conf 

cd  /usr/local/tcl8.6.1/unix/ 

查看进程,确认redis已经启动

sudo ./configure 

 [root@Architect redis-1.2.6]# ps -ef | grep redis root 401 29222 0 18:06 pts/3 00:00:00 grep redis root 29258 1 0 16:23  00:00:00 redis-server /etc/redis.conf 

sudo make 

如果这里启动redis服务失败,一般情况下是因为redis.conf文件有问题,建议检查或找个可用的配置文件进行覆盖,避免少走弯路,这里建议,修改redis.conf,设置redis进程为后台守护进程

sudo make install 

 # By default Redis does not run as a daemon. Use 'yes' if you need it. # Note that Redis will write a pid file in /var/run/redis.pid when daemonized. daemonize yes 

下载地址:https://redis.io/download 

4、测试redis

$ wget http://download.redis.io/releases/redis-4.0.6.tar.gz

 [root@Architect redis-1.2.6]# redis-cli redis set name songbin OK redis get name "songbin" 

$ tar xzf redis-4.0.6.tar.gz

5、关闭redis服务

$ cd redis-4.0.6

redis-cli shutdown

$ make

redis服务关闭后,缓存数据会自动dump到硬盘上,硬盘地址为redis.conf中的配置项dbfilename dump.rdb所设定强制备份数据到磁盘,使用如下命令

$ mkdir -p /usr/local/redis

redis-cli save 或者 redis-cli -p 6380 save

$ make PREFIX=/usr/local/redis install

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

二、复制文件

进入redis所在目录

创建7000、7001、7002、7003目录,分别将安装目录下的redis.conf、sentinel.conf 拷贝到这四个目录下。

主节点

mkdir -p /usr/local/redis/7000/data &&  mkdir -p /usr/local/redis/7000/log &&  cp redis.conf /usr/local/redis/7000/redis7000.conf 

从节点和哨兵

mkdir -p /usr/local/redis/7001/data &&  mkdir -p /usr/local/redis/7001/log  &&  mkdir -p /usr/local/redis/7001/run/tmp && cp redis.conf /usr/local/redis/7001/redis7001.conf  && cp sentinel.conf  /usr/local/redis/7001/sentinel26301.conf

mkdir -p /usr/local/redis/7002/data &&  mkdir -p /usr/local/redis/7002/log  &&  mkdir -p /usr/local/redis/7002/run/tmp  && cp redis.conf /usr/local/redis/7002/redis7002.conf  && cp sentinel.conf  /usr/local/redis/7002/sentinel26302.conf

mkdir -p /usr/local/redis/7003/data &&  mkdir -p /usr/local/redis/7003/log  &&  mkdir -p /usr/local/redis/7003/run/tmp && cp redis.conf /usr/local/redis/7003/redis7003.conf  && cp sentinel.conf  /usr/local/redis/7003/sentinel26303.conf

三、设置内存分配策略(可选,根据服务器的实际情况进行设置)

/proc/sys/vm/overcommit_memory

可选值:0、1、2。

0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。

1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。

2, 表示内核允许分配超过所有物理内存和交换空间总和的内存

四、开启redis端口,修改防火墙配置文件(麒麟系统防护墙娃设置有问题)

    vi /etc/sysconfig/iptables

加入端口配置

      vi /etc/sysconfig/iptables

加入端口配置

 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 7000 -j ACCEPT  

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport26301 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport26302 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport26303 -j ACCEPT

重新加载规则

    service iptables restart

五、配置redis.config文件

1、主节点master的配置文件redis7000.conf:

# vim /usr/local/redis/7000/redis7000.conf

# 注释以下内容开启远程访问

# bind 127.0.0.1

# Redis使用后台模式

daemonize yes

# 关闭保护模式

protected-mode no

# 修改启动端口为6379

port 7000

# 修改pidfile指向路径

pidfile  /usr/local/redis/7000/redis_7000.pid

#日志文件

logfile " /usr/local/redis/7000/log/7000.log"

#数据库文件名

dbfilename dump7000.rdb

#数据库文存放目录

dir /usr/local/redis/7000/data

#  在高并发的环境中,为避免慢客户端的连接问题,需要设置一个高速后台日志

tcp-backlog 511

#开启快照

appendonly yes

启动主节点

/usr/local/redis/bin/redis-server /usr/local/redis/7000/redis7000.conf

测试是否成功

2、从节点slave1的配置文件redis7001.conf :

# vim /usr/local/redis/7001/redis7001.conf

# 注释以下内容开启远程访问

# bind 127.0.0.1

# Redis使用后台模式

daemonize yes

# 关闭保护模式

protected-mode no

# 修改启动端口为6379

port 7001

# 修改pidfile指向路径

pidfile  /usr/local/redis/7001/redis_7001.pid

#日志文件

logfile " /usr/local/redis/7001/log/7001.log"

#数据库文件名

dbfilename dump7001.rdb

#数据库文存放目录

dir /usr/local/redis/7001/data

#  在高并发的环境中,为避免慢客户端的连接问题,需要设置一个高速后台日志

tcp-backlog 511

#开启快照

appendonly yes

#主节点配置

slaveof 127.0.0.1 7000

启动从节点

/usr/local/redis/bin/redis-server /usr/local/redis/7001/redis7001.conf

测试是否成功

3、从节点slave2的配置文件redis7002.conf:

# 注释以下内容开启远程访问

# bind 127.0.0.1

# Redis使用后台模式

daemonize yes

本文由js12345金沙官网登入发布于网络编程,转载请注明出处:js12345金沙官网登入redis 主从+哨兵部署

关键词: