应用端连接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
应用端连接代码:
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
相关文章推荐
- 将图片和Base64为互相转换
- 解决MySQL中文乱码问题
- android开发---6在源码目录与ndk-build下编译jni与apk(附demo)
- 在ubuntu 平台上c / c++使用整理
- PAT (Advanced Level) 1072. Gas Station (30)
- android开发---5.android常见错误及解决
- android开发---4.android开发环境搭建
- ORACLE 11g远程连接数据库
- android开发---3.linux 下使用 javah生成头文件
- 各种电子面单_Api接口
- java并发备忘
- MySQL存储过程
- android开发---2.eclipse与ndk adb等工具的使用
- android开发--1.Android 源码下载
- MySQL存储过程
- 2.1 穷竭搜索(DFS)
- 使用CSDN-CODE&C-IDE搭建tomcat环境
- hbase分布式集群搭建
- 数据结构实验之链表一:顺序建立链表
- Cubietruck---31.蓝牙耳机与有线耳机的声音输出