Codis集群部署

一、架构

1569302469938.png

1569377329021.png

二、服务器规划

服务 ip vip 代理端口 管理端口
Codis config 192.168.3.74
dashboard 65180
codis-fe 65190
LVS 192.168.3.70 192.168.3.120
codis proxy 192.168.3.74 192.168.3.120 65121 65122
codis proxy 192.168.3.75 192.168.3.120 65121 65122
zookeeper1/sentinel1 192.168.3.77 2181/65100
zookeeper2/sentinel2 192.168.3.78 2181/65100
zookeeper3/sentinel3 192.168.3.79 2181/65100
codis server g1 192.168.3.83 6379/6380
codis server g2 192.168.3.84 6379/6380
codis server g3 192.168.3.85 6379/6380

codis: 一主一从

codis server group master:port slave:port
codis server g1 192.168.3.83:6379 192.168.3.84:6380
codis server g2 192.168.3.84:6379 192.168.3.85:6380
codis server g3 192.168.3.85:6379 192.168.3.83:6380

三、环境需求

  • jdk-1.8
  • centos6/7
  • go

1、安装jdk1.8

# yum search java
# yum install -y java-1.8.0-openjdk.x86_64
# java -version

2、GO 环境

# wget https://dl.google.com/go/go1.11.4.linux-amd64.tar.gz
# tar -xzf go1.11.4.linux-amd64.tar.gz
# mv go1.11.4.linux-amd64 /usr/local/go
# vim /etc/profile
# GOPATH
export PATH=$PATH:/usr/local/go/bin
# source /etc/profile

3、codis安装

#所有机器
url:https://github.com/CodisLabs/codis/releases
#这里选择3.2.1版本
# tar xzf codis3.2.1-go1.7.6-linux.tar.gz
# mv codis3.2.1-go1.7.6-linux /usr/local/codis
# 新建工作目录
# mkdir -p /data/redis/{conf,data,logs,script}

四、安装

1、加入解析

# vim /etc/hosts
192.168.3.77 zookeeper-node1
192.168.3.78 zookeeper-node2
192.168.3.79 zookeeper-node3

2、ZooKeeper集群部署

2.1、安装
# wget https://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
# tar -xzf zookeeper-3.4.13.tar.gz
# mv zookeeper-3.4.13 /usr/local/zookeeper
# cd /usr/local/zookeeper/conf
# cp zoo_sample.cfg zoo.cfg
# vim zoo.cfg
maxClientCnxns=50
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/
clientPort=2181
server.1=zookeeper-node1:2888:3888
server.2=zookeeper-node2:2888:3888
server.3=zookeeper-node3:2888:3888
# 新建数据目录
# mkdir -p /data/zookeeper/
2.2、输入myid值
#依照配置文件在数据目录下新建myid文件并输入相关id数值,如本机为zooKeeper-node1,对应配置文件中的server.1,则在myid文件中输入数值 1,依此类推
# 192.168.3.77 zookeeper-node1
# echo "1" > /data/zookeeper/myid

# 192.168.3.78 zookeeper-node2
# echo "2" > /data/zookeeper/myid

# 192.168.3.79 zookeeper-node3
# echo "3" > /data/zookeeper/myid
2.3、启动
# /usr/local/zookeeper/bin/zkServer.sh start

其他略

3、Redis集群

3.1、集群架构
集群 codis server g1 codis server g2 codis server g3
192.168.3.83:6379 192.168.3.84:6379 192.168.3.85:6379
192.168.3.84:6380 192.168.3.85:6380 192.168.3.83:6380
3.2、Redis_192.168.3.83
# vim /data/redis/conf/redis_6379.conf
daemonize yes
port 6379
bind 192.168.3.83
pidfile "/data/redis/data/redis_6379.pid"
logfile "/data/redis/logs/redis_6379.log"
dbfilename "dump_6379.rdb"
dir "/data/redis/data"
requirepass "123"
maxmemory 100000kb
maxmemory-policy allkeys-lru
masterauth "123"

