Redis启动多端口、运行多实例

时间:2024.4.27

Redis启动多端口、运行多实例

分类: redis Linux 学习2013-04-27 11:38 2675人阅读 评论(0) 收藏 举报

Redis多端口启动存储配置

默认Redis程序安装在/usr/local/redis目录下;

配置文件:/usr/local/redis/redis.conf,该配置文件中配置的端口为默认端口:6379; Redis的启动命令路径:/usr/local/bin/redis-server。

可以指定端口启动多个Redis进程。

#/usr/local/bin/redis-server --port 6380 & #启动6380端口的redis实例。

====================以下每个进程对应一个配置文件(转载)

===================================================

需要启动多个Redis实例:

一台Redis服务器,分成多个节点,每个节点分配一个端口(6380,6381…),默认端口是6379。

每个节点对应一个Redis配置文件,如: redis6380.conf、redis6381.conf #cp redis.confredis6380.conf

#vi redis6380.conf

pidfile : pidfile/var/run/redis/redis_6380.pid

port 6380

logfile : logfile/var/log/redis/redis_6380.log

rdbfile : dbfilenamedump_6380.rdb

(其他配置文件类似修改)

启动多个redis实例:

#redis-server/usr/local/redis/redis6380.conf

#redis-server/usr/local/redis/redis6381.conf

补充说明:

Redis数据存储

redis 的存储分为内存存储、磁盘存储和log文件三部分,配置文件中有三个参数对其进行配置。

save seconds updates:在指定时间内,达到多少次更新操作时,就将数据同步到数据文件。这个可以多个条件配合,比如默认配置文件中的设置,就设置了三个条件。

appendonly yes/no:是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。

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

appendfsyncno/always/everysec:no表示等操作系统进行数据缓存同步到磁盘,always表示每次更新操作后手动调用fsync()将数据写到磁盘,everysec表示每秒同步一次。


第二篇:通过Keepalived实现Redis Failover自动故障切换功能 多端口


通过Keepalived实现Redis Failover自动故障切换功能(多端口)

设计思路:

初始四个端口redis 主和 redis从 正常同步;

redis主keepalived 启动,执行redis_master.sh脚本,vip在自己身上;

redis 从keepalived 启动,执行redis_slave.sh脚本;

redis主服务关闭,则redis主执行redis_fault.sh脚本, vip落在redis 从上,redis从执行redis-_master.sh脚本,变成主;

redis主服务开启,则redis主执行redis_slave.sh脚本变成从,vip还在redis 从上,还是主; redis从服务关闭,则redis从执行redis_fault.sh脚本, vip落在redis主上,redis主执行redis-_master.sh脚本,变成主;

redis从服务开启,则redis从执行redis_slave.sh脚本变成从, vip还在redis主上,redis主继续做主,此时为redis初试主从状态;

keepalived 主上关闭,则redis主执行redis_stop.sh,redis 从执行redis_master.sh脚本,vip在redis 从身上;

keepalived 主上恢复,则redis主执行redis_master.sh,redis 从执行redis_slave.sh脚本,vip在redis 主身上;

keepalived 从上关闭,则redis从执行redis_stop.sh,redis 主无变化,vip在redis 主身上; keepalived 从上恢复,则redis从执行redis_slave.sh,redis 主无变化,vip在redis 主身上;

环境:

Master:

192.168.10.40

192.168.10.40

192.168.10.40

192.168.10.40

Slave:

192.168.10.41

192.168.10.41

192.168.10.41

192.168.10.41

192.168.10.49

6001 6002 6003 6004 redis redis redis redis 6001 6002 6003 6004 vip redis-slave redis-slave redis-slave redis-slave

注意:

Redis Master 和slave的四个文件要修改

Master:

redis6001.conf

举例:

[root@redis-1 redis]# egrep -v "^$|#" /usr/local/redis/redis6001.conf |grep '6001' pidfile /usr/local/redis/redis6001.pid

port 6001

logfile /usr/local/redis/var/redis6001.log

dbfilename dump6001.rdb

vm-swap-file /tmp/redis6001.swap

redis6002.conf

redis6003.conf

redis6004.conf

slave:

redis6001.conf

举例:

