您的位置:首页 > 其它

应用端连接codis 3.0.3提示Proxy list is empty的处理

2016-07-01 19:31 686 查看
一.问题描述

应用端连接代码:

JedisResourcePool jedisPool = RoundRobinJedisPool.create().

curatorClient("192.168.30.103:2181,192.168.30.104:2181,192.168.30.105:2181", 30000).

timeoutMs(3000).

zkProxyDir("/zk/codis/db_hls_prod/proxy").password('xxxx').build();

Jedis jedis = jedisPool.getResource();

jedis.set("foo", "bar");

String value = jedis.get("foo");

System.out.println(value);

通过zk连接codis提示:Proxy list is empty。

二.问题分析

1.proxy状态查看:

[apps@mvxl2579 codis]$ /apps/svr/codis/bin/codis-admin --dashboard=192.168.30.103:18080 --proxy-status

通过codis FE查看proxy状态都正常.

2.通过proxy连接redis正常3.在ZK中查看proxy状态

[zk: 127.0.0.1:2181(CONNECTED) 8] ls /codis3/hls_prod/proxy

[proxy-634208a9ba753e5e927260d0ced93687, proxy-f82e0afb962642f25de2411dd04a3198, proxy-218cee9b567b604af0a3939b84f2529d, proxy-6dd30d40f676564495d56ab16211e039, proxy-815867a35f921bcc3abb02109cca1f75, proxy-9f04676d4e82b2ba7e8f8c3a3faeee28]

[zk: 127.0.0.1:2181(CONNECTED) 9] get /codis3/hls_prod/proxy/proxy-9f04676d4e82b2ba7e8f8c3a3faeee28

{

"id": 4,

"token": "9f04676d4e82b2ba7e8f8c3a3faeee28",

"start_time": "2016-07-01 16:42:39.219656807 +0800 CST",

"admin_addr": "192.168.30.104:11080",

"proto_type": "tcp4",

"proxy_addr": "192.168.30.104:19000",

"product_name": "hls_prod",

"pid": 3336,

"pwd": "/apps/sh/codis",

"sys": "Linux mvxl2580 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux"

}

cZxid = 0x2000c4328

ctime = Fri Jul 01 16:42:42 CST 2016

mZxid = 0x2000c4329

mtime = Fri Jul 01 16:42:42 CST 2016

pZxid = 0x2000c4328

cversion = 0

dataVersion = 1

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 427

numChildren = 0

没发现什么异常,但从以下网站上查到解决办法。参考:https://github.com/CodisLabs/jodis/issues/10

三.问题处理

1.修改codis3的proxy.toml文件

# Set jodis address & session timeout.

jodis_addr = "192.168.30.103:2181,192.168.30.104:2181,192.168.30.105:2181"

jodis_addr必须设置

2.修改jodis的zkProxyDir

zkProxyDir("/zk/codis/db_hls_prod/proxy")

结论:

1.codis 3.x 里面,proxy 注册目录换成了 /codis3/xxx/proxy/yyy,同时也会写入 /zk/codis/db_xxx/proxy/yyy 以兼容 jodis。

Zookeeper在/zk/codis/db_hls_prod/proxy下存储的消息如下,满足jodis获取CodisProxyInfo消息体

[zk: 127.0.0.1:2181(CONNECTED) 4] ls /zk/codis/db_hls_prod/proxy

[815867a35f921bcc3abb02109cca1f75, 6dd30d40f676564495d56ab16211e039, 9f04676d4e82b2ba7e8f8c3a3faeee28]

[zk: 127.0.0.1:2181(CONNECTED) 5] get /zk/codis/db_hls_prod/proxy/9f04676d4e82b2ba7e8f8c3a3faeee28

{

"addr": "192.168.30.104:19000",

"start_at": "2016-07-01 16:42:39.219656807 +0800 CST",

"state": "online",

"token": "9f04676d4e82b2ba7e8f8c3a3faeee28"

}

cZxid = 0x2000c432b

ctime = Fri Jul 01 16:42:42 CST 2016

mZxid = 0x2000c432b

mtime = Fri Jul 01 16:42:42 CST 2016

pZxid = 0x2000c432b

cversion = 0

dataVersion = 0

aclVersion = 0

ephemeralOwner = 0x2550b2029dbbccd

dataLength = 167

numChildren = 0

2.codis的proxy需要指定jodis
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: