成功安装和配置TwemProxy(nutcracker)

事件:开发的用于提供redis服务的程序需要访问redis,搭建redis集群后,需要用Twemproxy来分发对redis数据库的操作,所以经过5个小时的折腾,在测试环境安装Twemproxy的时候,也踩过一些坑,好在最终成功安装了,特此记录!

一、Twemproxy简介

Twemproxy 又称nutcracker ,是一个memcache、Redis协议的轻量级代理,简单来说,Twemproxy是Twitter开发的一个redis代理proxy,类似于nginx的反向代理或者mysql的代理工具,如amoeba。
Twemproxy通过引入一个代理层,可以将其后端的多台Redis或Memcached实例进行统一管理与分配,使应用程序只需要在Twemproxy上进行操作,而不用关心后面具体有多少个真实的Redis或Memcached存储,有了Twemproxy,客户端不直接访问Redis服务器,而是通过twemproxy 代理中间件间接访问。

更详细的可以看官方介绍:官方地址链接

我在安装过程中参考的博客有:
1、twemproxy 简介、安装配置
2、twemproxy安装与配置
3、Twemproxy 介绍与使用

第3个帮我从掉的坑的拉出来了,感谢大神们的前车之鉴!!!

安装Twemproxy 之前我已经成功搭建了redis集群,可以参考我昨天写的博客:原文链接

二、安装和配置

1、下载

还是老习惯,在win10下载后,传到测试环境的linux系统里,需要下载的包有:

automake-1.12.1.tar.gz 包下载地址:http://ftp.gnu.org/gnu/automake/

autoconf-2.69.tar.gz 包下载地址:http://ftp.gnu.org/gnu/autoconf

libtool-1.5.26.tar.gz 包下载地址:http://ftp.gnu.org/gnu/libtool/

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

可以选择4个包都下载最新版本的哦~

2、解压4个安装包

这些安装包下载完之后传到linux中,在linux新建的用户下的创建twemproxy 目录:

mkdir  twemproxy

在这里插入图片描述
将下载好的4个安装包传到Twemproxy目录下,然后解压:

tar -zxvf  autoconf-2.69.tar.gz 
tar -zxvf  automake-1.16.2.tar.gz 
tar -zxvf  libtool-1.5.26.tar.gz
unzip twemproxy-master.zip 

解压之后:
在这里插入图片描述

3、安装

我在4个解压后的目录下都建了installs的目录作为安装的目录,而不是安装到/usr/local目录下,因为这个目录需要root权限。

注意:
1)这4个安装顺利不要乱,否则就会安装失败
2)安装的时候如果不是在root用户下安装的,建议和我一样新建安装目录,安装到指定的installs的目录下,如果是在非root用户下安装,就会出现如下错误:
在这里插入图片描述

①安装autoconf

cd  /home/rdsclsr/twemproxy/autoconf-2.69
./configure  --prefix=/home/rdsclsr/twemproxy/autoconf-2.69/installs
make && make install

在这里插入图片描述
②安装automake

cd /home/rdsclsr/twemproxy/automake-1.16.2
./configure --prefix=/home/rdsclsr/twemproxy/automake-1.16.2/installs
make && make install

在这里插入图片描述
③安装libtool

cd  /home/rdsclsr/twemproxy/libtool-1.5.26/libtool-1.5.26.
./configure   --prefix=/home/rdsclsr/twemproxy/libtool-1.5.26./installs
make && make install

在这里插入图片描述
④安装twemproxy

cd /home/rdsclsr/twemproxy/twemproxy-master
autoreconf -ivf
./configure   --prefix=/home/rdsclsr/twemproxy/twemproxy-master/installs
make -j 2
make install

执行情况如下图:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
到这里4个就安装完啦~

4、修改环境变量

这里需要root用户,登录到root用户之后

vim ~/.bash_profile

在最后一行添加:

#twemproxy
PATH=$PATH:/home/rdsclsr/twemproxy/twemproxy-master/installs/sbin

保存退出后使配置生效:

source ~/.bash_profile

其实还可以在/etc/profile里添加配置,也需要root权限,另外我用我前面提到的博客1、twemproxy 简介、安装配置里的配置:

#twemproxy
export PATH=$PATH:$HOME/bin:/usr/local/keepalived/sbin:/home/rdsclsr/twemproxy/twemproxy-master/installs/sbin

也是可以的,小伙伴可以自己试试,这种配置需要已经安装好keepalived了。

5、twemproxy的配置

cd /home/rdsclsr/twemproxy/twemproxy-master/installs
mkdir run conf

在这里插入图片描述
复制配置文件到新建的conf目录