[root@redis-2 redis]# egrep -v "^$|#" /usr/local/redis/redis6001.conf |grep '6001' pidfile /usr/local/redis/redis6001.pid

port 6001

logfile /usr/local/redis/var/redis6001.log

dbfilename dump6001.rdb

slaveof 192.168.10.40 6001

vm-swap-file /tmp/redis6001.swap

redis6002.conf

redis6003.conf

redis6004.conf

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ keepalived master和backup的配置文件

master:

[root@redis-1 scripts]# cat /etc/keepalived/keepalived.conf

global_defs {

notification_email {

yunwei@xlhtol.com

}

notification_email_from keepalived@message2 router_id message2

}

vrrp_script chk_redis {

script "/etc/keepalived/scripts/redis_check.sh" interval 1

}

vrrp_instance mes_Redis {

state MASTER

interface em1

garp_master_delay 10

smtp_alert

virtual_router_id 3

priority 100

nopreempt

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.10.49

}

track_script {

chk_redis

}

notify_master /etc/keepalived/scripts/redis_master.sh notify_backup /etc/keepalived/scripts/redis_slave.sh notify_fault /etc/keepalived/scripts/redis_fault.sh notify_stop /etc/keepalived/scripts/redis_stop.sh }

slave:

[root@redis-2 scripts]# cat /etc/keepalived/keepalived.conf global_defs {

notification_email {

yunwei@xlhtol.com

}

notification_email_from keepalived@message2 router_id message2

}

vrrp_script chk_redis {

script "/etc/keepalived/scripts/redis_check.sh" interval 1

}

vrrp_instance mes_Redis {

state BACKUP

interface em1

garp_master_delay 10

smtp_alert

virtual_router_id 3

priority 90

nopreempt

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.10.49

}

track_script {

chk_redis

}

notify_master /etc/keepalived/scripts/redis_master.sh notify_backup /etc/keepalived/scripts/redis_slave.sh notify_fault /etc/keepalived/scripts/redis_fault.sh notify_stop /etc/keepalived/scripts/redis_stop.sh }

keepalived master和slave调用的五个文件

redis_check.sh

redis_fault.sh

redis_master.sh

redis_slave.sh

redis_stop.sh

master:

1.redis_check.sh:

[root@redis-1 scripts]# cat redis_check.sh

#!/bin/bash

ALIVE1=`/usr/local/bin/redis-cli -p 6001 PING`

ALIVE2=`/usr/local/bin/redis-cli -p 6002 PING`

ALIVE3=`/usr/local/bin/redis-cli -p 6003 PING`

ALIVE4=`/usr/local/bin/redis-cli -p 6004 PING`

if [ "$ALIVE1" == "PONG" -a "$ALIVE2" == "PONG" -a "$ALIVE3" == "PONG" -a "$ALIVE4" == "PONG" ]; then

echo $ALIVE1

exit 0

else

echo $ALIVE1

exit 1

fi

2.redis_fault.sh

[root@redis-1 scripts]# cat redis_fault.sh

#!/bin/bash

LOGFILE=/var/log/keepalived-redis-state.log

echo "[fault]" >> $LOGFILE

date >> $LOGFILE

3.redis_master.sh

[root@redis-1 scripts]# cat redis_master.sh

#!/bin/bash

REDISCLI="/usr/local/bin/redis-cli"

LOGFILE="/var/log/keepalived-redis-state.log"

echo "[master]" >> $LOGFILE

date >> $LOGFILE

echo "Being master...." >> $LOGFILE

echo "Run SLAVEOF cmd ..." >> $LOGFILE

$REDISCLI -p 6001 SLAVEOF 192.168.10.41 6001 >> $LOGFILE

$REDISCLI -p 6002 SLAVEOF 192.168.10.41 6002 >> $LOGFILE

$REDISCLI -p 6003 SLAVEOF 192.168.10.41 6003 >> $LOGFILE

$REDISCLI -p 6004 SLAVEOF 192.168.10.41 6004 >> $LOGFILE

sleep 10 #延迟10秒以后待数据同步完成后再取消同步状态

echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE

$REDISCLI -p 6001 SLAVEOF NO ONE >> $LOGFILE

