Redis-Codis构建集群并优化

redis简介

  • Redis服务器程序采用单进程模型处理客户端请求
  • Redis基于内存并且支持多达6中数据类型,而memcache只支持一种
  • Redis是一款非常优秀的Nosql数据库
  • Redis可以与Lua脚本结合爆发除强大的功能

Redis单进程模型的优势

  • redis提供了伪事务来处理

Redis之Java客户端

  • 官方推荐只Jedis
  • 优秀的第三方客户端:Redisson
  • 优秀的第三方代理,比如TWEMporxy、Codis(生产中使用)
  • redis+Cosdis目前最佳的实践方案

Codis介绍

  • Codis开发是专门解决分布式方案才诞生的
  • Codis是豌豆荚开发的分布式redis解决方案
  • 线上动态配置实现无限扩容,插槽分配和漂移
  • 单节点和集群操作对客户端透明
  • 线上可以在一定程序上达到一个资源漂移的效果

codis的强大之处服务端透明化,不需要关心多少集群,只需要关心第三方的proxy。

Codis的组成部分

命令 命令作用
Codis Dashboard Codis集群管理工具
Codis Proxy 集群代理,代理多个Codis
Codis Server 代替了窗台的redis-Server
Codis Group 组的概念,可以让集群出现更多的用法
Codis Admin 集群管理的命令行工具
Codis FE 图形界面处理

Codis集群的部署

1.环境的准备

yum install -y gcc glibc gcc-c++ make git
git clone https://github.com/CodisLabs/codis.git -b release3.2(去GIT上下载)
yum -y install  glibc-2.17
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

2.需要的包

3.开始部署

安装go语言环境

1.常规操作
tar -xf go1.7.3.linux-amd64.tar.gz 
cd go

2.添加环境变量
vim /etc/profile
        export GOROOT=/root/codis/go
        export GOPATH=/root/codis/go_path/codis
        export PATH=PATH:JAVA_HOME/bin:$GOROOT/bin
source /etc/profile

安装zookeeper

tar -xf zookeeper-3.4.10.tar.gz 
cd /root/codis/zookeeper-3.4.10/conf/
mv zoo_sample.cfg zoo.cnf       #配置文件有需要可以自己修改
/root/codis/zookeeper-3.4.10/bin/zkServer.sh start

安装codis

tar -xf codis3.2.2-go1.8.5-linux.tar.gz
cd codis3.2.2-go1.8.5-linux
mkdir conf/redis/{redis_6381,reids_6382}
拷贝redis的配置文件到以上目录下
cp redis.cnf  conf/redis/redis_6381/        #修改配置文件
vim redis.cnf
            #bind 127.0.0.1         #绑定注释
            protected-mode no       #安全模块不开启
            daemonize yes       #开启后台启动
            pidfile /var/run/redis_6381.pid     #设置进程号,不能相同
            port 6381       #设置端口号,不能一样

开启两个服务

netstat -lnput |grep codis      #查看是否6381和6382端口开启
ps -ef |grep codis-server       #查看进程是否使用

配置集群的管理工具dashboard

./codis-dashboard --default-config |tee conf/dashboard.toml     #开启dashboadb生成配置文件

修改配置文件

vim conf/dashboard.toml
        coordinator_name = "zookeeper"
        coordinator_addr = "192.168.4.56:2181"      #不建议写IP地址,最好使用主机名称
        product_name = "codis-demo"
        admin_addr = "192.168.4.56:18080"

启动dashboard

mkdri ./logs
nohup ./codis-dashboard --config=conf/dashboard.toml --log=logs/dashboard.log --log-level=WARN --ncpu 2 &   #指定配置文件位置,指定日志路径,指定日志级别,指定可以提供资源数
#nohup指定后台启动
tail -f /log/日志文件

关于如何优雅的关闭dashboard

常规的情况下我们总是使用(Kill -9 进程号)强制结束,但是这样会导致整个node节点崩溃,
为了保障其他节点的正常运行我们需要的是优雅的关闭dashboard。

./codis-admin --dashboard="192.168.4.56:18080" --shutdown

开启proxy

./codis-proxy --default-config |tee conf/proxy.toml
product_name = "codis-demo"     #必须和我们的dashboard相同
vim conf/proxy.toml 
        admin_addr = "192.168.4.56:11080"
        proxy_addr = "192.168.4.56:19000"
        jodis_name = "zookeeper"
        jodis_addr = "192.168.4.56:2181"

启动但是没有启用

nohup ./codis-proxy --config=conf/proxy.toml --log=logs/proxy.log --log-level=WARN --ncpu 2 &

启用相互之间关联

./codis-admin --dashboard=192.168.4.56:18080 --create-proxy -x192.168.4.56:11080

cat logs/proxy.log      #查看日志是否成功

启动codis-fe图形界面管理

生成配置文件

./codis-admin --dashboard-list --zookeeper=192.168.4.56:2181 |tee conf/codis.json

开启codis-fe

nohup ./codis-fe --ncpu=2 --log=logs/fe.log --log-level=WARN --dashboard-list=conf/codis.json --listen=192.168.4.56:10011 &

cat log/codis-fe

访问网站

Redis-Codis构建集群并优化》有4个想法

  1. Nice read, I just passed this onto a colleague who was doing some research on that. And he just bought me lunch since I found it for him smile Thus let me rephrase that: Thank you for lunch!

发表评论

电子邮件地址不会被公开。 必填项已用*标注