# vim /data/redis/conf/redis_6380.conf
daemonize yes
port 6380
bind 192.168.3.83
pidfile "/data/redis/data/redis_6380.pid"
logfile "/data/redis/logs/redis_6380.log"
dbfilename "dump_6380.rdb"
dir "/data/redis/data"
requirepass "123"
maxmemory 100000kb
maxmemory-policy allkeys-lru
masterauth "123"
slaveof 192.168.3.85 6379
3.3、Redis_192.168.3.84
# vim /data/redis/conf/redis_6379.conf
daemonize yes
port 6379
bind 192.168.3.84
pidfile "/data/redis/data/config/redis_6379.pid"
logfile "/data/redis/logs/redis_6379.log"
dbfilename "dump_6379.rdb"
dir "/data/redis/data"
requirepass "123"
maxmemory 100000kb
maxmemory-policy allkeys-lru
masterauth "123"

# vim /data/redis/conf/redis_6380.conf
daemonize yes
port 6380
bind 192.168.3.84
pidfile "/data/redis/data/config/redis_6380.pid"
logfile "/data/redis/logs/redis_6380.log"
dbfilename "dump_6380.rdb"
dir "/data/redis/data"
requirepass "123"
maxmemory 100000kb
maxmemory-policy allkeys-lru
masterauth "123"
slaveof 192.168.3.83 6379

#启动
# /usr/local/codis/codis-server /data/redis/conf/redis_6379.conf
# /usr/local/codis/codis-server /data/redis/conf/redis_6380.conf
3.4、Redis_192.168.3.85
# vim /data/redis/conf/redis_6379.conf
daemonize yes
port 6379
bind 192.168.3.85
pidfile "/data/redis/data/config/redis_6379.pid"
logfile "/data/redis/logs/redis_6379.log"
dbfilename "dump_6379.rdb"
dir "/data/redis/data"
requirepass "123"
maxmemory 100000kb
maxmemory-policy allkeys-lru
masterauth "123"

# vim /data/redis/conf/redis_6380.conf
daemonize yes
port 6380
bind 192.168.3.85
pidfile "/data/redis/data/config/redis_6380.pid"
logfile "/data/redis/logs/redis_6380.log"
dbfilename "dump_6380.rdb"
dir "/data/redis/data"
requirepass "123"
maxmemory 100000kb
maxmemory-policy allkeys-lru
masterauth "123"
slaveof 192.168.3.84 6379

#启动
# /usr/local/codis/codis-server /data/redis/conf/redis_6379.conf
# /usr/local/codis/codis-server /data/redis/conf/redis_6380.conf

4、Codis-sentinel

注:三台配置服务器一样!

# vim /data/redis/conf/codis-sentinel.conf
bind 0.0.0.0
protected-mode no
port 65100
dir "/data/redis/data"
pidfile "/data/redis/data/sentinel_65100.pid"
logfile "/data/redis/logs/sentinel_65100.log"
daemonize yes

#编写启动脚本
# vim /data/redis/script/codis-sentinel_start.sh
#!/bin/bash
/usr/local/codis/redis-sentinel /data/redis/conf/codis-sentinel.conf

#运行
# sh /data/redis/script/codis-sentinel_start.sh

5、Codis-proxy

注:两台proxy配置相同哟!

# vim /data/redis/conf/codis-proxy.conf
#项目名称,会登记在zookeeper里,如果你想一套zookeeper管理多套codis,就必须区分好
product_name = "codis-test1"
# 设置登录dashboard的密码(与真实redis中requirepass一致)
product_auth = "123"
#客户端(redis-cli)的登录密码(与真实redis中requirepass不一致),是登录codis的密码
session_auth = "123456"
#管理的端口,0.0.0.0即对所有ip开放,基于安全考虑,可以限制内网
admin_addr = "0.0.0.0:65121"
#用那种方式通信,假如你的网络支持tcp6的话就可以设别的
proto_type = "tcp4"
#客户端(redis-cli)访问代理的端口,0.0.0.0即对所有ip开放
proxy_addr = "0.0.0.0:65122"
#外部配置存储类型,我们用的就是zookeeper,当然也是还有其他可以支持,这里不展开说
jodis_name = "zookeeper"
#配置zookeeper的连接地址,这里是三台就填三台
jodis_addr = "192.168.3.77:2181,192.168.3.78:2181,192.168.3.79:2181"
#zookeeper的密码,假如有的话
jodis_auth = ""
#codis代理的最大连接数,默认是1000,并发大要调大
proxy_max_clients = 1000
#假如并发太大,你可能需要调这个pipeline参数,大多数情况默认就够了
session_max_pipeline = 10000

