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的主要内容,如果未能解决你的问题,请参考以下文章

Codis的安装与使用

Codis的安装与使用

codis 新版本 CodisLabs 编译安装

codis 3.2单机安装环境集群

codis集群部署

codis集群部署