系统环境 Centos7 64位
外网ip 182.254.145.66
内网ip 10.105.23.114
安装位置 /usr/local/tair
Tair介绍
参见官网
安装
想了半天,我还是引用 淘宝分布式 key/value 存储引擎Tair安装部署过程及Java客户端测试一例
我觉得这个博客已经写得很好了,我就写一下,我在安装的时候遇到的一些问题吧
在2.1.3步 安装tblib的时候 会报错
下载的代码有个错误:具体是tbsys/src/tblog.cpp中323行代码:需要将CLogger::CLogger& CLogger::getLogger()改为CLogger& CLogger::getLogger()
请看
http://blog.csdn.net/sunny_ss12/article/details/50449633
这一步安装成功后 会在TBLIB_ROOT 下生成include与lib
我的tblib_root是/usr/local/tblib
配置
配置说白了就是
configserver.conf
dataserver.conf
group.conf
这个三个配置文件
启动
进入tair_bin目录后,按顺序启动:
sudo sbin/tair_server -f etc/dataserver.conf # 在dataserver端启动
sudo sbin/tair_cfg_svr -f etc/configserver.conf # 在config server端启动
理论上 大家参照官网与 淘宝分布式 key/value 存储引擎Tair安装部署过程及Java客户端测试一例 都能OK
我就说说我遇到的一个问题吧
我的服务器是在腾讯云上部署的,ip已经写在文章开头了
首先配置文件里的ip不能全是公网ip
会报错:
[2016-05-25 17:44:07.595326] ERROR initialize (tair_cfg_svr.cpp:130) [140548145506112] my Ip 10.105.23.114:5198 is not in the list of config_server check it out.
为什么?
我的服务器没有绑定公网ip
那全部改成私网ip吧,
List<String> confServers = new ArrayList<String>();
confServers.add("182.254.145.66:5198");
tairManager.put的时候就报错
com.taobao.tair.etc.TairClientException: create socket exception, target address is 10.105.23.114:5191
操蛋了,我把代码打成jar包发送到远程服务器上再运行就OK
而且我在本机上telent 182.254.145.66 5191 也是OK的
最后听淘宝的浅弈大大的意见,把
group.conf里的
_server_list=10.105.23.114:5191
改成
_server_list=182.254.145.66:5191
搞定,最后等于是配置里既有公网地址,也有私网地址,也是醉了
为什么会有这个错误
一方面我觉得是腾讯云那边,没有把公网地址和机器绑定,当然腾讯内部地址的映射应该是比较复杂的,他们这样做肯定有他们的道理
第二就是浅弈大大说的
其实最根本的原因是我再部署Tair的时候,直接一头就扎进来部署,而没有去仔细看看Tair的原理,如果我能知道Tair的最浅显的原理,我也就知道dataserver对clinet是可见的,自然就得是公网地址了
这说明要知其然还有知其所以然