• redis代理集群(Twemproxy)(1)


    redis主从+哨兵模式只解决了读的分布式操作,大大提高了性能;但是写操作,只有主主机器才能进行,从机器无法进行写操作。此时,Twemproxy也就出现了。

    这个模式单纯的安装有些复杂,需要引入很多的辅助工具:

    autoconf:下载地址 http://ftp.gnu.org/gnu/autoconf/

    Automake  :下载地址http://ftp.gnu.org/gnu/automake/

    libtool:下载地址 http://ftp.gnu.org/gnu/libtool/

    twemproxy下载地址:https://codeload.github.com/twitter/twemproxy/zip/master

    记住,都要高版本的,版本太旧,容易出问题》

    安装步骤,我是根据尚学堂视频进行操作的,大体流程如下:

    这里的安装目录都在usr目录下,这样可以偷懒不配置环境变量,如果更改安装目录,那你自己去配置环境变量,我这里找到一篇微博,此人是自己配置环境变量的,

    可以参考 : http://blog.csdn.net/kk185800961/article/details/53364334

     接下来我将逐步分解过程:

    1、首先将安装好的压缩包全部上传到linux服务器,我这里有3台虚拟机,redis服务分别部署在这3台不同的虚拟机上面(如果不会,请参考我的《Redis的安装、服务配置》一文);

          而twemproxy代理我仅仅部署在CentOS1(192.168.238.128)上面,文件传输路径为/home/tool/sourceDir目录下,并解压

     安装是要有先后顺序的,依次安装autoconf、autoMake、libtool、twemproxy-master;

    进入/home/tool/sourceDir目录下,分别开始安装:

    安装autoconf:

    [root@server autoconf-2.69]# cd autoconf-2.69  
    [root@server autoconf-2.69]# ./configure --prefix=/usr
    [root@server autoconf-2.69]# make && make install  

    安装automake:

    [root@server automake-1.15.1]# cd automake-1.15.1
    [root@server automake-1.15.1]# ./configure --prefix=/usr
    [root@serverautomake-1.15.1]# make && make install 

    安装libtool:

    [root@server libtool-2.4.5]# cd libtool-2.4.5
    [root@server libtool-2.4.5]# ./configure --prefix=/usr
    [root@server libtool-2.4.5]# make && make install 

    安装twemproxy:

    [root@server twemproxy-master]# cd twemproxy
    [root@server twemproxy-master]# aclocal
    [root@server twemproxy-master]# autoconf
    [root@server twemproxy-master]# mkdir config
    [root@server twemproxy-master]# autoheader
    [root@server twemproxy-master]# libtoolize
    [root@server twemproxy-master]# automake -a
    [root@server twemproxy-master]# ./configure
    [root@server twemproxy-master]# make
    [root@server twemproxy-master]# make install 

    # 配置文件 nutcracker.yml(我的都是真实IP)(注意:此文件必须要找到安装目录下的nutcracker命令,放在此命令同目录的conf文件夹下

    具体配置信息:

    alpha:
         listen: 192.168.238.128:22121
        hash: fnv1a_64
        distribution: ketama
        auto_eject_hosts: true
       redis: true
       server_retry_timeout: 2000
       server_failure_limit: 1
       servers:
            - 192.168.238.128:6379:1
            - 192.168.238.131:6379:1
            - 192.168.238.132:6379:1

    测试配置文件:

     首先需要将redis的服务全部启动,然后启动twemproxy

    接下来进入代理模式中:

    OK,配置完成,接下来可以进行你需要的操作了。

    再来说说问题:

       问题实在太多了,举几个最容易发现的问题吧。

    1、在代理中,keys * 不可执行

    2、对字符串操作,当CentOS1、CentOS3、CentOS4之前就有相同的key时候,通过代理拿到的值永远都是本机的(CentOS1),其余的拿不到

    3、对无序集合也是一样的,CentOS4的值是:

      

         CentOS3的值是:

        

        通过代理拿到的值,不知道怎么回事,一直都是CentOS4里面的,CentOS3的值一直拿不到,搞不懂是什么原理

      

     以上说的情况,都是redis服务之前就有这些键值情况下出现的,如果全部通过Twemproxy进行设置,然后在通过Twemproxy进行拿值,是不会出现这样的问题的。

    还是一点也很要命,通过Twemproxy设置的值,各个redis服务是不同步的,只要某一台redis服务宕机了,里面的数据也就拿不到了。

     当然,以上问题,肯定是有解决办法的,以后会继续学习和完善这些问题。

      

  • 相关阅读:
    Android工具
    Android工具-DDMS
    Android ADB
    Windows FILETIME 与UNIX时间的转换
    <转>git,github在windows上的搭建
    国内的 Faas 云服务 -- Serverless 收集
    APICloud终于承认侵权并向DCloud道歉了(2019-11-26),知识产权!
    微信及钉钉等小程序开发的可视化工具
    C#的建造者设计模式(Builder),及Aspnet Core的源代码
    AspNet Core 3 的通用主机学习
  • 原文地址:https://www.cnblogs.com/chen1-kerr/p/7115728.html
Copyright © 2020-2023  润新知