zoukankan      html  css  js  c++  java
  • LVS+Redis部署手册

    Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案。

    Redis从它的许多竞争继承来的三个主要特点:

    Redis数据库完全在内存中,使用磁盘仅用于持久性。

    相比许多键值数据存储,Redis拥有一套较为丰富的数据类型。

    Redis可以将数据复制到任意数量的从服务器。

    REDIS优势

    异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录。

    支持丰富的数据类型:Redis支持最大多数开发人员已经知道像列表,集合,有序集合,散列数据类型。这使得它非常容易解决各种各样的问题,因为我们知道哪些问题是可以处理通过它的数据类型更好。

    操作都是原子性:所有Redis操作是原子的,这保证了如果两个客户端同时访问的Redis服务器将获得更新后的值。

    多功能实用工具:Redis是一个多实用的工具,可以在多个用例如缓存,消息,队列使用(Redis原生支持发布/订阅),任何短暂的数据,应用程序,如Web应用程序会话,网页命中计数等。

    REDIS安装

    在redis官网下载最新的源码包

    http://download.redis.io/releases/redis-2.8.3.tar.gz

    1. 解压

    # tar xzf redis-3.0.0.tar.gz

    1. 拷贝目录

    # mv redis-3.0.0 /usr/local/redis

    1. 进入目录

    # cd /usr/local/redis

    1. 编译

    # make && make install

    1. 查看命令运行结果,如果是0则是成功

    # echo $?

    REDIS启动

    # redis-server

    第一次启动时可能会有提示的warning信息;可以忽略,但最好是按照提示的处理办法修改。

    REDIS客户端启动

    # redis-cli

    验证客户端操作

    # redis> set iom dtsoft

    OK

    # redis> get iom

    “dtsoft”

    REDIS主从同步

    编辑主机配置文件

    # vim redis.conf

    daemonize yes                    –进程后台启动

    logfile /usr/local/redis/redis.log       –日志文件

    syslog-enabled no                –日志不写进系统日志

    dir /usr/local/redis/data      –数据文件存放

    requirepass system                      –认证密码

    编辑从机配置文件

    # vim redis.conf

    daemonize yes

    logfile /usr/local/redis/redis.log

    syslog-enabled no

    dir /usr/local/redis/data

    slaveof 192.168.10.5 6379           –主服务器的IP地址和端口

    masterauth system                       –主服务器上的认证密码

    启动服务

    1、主机节点:

    # cd /usr/local/redis/src/

    # ./redis-server ../redis.conf –后面的配置文件一定要加上

    2、从机节点:

    # cd /usr/local/redis/src/

    # ./redis-server ../redis.conf –后面的配置文件一定要加上

    3、检查端口

    分别在主从机上执行,查看两机相连端口是否是ESTABLISHED状态。

    # netstat -antp | grep 6379

    4、验证同步

    主机节点:

    # ./redis-cli

    127.0.0.1:6379> set iom 123456

    (error) NOAUTH Authentication required.        –需要认证权限

    127.0.0.1:6379> auth system

    OK

    127.0.0.1:6379> set iom 123456

    OK

    127.0.0.1:6379> get iom

    “123456”

    从机节点:

    # ./redis-cli

    127.0.0.1:6379> get iom             –在从服务器不需要认证权限

    “123456”

    keepalived配置

    路由机配置

    编辑/etc/keepalived/keepalived.cnf文件

    global_defs {

    router_id LVS_MASTER   #BACKUP上修改为LVS_BACKUP

    }

    vrrp_instance VI_1 {

    state MASTER

    interface eth0

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

    auth_type PASS

    auth_pass 1111

    }

    virtual_ipaddress {

    192.168.10.252       #redis

    }

    }

    virtual_server 192.168.10.252 6379 {

    delay_loop 6

    lb_algo rr

    lb_kind DR

    #lb_kind NAT

    #    persistence_timeout 3

    protocol TCP

    real_server 192.168.10.3 6379 {

    weight 3

    TCP_CHECK {

    connect_timeout 3

    nb_get_retry 3

    delay_before_retry 3

    connect_port 6379

    }

    }

    real_server 192.168.10.5 6379 {

    weight 3

    TCP_CHECK {

    connect_timeout 3

    nb_get_retry 3

    delay_before_retry 3

    connect_port 6379

    }

    }

    }

    重启keepalived服务

    # service keepalived restart

    redis主从机配置

    编写执行脚本

    #vi  lvs_real

    1. #!/bin/bash
    2. #description:startrealserver
    3. VIP=192.168.10.252
    4. case “$1” in
    5. start)
    6. echo “startLVSofREALServer”
    7. /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
    8. echo “1”>/proc/sys/net/ipv4/conf/lo/arp_ignore
    9. echo “2”>/proc/sys/net/ipv4/conf/lo/arp_announce
    10. echo “1”>/proc/sys/net/ipv4/conf/all/arp_ignore
    11. echo “2”>/proc/sys/net/ipv4/conf/all/arp_announce
    12. sysctl –p >/dev/null 2>&1
    13. ;;
    14. stop)d
    15. /sbin/ifconfig lo:0 down
    16. echo “closeLVSDirectorserver”
    17. echo “0”>/proc/sys/net/ipv4/conf/lo/arp_ignore
    18. echo “0”>/proc/sys/net/ipv4/conf/lo/arp_announce
    19. echo “0”>/proc/sys/net/ipv4/conf/all/arp_ignore
    20. echo “0”>/proc/sys/net/ipv4/conf/all/arp_announce
    21. ;;
    22. *)
    23. echo “Usage:$0{start|stop}”
    24. exit 1
    25. esac

    执行脚本

    # /lvs_real start

    系统测试

    1、测试环境

    VIP/路由机:192.168.10.252

    redis主:192.168.10.3

    redis备:192.168.10.4

    客户机:192.168.10.1

    2、测试过程

    客户机运行redis客户端:

    # redis-cli –h 192.168.10.252 –p 6379

    redis:6379> auth system –第一次需要输入密码

    OK

    redis:6379> get iom

    “123456”

    关掉redis主机

    客户机运行redis客户端

    redis:6379> get iom

    “123456”   –仍能得到iom值

    启动redis主机

    客户机重启redis客户端

    # redis-cli –h 192.168.10.252 –p 6379

    路由机运行lvs监控命令。

    # watch ipvsadm –lc

    可以看到destination显示的是主节点IP。

    每次客户机重启redis客户端,destination显示IP在主备节点替换(lvs路由配置为轮询,即lb_algo rr

    )。

    3、测试注意

    • redis从节点默认配置为只读,客户机连接分配到从节点后只能执行查询操作,不能增删。从节点若想也可执行修改操作需将redis配置文件的slave-read-only选项改为no。
    • 客户机只要没退出redis客户端,将一直固定连接同个redis节点。
    • redis节点故障恢复后keepalived会立刻将其并入redis集群,但此时有可能恢复的redis节点数据比其它节点旧,一定要先同步数据再将其并入集群。
  • 相关阅读:
    SpringCloud Gateway使用实例
    Nacos服务注册与发现
    HashMap源码分析——put方法
    Volatile关键字——内存可见性
    Java的JIT编译器
    why spring?
    mysql 锁
    sql server 表变量和临时表
    mysql 存储过程
    mysql 截取字符串
  • 原文地址:https://www.cnblogs.com/grimm/p/5771046.html
Copyright © 2011-2022 走看看