`

KeepAlived + Redis 部署详细过程以及遇到的问题

 
阅读更多

 

一、RedisKeepalived安装

 

1、  以下步骤在121122上均要进行一遍

 

2、  root用户登录,

 

cd /usr/local

 

2、命令:mkdir ms40  新建ms40目录

 

         3cd ms40

 

         4mkdir redis && cd redis && mkdir log && mkdir data  然后切回ms40目录

 

5mkdir keepalived

 

         6、上传文件redis-2.6.14.tar.gzredis目录

 

                   上传文件keepalived-1.2.7.tar.gzkeepalived目录

 

         7、安装redis

 

                   1cd redis

 

                   2tar zxvf redis-2.6.14.tar.gz

 

                   3cd redis-2.6.14

 

              4make

 

                   5cd src

 

                   6cp redis-benchmark redis-cli redis-server /usr/bin/

 

                   7)切回至ms40目录

 

       8、安装keepalived

 

                   1cd keepalived

 

                   2tar zxvf keepalived-1.2.7.tar.gz

 

                   3yum install popt-devel

 

                   4yum -y install openssl-devel

 

                   5cd keepalived-1.2.7

 

                   6./configure

 

                   7make && make install

 

 

 

二、Keepalived配置

 

1、  转移keepalived的配置文件

 

1)  cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

 

2)  cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/

 

3)  mkdir /etc/keepalived

 

4)  cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

 

5)  cp /usr/local/sbin/keepalived /usr/sbin/

 

 

 

三、Mater配置(10.25.174.121

 

1、  从附件的Master文件夹中获取scripts文件夹和keepalived.conf覆盖至目录

 

/etc/keepalived目录下

 

         2给脚本加上可执行权限chmod +x /etc/keepalived/scripts/*.sh

 

         3、备份/usr/local/ms40/redis/redis-2.6.14目录下的redis.conf文件

 

4、从附件的Master文件夹中获取redis.conf文件覆盖至上述目录中

 

 

 

四、Slave配置(10.25.174.122

 

1、  从附件的Slave文件夹中获取scripts文件夹和keepalived.conf覆盖至目录

 

/etc/keepalived目录下

 

         2给脚本加上可执行权限chmod +x /etc/keepalived/scripts/*.sh

 

         3、备份/usr/local/ms40/redis/redis-2.6.14目录下的redis.conf文件

 

4、从附件的Master文件夹中获取redis.conf文件覆盖至上述目录中

 

 

 

五、启动

 

1、  启动121上的redis

 

1cd /

 

2cd /usr/local/ms40/redis/redis-2.6.14

 

3src/redis-server

 

         2、启动122上的redis

 

1cd /

 

2cd /usr/local/ms40/redis/redis-2.6.14

 

3src/redis-server

 

         3、启动121上的keepalived

 

                   1cd /

 

                   2service keepalived start

 

         4、启动122上的keepalived

 

                   1cd /

 

                   2service keepalived start

 

 

 

六、验证

 

         1、运行-cmd

 

                   Ping 10.25.174.200 看是否能够ping

 

2、  运行-cmd

 

telnet 10.25.174.200 6379 是否能通

 

3、  使用sshclient连接至121或者122,使用root用户

 

cd /usr/local/ms40/redis/redis-2.6.14

 

src/redis-cli –h 10.25.174.200

 

set name “test”

 

get name

 

看看结果是否为test

 

如果是则 del test

 

 

 

六、安装Redis过程中涉及的一些问题

 

      1GCC的问题

 

make[2]: cc: Command not found

 

make[1]: *** [adlist.o] Error 127
make[1]: Leaving directory `/usr/local/redis-2.6.16/src'
make: *** [all] Error 2

 

原因:没安装gcc,执行命令安装:yum install gcc-c++

 

      2、内存分配器的问题(重视)

 

make[1]: Entering directory `/usr/local/redis-2.6.16/src'

 

CC adlist.o

 

In file included from adlist.c:34:

 

zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory

 

zmalloc.h:55:2: error: #error "Newer version of jemalloc required"

 

make[1]: *** [adlist.o] Error 1

 

make[1]: Leaving directory `/usr/local/redis-2.6.16/src'

 

make: *** [all] Error 2

 

         原因:查看redis的源码 src/zmalloc.c可以看到如下代码:

 

       #if defined(USE_TCMALLOC)

 

#define malloc(size) tc_malloc(size)

 

#define calloc(count,size) tc_calloc(count,size)

 

#define realloc(ptr,size) tc_realloc(ptr,size)

 

#define free(ptr) tc_free(ptr)

 