cd  /home/rdsclsr/twemproxy/twemproxy-master/installs/conf
cp -r /home/rdsclsr/twemproxy/twemproxy-master/conf/* .

在这里插入图片描述
这里面只需要修改nutcracker.yml就可以,其他的两个不需要修改,所以就先复制一下nutcracker.yml然后修改

cp  nutcracker.yml   nutcracker.yml.bak.fanhf.202004101917
vim nutcracker.yml

原文件里的配置还是挺多的,我们除了一个alpha留下以外,其他的都删掉就可以
在这里插入图片描述
这个文件里的格式很重要,只要格式错了,就会报语法错,所以除了需要修改的地方,其他都不要动~
里面的各个字段的意思可自行百度了解,我这里就不做过多的解释了,“alpha”也是可以修改的~

我们可以看到,这里面除了最后的端口号需要修改,其他都不需要修改,所以就直接修改端口6379就可以。
我的redis集群里的端口是7000-7008,我配置了3个redis:

alpha:
  listen: 127.0.0.1:22121
  hash: fnv1a_64
  distribution: ketama
  auto_eject_hosts: true
  redis: true
  server_retry_timeout: 2000
  server_failure_limit: 1
  servers:
   - 127.0.0.1:7000:1
   - 127.0.0.1:7001:1
   - 127.0.0.1:7002:1

如图:
在这里插入图片描述
其中22121是twemproxy的默认端口,配置完之后就可以测试配置是否正常,执行:

cd /home/rdsclsr/twemproxy/twemproxy-master/installs/sbin
nutcracker -t

如果出现:

nutcracker: configuration file ‘conf/nutcracker.yml’ syntax is ok

就说明配置文件是正常,然而我的坑就是在这里,无论怎么尝试,执行测试后始终是:
在这里插入图片描述
我踩的坑折腾了将近2个小时,又正好是周五,大家都走了,我还在苦逼的找原因,最终无果,就先回家了,已经饿过头了,回到家吃了饭,吃饭的时候也在想,配置文件各种配置我都试了,都不行,到底是什么原因,不死心接着找找有没有前车之鉴,果然功夫不负有心人,我找到了这篇博客遇到的同样的情况原文链接,也按照这个方法尝试了一下,果然解决了,开森开森~~

这里需要做的就是;

cd /home/rdsclsr/twemproxy/twemproxy-master/installs

cp -r ./conf/ ./sbin

cd sbin

./nutcracker -t

在这里插入图片描述
这就出现了我期待已久的Ok啦~~
在这里插入图片描述

6、启动twemproxy

我看到的博客里有2种启动命令,我试了一下都是可以拉起的twemproxy的进程的,命令如下:

cd  /home/rdsclsr/twemproxy/twemproxy-master/installs/sbin

nutcracker -d -c /home/rdsclsr/twemproxy/twemproxy-master/installs/conf/nutcracker.yml -p /home/rdsclsr/twemproxy/twemproxy-master/installs/run/redisproxy.pid -o /home/rdsclsr/twemproxy/twemproxy-master/installs/run/redisproxy.log

在这里插入图片描述
或者执行

kill 6448

cd  /home/rdsclsr/twemproxy/twemproxy-master/installs/sbin

nohup /home/rdsclsr/twemproxy/twemproxy-master/installs/sbin/nutcracker -c /home/rdsclsr/twemproxy/twemproxy-master/installs/conf/nutcracker.yml &

在这里插入图片描述
查看日志和进程:、在这里插入图片描述
可以用:

 netstat -nltp | grep nutcracker

来查看情况
在这里插入图片描述

7、测试twemproxy

需要回到redis的安装目录的bin目录下:

cd  /home/rdsclsr/redis/redis-5.0.8/installs/bin

我的twemproxy和redis集群在一个主机下,执行:

redis-cli  -p 22121

奇迹发生了,又卡壳了
在这里插入图片描述
于是我就去查了一下,参考了:解决办法最后面讲了分析 里面说需要加一个参数:

redis-cli -p 22121 改为redis-cli -c -p 22121

中间加了-c ,表明是访问redis集群,于是再次尝试
在这里插入图片描述
里面有个Redirected是重定向到了7001的redis。
多次尝试:
在这里插入图片描述
进入到两另外3个redis节点上查看,发现已经有分片了,7001我就不放在这里了~
在这里插入图片描述
在这里插入图片描述

说明:本文中的后面这2张截图有的是用QQ截图的,有的是用微信截图的,所以箭头不太一样,我还是比较喜欢微信的箭头~~
终于写完了,一不小心又写了2个多小时,如果对你有帮助或者有疑问,记得留下足迹,欢迎评论和点赞后再走~~

与君共勉!!!

发布了81 篇原创文章 · 获赞 10 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/fhf2424045058/article/details/105458512