# 启动脚本
# vim /data/redis/script/codis-proxy_start.sh
#!/bin/bash
/usr/local/codis/codis-proxy --ncpu=8 --config=/data/redis/conf/codis-proxy.conf --log=/data/redis/logs/codis-proxy.log &

# 启动
# sh /data/redis/script/codis-proxy_start.sh

6、Codis-config

# vim /data/redis/conf/codis-dashboard.conf
#外部配置存储类型,我们用的就是zookeeper,当然也是还有其他可以支持,这里不展开说
coordinator_name = "zookeeper"
#配置zookeeper的连接地址,这里是三台就填三台
coordinator_addr = "192.168.3.77:2181,192.168.3.78:2181,192.168.3.79:2181"
#项目名称,会登记在zookeeper里,如果你想一套zookeeper管理多套codis,就必须区分好
product_name = "codis-test1"
#所有redis的登录密码(与真实redis中requirepass一致),因为要登录进去修改数据
product_auth = "123"
#codis-dashboard的通信端口,0.0.0.0表示对所有开放,最好使用内网地址
admin_addr = "0.0.0.0:65180"
#如果想要在codis集群在故障切换功能上执行一些脚本,可以配置以下两个配置
sentinel_notification_script = ""
sentinel_client_reconfig_script = ""

#启动脚本
# vim /data/redis/script/codis-dashboard_start.sh
#!/bin/bash
/usr/local/codis/codis-dashboard --ncpu=8 --config=/data/redis/conf/codis-dashboard.conf --log=/data/redis/logs/codis-dashboard.log --log-level=WARN &

# 启动
# sh /data/redis/script/codis-dashboard_start.sh

#生成codis-fe的配置文件
# cd /data/redis/conf
# /usr/local/codis/codis-admin --dashboard-list --zookeeper=192.168.3.77:2181 >codis.json
#运行启动脚本
# vim /data/redis/script/codis-fe_start.sh
#!/bin/bash
/usr/local/codis/codis-fe --ncpu=1 --log=/data/redis/logs/codis-fe.log --log-level=WARN --dashboard-list=/data/redis/conf/codis.json --listen=0.0.0.0:65190 &

# 启动
# sh /data/redis/script/codis-fe_start.sh

7、访问

url:http://192.168.3.74:65190
例如:


image.png
7.1、添加proxy
image.png
7.1、添加Group,即redis

例如


image.png
7.1、添加sentinels
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • Codis 3.2 部署配置汇总 概念总结 集群配置前需要了解架构,集群分片主要分三种: 客户端分片:这个需要自己...
    三杯水Plus阅读 5,959评论 0 11
  • 一、codis介绍codis是一个分布式redis集群解决方案,对于上层的应用来说, 连接到codis-proxy...
    曹振华阅读 6,300评论 0 9
  • Codis高可用方案官方推荐使用Sentinel Redis 本身就是最终一致性的。Master 挂了,Promo...
    三杯水Plus阅读 2,720评论 2 8
  • Redis集群主要有五种方案: 官方cluster方案、twemproxy代理方案、哨兵模式、Codis、客户端分...
    CleverApe阅读 1,043评论 0 0
  • 一.借用网上codis架构图(https://github.com/CodisLabs/codis) 各组件作用说...
    小白正在飞阅读 497评论 0 0