$REDISCLI -p 6002 SLAVEOF NO ONE >> $LOGFILE

$REDISCLI -p 6003 SLAVEOF NO ONE >> $LOGFILE

$REDISCLI -p 6004 SLAVEOF NO ONE >> $LOGFILE

4.redis_slave.sh

[root@redis-1 scripts]# cat redis_slave.sh

#!/bin/bash

REDISCLI="/usr/local/bin/redis-cli"

LOGFILE="/var/log/keepalived-redis-state.log"

echo "[backup]" >> $LOGFILE

date >> $LOGFILE

echo "Being slave...." >> $LOGFILE

sleep 15 #延迟15秒待数据被对方同步完成之后再切换主从角色

echo "Run SLAVEOF cmd ..." >> $LOGFILE

$REDISCLI -p 6001 SLAVEOF 192.168.10.41 6001 >> $LOGFILE

$REDISCLI -p 6002 SLAVEOF 192.168.10.41 6002 >> $LOGFILE

$REDISCLI -p 6003 SLAVEOF 192.168.10.41 6003 >> $LOGFILE

$REDISCLI -p 6004 SLAVEOF 192.168.10.41 6004 >> $LOGFILE

5.redis_stop.sh

[root@redis-1 scripts]# cat redis_stop.sh

#!/bin/bash

LOGFILE=/var/log/keepalived-redis-state.log

echo "[stop]" >> $LOGFILE

date >> $LOGFILE

slave:

1.redis_check.sh

[root@redis-2 scripts]# cat redis_check.sh

#!/bin/bash

ALIVE1=`/usr/local/bin/redis-cli -p 6001 PING`

ALIVE2=`/usr/local/bin/redis-cli -p 6002 PING`

ALIVE3=`/usr/local/bin/redis-cli -p 6003 PING`

ALIVE4=`/usr/local/bin/redis-cli -p 6004 PING`

if [ "$ALIVE1" == "PONG" -a "$ALIVE2" == "PONG" -a "$ALIVE3" == "PONG" -a "$ALIVE4" == "PONG" ]; then

echo $ALIVE1

exit 0

else

echo $ALIVE1

exit 1

fi

2.redis_fault.sh

[root@redis-2 scripts]# cat redis_fault.sh

#!/bin/bash

LOGFILE=/var/log/keepalived-redis-state.log

echo "[fault]" >> $LOGFILE

date >> $LOGFILE

3.redis_master.sh

[root@redis-2 scripts]# cat redis_master.sh

#!/bin/bash

REDISCLI="/usr/local/bin/redis-cli"

LOGFILE="/var/log/keepalived-redis-state.log"

echo "[master]" >> $LOGFILE

date >> $LOGFILE

echo "Being master...." >> $LOGFILE 2>&1

echo "Run SLAVEOF cmd ..." >> $LOGFILE

$REDISCLI -p 6001 SLAVEOF 192.168.10.40 6001 >> $LOGFILE $REDISCLI -p 6002 SLAVEOF 192.168.10.40 6002 >> $LOGFILE $REDISCLI -p 6003 SLAVEOF 192.168.10.40 6003 >> $LOGFILE $REDISCLI -p 6004 SLAVEOF 192.168.10.40 6004 >> $LOGFILE sleep 10 #延迟10秒以后待数据同步完成后再取消同步状态

echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE

$REDISCLI -p 6001 SLAVEOF NO ONE >> $LOGFILE

$REDISCLI -p 6002 SLAVEOF NO ONE >> $LOGFILE

$REDISCLI -p 6003 SLAVEOF NO ONE >> $LOGFILE

$REDISCLI -p 6004 SLAVEOF NO ONE >> $LOGFILE

4.redis_slave.sh

[root@redis-2 scripts]# cat redis_slave.sh

#!/bin/bash

REDISCLI="/usr/local/bin/redis-cli"

LOGFILE="/var/log/keepalived-redis-state.log"

echo "[backup]" >> $LOGFILE

date >> $LOGFILE

echo "Being slave...." >> $LOGFILE 2>&1

sleep 15 #延迟15秒待数据被对方同步完成之后再切换主从角色 echo "Run SLAVEOF cmd ..." >> $LOGFILE

