Codis的安装与使用2
Posted 猫二哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codis的安装与使用2相关的知识,希望对你有一定的参考价值。
一背景
上一篇谢了codis的安装与使用
这里解决以前遗留下来的问题
1修改zookeeper的ip地址,以前是127.0.0.1这里修改为192.168.247.140,因为java代码需要连接zk,需要ip和端口。
2java连接codis的一些坑点,需要配置proxy的jodis才行。
一更新配置与启动服务
修改zk配置,全部修改为192.168.247.140
修改dashboard
vim ./config/dashboard.toml
coordinator_name = “zookeeper”
coordinator_addr = “192.168.247.140:2181”
就完了了哈
修改proxy的配置
vim ./config/proxy.toml
jodis_name = “zookeeper”
jodis_addr = “192.168.247.140:2181”
jodis_timeout = “20s”
jodis_compatible = false
检查:
在没有增加proxy的jodis配置的时候,在zk中proxy的存储信息为
这里没有jodis的信息哈
在zk中
ls /
也只有coids3和zookeeper
当增加了proxy的jodis配置的时候,zk中的proxy的存储信息为
这里可以看到,新增一了一个配置是jodis_path的。
在zk中
ls /
新增了一个目录jodis
以前在codis2的时候,jodis是放在/zk目录中的,这里没有了。从codis3.1开始,jodis就是单独一个目录了。
/jodis/codis-demo
这个太坑了。
配置完成之后,重启所有的服务。
这里列重启顺序
1zk启动
/usr/local/zookeeper-3.4.6/bin/zkServer.sh start
检查方式
/usr/local/zookeeper-3.4.6/bin/zkCli.sh -server 192.168.247.140
能登录进去zk就启动好了
2启动dashboard
首先确定是否正常退出,不正常退出的话,需要删除遗留在zk中的数据
删除在zk中的遗留数据
./bin/codis-admin –remove-lock –product=codis-demo –zookeeper=192.168.247.140:2181
启动dsahboard
nohup ./bin/codis-dashboard –ncpu=1 –config=./config/dashboard.toml –log=dashboard.log –log-level=WARN &
3启动proxy
首先确定是否正常退出,不正常退出的话,需要删除遗留在zk中的数据
删除在zk中的遗留数据,这个一般在删除dashboard之前做
./bin/codis-admin –dashboard=192.168.247.140:18080 –remove-proxy –addr=192.168.247.140:11080 –force
启动proxy
nohup ./bin/codis-proxy –ncpu=1 –config=./config/proxy.toml –log=proxy.log –log-level=WARN
4把proxy连接到集群
./bin/codis-admin –dashboard=192.168.247.140:18080 –create-proxy -x 192.168.247.140:11080
5启动codis server
就是启动redis服务哈
nohup ./bin/codis-server ./config/redis.conf
6启动codis fz
nohup ./bin/codis-fe –ncpu=1 –log=fe.log –log-level=WARN –zookeeper=192.168.247.140:2181 –listen=192.168.247.140:8080
之后登陆fz
http://192.168.247.140:8080/#codis-demo
这里如果以前添加了group和server就不用添加了,没有的话,添加group和server,server就是第5步启动的server哈。
三java连接codis
maven
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.codis.jodis</groupId>
<artifactId>jodis</artifactId>
<version>0.3.1</version>
</dependency>
<dependency>
<groupId>com.wandoulabs.jodis</groupId>
<artifactId>jodis</artifactId>
<version>0.2.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<type>jar</type>
<scope>test</scope>
</dependency>
</dependencies>
java代码
package com.j.codis;
import io.codis.jodis.JedisResourcePool;
import io.codis.jodis.RoundRobinJedisPool;
import redis.clients.jedis.Jedis;
public class CodisTest
///codis3/codis-demo/proxy
///jodis/codis-demo
public static void main(String[] args)
JedisResourcePool jedisPool = RoundRobinJedisPool.create()
.curatorClient("192.168.247.140:2181", 30000).zkProxyDir("/jodis/codis-demo").build();
try (Jedis jedis = jedisPool.getResource())
jedis.set("foo", "bar");
String value = jedis.get("foo");
System.out.println(value);
运行然后报错:
这里是因为防火墙的问题,虽然zk的2181端口和redis的6379端口开放了,但是还是会报这个错误。
-A INPUT -m state –state NEW -m tcp -p tcp –dport 6379 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 2181 -j ACCEPT
我就索性关闭了防火墙-生成千万别这样搞,以后再解决把。
service iptable stop
然后运行
运行成功。
下面写下,我的codis的配置文件
dashboard配置:
# Set Coordinator, only accept "zookeeper" & "etcd" & "filesystem".
coordinator_name = "zookeeper"
coordinator_addr = "192.168.247.140:2181"
# Set Codis Product Name/Auth.
product_name = "codis-demo"
product_auth = ""
# Set bind address for admin(rpc), tcp only.
admin_addr = "192.168.247.140:18080"
# Set configs for redis sentinel.
sentinel_quorum = 2
sentinel_parallel_syncs = 1
sentinel_down_after = "30s"
sentinel_failover_timeout = "5m"
sentinel_notification_script = ""
sentinel_client_reconfig_script = ""
proxy配置
# Set Codis Product Name/Auth.
product_name = "codis-demo"
product_auth = ""
# Set bind address for admin(rpc), tcp only.
admin_addr = "192.168.247.140:11080"
# Set bind address for proxy, proto_type can be "tcp", "tcp4", "tcp6", "unix" or "unixpacket".
proto_type = "tcp4"
proxy_addr = "192.168.247.140:19000"
# Set jodis address & session timeout, only accept "zookeeper" & "etcd".
jodis_name = "zookeeper"
jodis_addr = "192.168.247.140:2181"
jodis_timeout = "20s"
jodis_compatible = false
#未完,因为其他没有修改
redis配置
和一般的redis一样哈。
遗留问题:
防火墙开放端口如下:
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 2181 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 8080 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 18080 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 18087 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 11080 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 6379 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 18090 -j ACCEPT
为什么使用java连接codis的时候,还是现实连接超时失败错误。
以上是关于Codis的安装与使用2的主要内容,如果未能解决你的问题,请参考以下文章