#elif defined(USE_JEMALLOC)

 

#define malloc(size) je_malloc(size)

 

#define calloc(count,size) je_calloc(count,size)

 

#define realloc(ptr,size) je_realloc(ptr,size)

 

#define free(ptr) je_free(ptr)

 

         可以看到源码中首先会判断系统中是否存在tcmalloc内存分配器,如果没有,则使用jemalloc内存分配器,如果连jemalloc分配器也没有找到,就会报错了。

 

         本次现网部署Redis后,因为没有jemalloc分配器,导致碎片率达到了1.59redis的内存占用率也就是实际内存占用的1.59倍,这个数据量是非常恐怖的,对内存资源是个相当大的损耗。

 

         在现网环境的linux系统中,可能没有预先安装Jemalloc分配器,需要手动安装。

 

         1wget http://www.canonware.com/download/jemalloc/jemalloc-3.2.0.tar.bz2

 

         2tar jxf jemalloc-3.2.0.tar.bz2  tar.bz2的压缩格式使用 tar jxf 解压)

 

         3cd jemalloc-3.2.0

 

         4./configure

 

         5make && make install

 

         6ldconfig

 

         过程完成后,在切回到redis-2.6.14目录中,重新执行make命令

 

 

 

当然如果不想使用jemalloc分配器,可以强制使用如下命令来安装redis

 

         make MALLOC=libc  libc是默认的内存分配器,不过经过验证,碎片率是最高的

 

 

 

         经现网验证:

 

1)  使用libc内存分配器的话,内存碎片率可以达到1.6左右

 

2)  但是使用jemalloc,碎片率一般在1.1以内

 

3)  对于tcmalloc,和jemalloc的结果差不多,但是因为redis暂时还没有集成tcmalloc,所以需要另外来安装,过程详见:

 

http://blog.nosqlfan.com/html/3490.html

 

 

 

七、安装Keepalived过程中涉及的一些问题

 

      1、虚拟网卡sit0的问题

 

                   Keepalived安装完成后,在启动时报了如下的异常:

 

Oct 18 00:24:43 localhost Keepalived[6866]: Starting VRRP child process, pid=6868
Oct 18 00:24:43 localhost Keepalived_vrrp[6868]: No such interface, sit0

 

使用ip a命令查看网卡信息如下:

 

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue

 

           link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

 

           inet 127.0.0.1/8 scope host lo

 

           inet6 ::1/128 scope host

 

                 valid_lft forever preferred_lft forever

 

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000

 

           link/ether 00:50:56:ba:67:6e brd ff:ff:ff:ff:ff:ff

 

           inet 10.25.174.122/24 brd 10.25.174.255 scope global eth0

 

           inet6 fe80::250:56ff:feba:676e/64 scope link

 

                 valid_lft forever preferred_lft forever

 

3: sit0: <NOARP> mtu 1480 qdisc noop

 

link/sit 0.0.0.0 brd 0.0.0.0

 

网上对于sit0的描述如下:

 

         SITIPv6-in-IPv4 tunnel interfaces, 这个interfaces(界面或是接口)也称作sitx, sit"Simple Internet Transition"的缩写. 它可以将IPv6的数据包塞进IPv4, 通过IPv4到达另一个地点.sit0 不能使用在专用的tunnels .

 

       一般它没有什么用, 还会减慢上网的速度, 可以修改

 

                  

 

/etc/modprobe.conf文件增加如下两行配置:

 

alias ipv6 off
alias net-pf-10 off

 

然后reboot重启服务器

 

2nc命令的问题     

 

家里测试环境(79.7879.79)没有nc命令(类似windows下的telnet

 

1)  wget http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz/download

 

2)  tar zxvf netcat-0.7.1.tar.gz

 

3)  ./configure

 

4)  make && make install

 

 

 

3、检测脚本的问题

 

因家里在压测的时候,服务器没有nc命令,所以在检测脚本redis_check.sh中使用的是ping命令来检测redis是否还活着。但是因为在大并发情况下,ping命令会被拥堵,由此可能导致redis主备进行切换

 

                   redis_check.sh

 

                            #!/bin/bash

 

ALIVE=`/usr/bin/redis-cli PING`

 

if [ "$ALIVE" == "PONG" ]; then 

 

                           echo $ALIVE

 

                           exit 0

 

else 

 

                           echo $ALIVE

 

                           exit 1

 

fi

 

                   redis_check.sh

 

                            #!/bin/bash

 

nc -w 0 127.0.0.1 6379 && exit 0 || exit 1

 