$REDISCLI -p 6001 SLAVEOF 192.168.10.40 6001 >> $LOGFILE $REDISCLI -p 6002 SLAVEOF 192.168.10.40 6002 >> $LOGFILE $REDISCLI -p 6003 SLAVEOF 192.168.10.40 6003 >> $LOGFILE $REDISCLI -p 6004 SLAVEOF 192.168.10.40 6004 >> $LOGFILE

5.redis_stop.sh

[root@redis-2 scripts]# cat redis_stop.sh

#!/bin/bash

LOGFILE=/var/log/keepalived-redis-state.log

echo "[stop]" >> $LOGFILE

date >> $LOGFILE

更多相关推荐:
Free radius for win 安装配置手册

Freeradiusforwin安装配置手册一参考1前几天由于网络方案测试需要radius服务器从网络上找了一下都说Freeradius最好但就是没有详细的配置手册一边学习一边测试有一点心得与大家分享Freer...

(radius+sql+user+client)配置模块详细说

Radiusdconf文件配置Radiusdconf文件是freeradius的核心配置文件其中设置了服务器的基本信息配置文件与日志文件的环境变量并详细配置freeradius模块所使用的信息与认证和计费所使用...

华为交换机和路由器如何配置radius来实现RSA Securid的认证使用

华为交换机和路由器如何配置radius来实现RSASecurid的认证使用华为的路由器和交换机想通过RSASecurid来实现认证登陆必须采用配置radius的方式来实现举例radiusnasipXXXXXXX...

IPSec_VPN_详解

SAVO收集整理VPNIPSec分析一IPSec概览IP网络安全问题IP网络安全一直是一个倍受关注的领域如果缺乏一定的安全保障无论是公共网络还是企业专用网络都难以抵挡网络攻击和非法入侵对于某个特定的企业内部网I...

技术点详解---IPSec VPN基本原理

技术点详解IPSecVPN基本原理技术点详解双链路智能切换技术点详解互联网双出口的选择技术点详解同时访问VPN和互联网技术点详解SSLVPN技术点详解IPSec方案部署技术点详解IPSec穿越NAT技术点详解I...

IPSEC VPN配置与NAT兼容配置

IPSECVPN1IPSec在3个方面保证了网络数据包的安全机密性完整性认证性2在传输模式中只有IP包的传输层部分被修改认证或者加密隧道模式中整个数据包包括IP头都被加密或认证3AH还会认证位于AH头之前的IP...

IPSECVPN原理

来源不详20xx0913150235前几天一直比较忙为了生计还不幸生病了几天因此没有及时把文档续上在此先向大家道歉特别是热心等待我写书的朋友终于开始讲到了IPSEC的VPN技术前面交代了SSLVPN以及MPLS...

ipsec概述

IPSec概述本章将详细介绍secpath防火墙ipsec功能的配置此时的secpath完全可以等同为路由器来看待在文中我们将沿用路由器方面的术语和标识来描述secpath即本章所提及的路由器均可使用secpa...

通过 NAT 使用 IPSec

与通过NAT使用IPSec相关的问题与通过NAT使用IPSec相关的问题如下NAT无法更新上层校验和TCP和UDP报头包含一个校验和它整合了源和目标IP地址和端口号的值当NAT改变了某个包的IP地址和或端口号时...

SQL serve TCPIP 连接失败 设置端口

图解解决无法连接到WMI提供程序和SQLServer20xx到主机的TCPIP连接失败如果SQLServer20xx出现到主机的TCPIP连接失败的错误我们通过以下方式解决第一步打开SQLServer20xx的...

一则sql server 20xx不能监听1433端口问题的解决

一则sqlserver20xx不能监听1433端口问题的解决建立到远程sqlserver数据库连接时失败提示SQLServer不存在或访问被拒绝出现这种状况极有可能的原因是sqlserver20xx未开启默认的...

SQL server 20xx 1433端口无法启动排障过程

由于数据库服务器异常而使得WEB服务器无法访问数据库服务器经过现场的系统检查广西电信局方决定重新安装数据库服务器的操作系统和数据库程序重装后的操作系统windowsserver20xx企业SP2补丁数据库版本为...

redis端口号(1篇)