4keepalived.conf问题

 

                   Keepalived.conf中有运行监测脚本redis_check.sh的配置:

 

 

 

                   vrrp_script chk_redis {

 

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

 

                  interval 1

 

}

 

 

 

变量interval 表示执行监测脚本的时间间隔:1秒执行一次确实没有必要。

 

 

 

5秒执行一次即可。

 

分享到:
评论

相关推荐

    keepalived+redis切换安装包

    在提供的"keepalived+redis安装包"中,包含了完成这个部署所需的所有组件和配置文件。用户只需按照文档指示,正确安装和配置这两个软件,即可实现高效、稳定的 Redis 高可用环境。记得在实际环境中,还需要根据具体...

    keepalived +nginx 终于搞定了

    本篇将详细阐述`keepalived`和`nginx`如何协同工作,以及如何成功配置它们,确保服务的稳定运行。 `keepalived`是一个开源项目,其主要功能是实现Linux上的VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余...

    redis+Keepalived实现Redis高可用性

    然而,单点故障是Redis面临的主要问题,为了克服这一点,我们通常会采用主从复制(Master-Slave)模式,并配合Keepalived进行故障转移。 Keepalived是一个网络服务,主要用于实现IP负载均衡和高可用性。它支持VRRP...

    suse12 redis-sensienl-keepalived双击热备部署

    在实际部署过程中,可能会遇到如网络延迟、同步延迟、数据冲突等问题,需要根据具体情况调整配置参数或采取特定的解决方案。例如,可以通过设置适当的`sync_delay`来减少同步延迟,或者利用Redis的`maxclients`限制...

    codis+lvs+keepalived

    最后,文档还应包括总结部分,回顾部署过程中遇到的问题和解决方案,对搭建过程和性能测试结果进行评价,以及对未来可能的优化方向进行展望。 以上各点是本文档内容的关键知识点。在实际部署中,需要结合具体的环境...

    Redis 备份、容灾及高可用实战

    例如,如果仅部署了一个Redis实例并且没有采取任何容灾措施,那么一旦该实例发生故障,整个系统可能面临服务中断的风险。 #### 四、非分布式场景下的Redis备份与容灾 在非分布式环境中,通常会采用Redis主从复制的...

    高可用Redis服务架构设计.docx

    Redis作为一种高性能的内存数据库,广泛应用于web开发中的session存储、热数据缓存、消息队列以及订阅发布系统等场景。然而,为了保证服务的稳定性和可靠性,构建高可用的Redis服务是至关重要的。高可用性意味着在...

    Java思维导图xmind文件+导出图片

    传统RPC技术在大型分布式架构下面临的问题 分布式架构下的RPC解决方案 Zookeeper 分布式系统的基石 从0开始搭建3个节点额度zookeeper集群 深入分析Zookeeper在disconf配置中心的应用 基于Zookeeper Watcher ...

    Redis集群方案

    Redis作为一个高性能的键值存储系统,因其高效的数据处理能力和丰富的数据结构,被广泛应用于缓存、消息队列以及推荐系统等场景。然而,随着业务的发展和数据量的增长,单个Redis实例可能无法满足扩展性和高可用性的...

    多种负载均衡部署文档,实操笔记 Nginx,lvs(dr,nat,fullnat),haproxy等,dpdk-lvs

    同时,我们还将详细讲解LVS的配置,包括Keepalived参数的解释。 **Nginx负载均衡** Nginx是一款高性能的HTTP和反向代理服务器,也支持负载均衡。其优势在于支持高并发,可以处理大量并发连接,同时它支持HTTP、...

    程序员简历技能描述怎么写高大上-java篇

    例如,提到你如何通过优化代码或架构来提高系统性能,或者在面临特定挑战时如何利用设计模式解决问题。此外,提及你参与的项目规模、复杂度以及取得的成果,这将有助于雇主评估你的实际工作经验和贡献价值。

    互联网金融数据云平台架构.pptx

    为了解决这些问题,各种高可用方案被采用,如【Pacemaker/Keepalived/MHA/MySQL Cluster】等,但它们配置复杂,可能存在脑裂问题,且在关键时刻不敢切换,可能导致数据不完整。此外,冷备策略浪费了资源,不支持自动...

    亿级流量 网站架构 核心技术 搭建 高可用 高并发 完整版

    这涉及到多个层面,包括系统设计、负载均衡、数据存储、缓存策略、分布式计算以及故障恢复等。下面将详细探讨这些关键点。 1. **系统设计**:在面对亿级流量时,单一服务器无法胜任,因此需要采用分布式架构。这种...

Global site tag (gtag.js) - Google Analytics