实战Centos系统部署Codis集群服务_codis 18087端口是干啥的(1)

JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

rpm -ivh jdk-8u65-linux-x64.rpm

3.3、安装zookeeper

Zookeeper下载地址:http://zookeeper.apache.org/releases.html#download

wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
tar zxvf zookeeper-3.4.8.tar.gz -C /opt/

3.4、环境变量设置

修改环境变量:vim /etc/profile 在最后添加以下内容

#codis path
export GOROOT=/opt/go
export GOPATH=/opt/codis
JAVA_HOME=/usr/java/jdk1.8.0_101
CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$GOROOT/bin:$JAVA_HOME/bin:

#测试环境变量设置
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#执行source /etc/profile是环境变量生效,测试go是否正常安装:

cat hello.go
package main
import "fmt"
func main(){
fmt.Printf("hello,world\n")
}
[root@linux-node-2 ~]# go run hello.go
hello,world!

三、安装codis

[root@linux-node-3 ~]# yum -y install git
[root@linux-node-3 opt]# go get -u -d github.com/CodisLabs/codis

可以看到no buildable Go source files in /opt/codis/src/github.com/wandoulabs/codis,我们在上面环境就是设置GOAPTH=/opt/codis,所以只要执行上面的获取命令,就会下载在/opt/codis下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们进到提示的路径进行安装,安装过程比较久,耐心等待:

[root@linux-node-3 ~]# cd /opt/codis/src/github.com/CodisLabs/codis

目录执行make命令编译代码,并执行make gotest来跑测试

make

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

make gotest

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

建议只通过go get命令来下载codis,除非你非常熟悉go语言的目录引用形式从而不会导致代码放错地方。该命令会下载master分支的最新版,我们会确保master分支的稳定。

执行全部指令后,会在 bin 文件夹内生成 codis-config、codis-proxy、codis-server三个可执行文件。另外, bin/assets 文件夹是 codis-config 的 dashboard http 服务需要的前端资源, 需要和 codis-config 放置在同一文件夹下)
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过git方式安装codis

git clone https://github.com/CodisLabs/codis.git

git仓库下载完毕后,我们接下来进行如下的操作。如下:

mkdir -p /opt/codis /src/github.com/CodisLabs/
cp -r codis /opt/codis/src/github.com/CodisLabs/
cd /opt/codis/src/github.com/CodisLabs/codis/

#以上操作完毕后,就和通过go下载安装方式一样,执行make命令进行编译,然后执行make gotest命令进行测试

通过源码包安装

wget https://github.com/CodisLabs/codis/archive/3.0.3.tar.gz -P /usr/local/src
tar zxvf 3.0.3.tar.gz && cd codis-3.0.3 && make && make gotest

codis相关配置文件详解

#codis安装完成之后codis-config主要的使用方法

# ./bin/codis-config -h (master)
usage: codis-config [-c ] [-L ] [--log-level=]
 [...]
 options:
 -c 配置文件地址
 -L 日志输出文件地址
 --log-level= 输出日志级别 (debug < info (default) < warn < error < fatal)
commands:
server redis 服务器组管理
slot slot 管理
dashboard 启动 dashboard 服务
action 事件管理 (目前只有删除历史事件的日志)
proxy proxy 管理
# ./bin/codis-proxy -h
usage: codis-proxy [-c ] [-L ] [--log-level=] [--cpu=] [--addr=] [--http-addr=]

options:
-c 配置文件地址
-L 日志输出文件地址
--log-level= 输出日志级别 (debug < info (default) < warn < error < fatal)
--cpu= proxy占用的 cpu 核数, 默认1, 最好设置为机器的物理cpu数的一半到2/3左右
--addr= proxy 的 redis server 监听的地址, 格式 :, 如: localhost:9000, :9001
--http-addr= proxy 的调试信息启动的http server, 可以访问 http://debug_http_server_addr/debug/vars

四、配置codis集群

codis安装完毕后,我们现在来配置codis集群,在正式配置集群之前,先创建相关的目录,然后复制相关文件到新的目录下。

1、codis集群配置

使用如下命令:

cd /opt/codis/src/github.com/CodisLabs/codis/
mkdir -p /opt/codis/{log,redis_conf}
cp -rf bin/ /opt/codis/
cp config.ini /opt/codis/
cp extern/redis-test/conf/6379.conf /opt/codis/redis_conf/
cp extern/redis-test/conf/6380.conf /opt/codis/redis_conf/

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2、编辑codis配置文件

[root@linux-node3 codis]# egrep -v "^#|^$" config.ini
coordinator=zookeeper
zk=192.168.1.148:2181,192.168.1.149:2181,192.168.1.150:2181
product=test
dashboard_addr=192.168.1.150:18087
password=
backend_ping_period=5
session_max_timeout=1800
session_max_bufsize=131072
session_max_pipeline=1024
zk_session_timeout=30000
proxy_id=proxy_3

该配置文件中,我们需要注意三个参数:zk、dashboard_addr、proxy_id。

其中zk是表示zookeeper集群的服务器IP地址,dashboard_addr表示codis web管理的IP地址及端口,proxy_id表示codis的id,注意每台codis服务器该值要唯一。

#linux-node1

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#linux-node2

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#linux-node3

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3、编辑redis配置文件

每台codis服务器上,启动两个redis实例(也可以启动多个redis实例),配置两个redis,如下:

daemonize no
pidfile /var/run/redis.pid
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 0
loglevel notice
logfile /var/log/redis/6379.log
databases 16
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump6379.rdb
dir /opt/codis/
slave-serve-stale-data yes
slave-read-only yes
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

#注意红线标注的一个参数,配置第二个redis实例

\cp /opt/codis/redis_conf/6379.conf 6380.conf
sed -i 's/6379/6380/g' /opt/codis/redis_conf/6380.conf
mkdir -p /var/log/redis/

#上面操作需要在每台codis服务上面都执行。

echo 512 > /proc/sys/net/core/somaxconn
sysctl vm.overcommit_memory=1

注:优化系统的参数

4、 初始化 slots

执行 bin/codis-config slot init,该命令会在zookeeper上创建slot相关信息

/opt/codis/bin/codis-config -c /opt/codis/config.ini slot init

#linux-node3、linux-node1、linux-node2

/opt/codis/bin/codis-server /opt/codis/redis_conf/6379.conf &
/opt/codis/bin/codis-server /opt/codis/redis_conf/6380.conf &
ps -ef | grep codis-server

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#在三台codis-proxy上面分别启动redis实例

5、启动codis dashboard

#尽量在redis安装目录或者让redi的log目录下启动dashboard,这样方便查看启动产生的日志,nohup.out

nohup /opt/codis/bin/codis-config -c /opt/codis/config.ini dashboard &

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#从图中可以看出dashboard已经启动完成,然后去web页面访问,codis dashboard访问端口是18087

#查看codis dashboard,浏览器访问http://192.168.1.150:18087/,如下:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#codis dashboard启动完成之后默认页面如上图所示,我们可以通过web页面新建redis_group,把刚刚启动好的redis实例加到不同的组当中、也可以通过命令行执行创建redis_group的操作。

6、添加 Redis Server Group

每一个 Server Group 作为一个Redis服务器组存在, 只允许有一个master, 可以有多个slave, group id仅支持大于等于1的整数

#在codis dashboard上使用命令新建server group

[root@linux-node3 ~]# cd /opt/codis/
[root@linux-node3 codis]# ./bin/codis-config server -h
usage:
codis-config server list
codis-config server add
codis-config server remove
codis-config server promote
codis-config server add-group
codis-config server remove-group

#如: 添加三个 server group, 每个 group 有两个 redis 实例,group的id分别为1和2, redis实例为一主一从。

#注:这里我把linux-node3,linux-node2,linux-node1上面的两个redis实例分别加到不同的server group当中,详细如下:

group_1: linux-node3 redis_6379 linux-node2 redis_6380
group_2: linux-node2 redis_6379 linux-node1 redis_6380
group_3: linux-node1 redis_5379 linux-node3 redis_6380

其中redis的6379端口作为redis master,6380作为slave

#添加一个group,group的id为1, 并添加一个redis master(192.168.1.150:6379)到该group

./bin/codis-config server add 1 192.168.1.150:6379 master

#添加一个redis slave(192.168.1.149:6380)到该group

./bin/codis-config server add 1 192.168.1.149:6380 slave

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#添加一个group,group的id为2, 并添加一个redis master(192.168.1.149:6379)到该group

./bin/codis-config server add 2 192.168.1.149:6379 master

#添加一个redis slave(192.168.1.148:6380)到该group

./bin/codis-config server add 2 192.168.1.148:6380 slave

#添加一个group,group的id为3, 并添加一个redis master(192.168.1.148:6379)到该group

./bin/codis-config server add 3 192.168.1.148:6379 master

#添加一个redis slave(192.168.1.150:6380)到该group

./bin/codis-config server add 3 192.168.1.150:6380 slave

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注意:每组添加的第一个redis实例不能被删除,因为codis默认把该redis实例设置为master。

#从图中我们可以看出server group 已经创建成功,到codis dashboard上面查看:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

7、设置 server group 服务的 slot 范围,

https://github.com/CodisLabs/codis/blob/master/doc/FAQ_zh.md

Codis 采用 Pre-sharding 的技术来实现数据的分片, 默认分成 1024 个 slots (0-1023), 对于每个key来说, 通过以下公式确定所属的 Slot Id : SlotId = crc32(key) % 1024 每一个 slot 都会有一个且必须有一个特定的 server group id 来表示这个 slot 的数据由哪个 server group 来提供.

[root@linux-node3 codis]# ./bin/codis-config slot -h
usage:
codis-config slot init [-f]
codis-config slot info
codis-config slot set
codis-config slot range-set
codis-config slot migrate [--delay=]
codis-config slot rebalance [--delay=]

#设置编号为[0, 340]的 slot 由 server group 1 提供服务, 编号 [341, 682] 的 slot 由 server group 2 提供服务,编号[683, 1023] 的 slot 由 server group 3 提供服务

./bin/codis-config slot range-set 0 340 1 online
./bin/codis-config slot range-set 341 682 2 online
./bin/codis-config slot range-set 683 1023 3 online

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#查看slot的信息

/opt/codis/bin/codis-config -c /opt/codis/config.ini slot info 1
/opt/codis/bin/codis-config -c /opt/codis/config.ini slot info 2
/opt/codis/bin/codis-config -c /opt/codis/config.ini slot info 3

#slot操作完成可以到codis dashboard查看状态。如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

8、启动 codis-proxy

./bin/codis-proxy -c config.ini -L ./log/proxy.log --cpu=1 --addr=0.0.0.0:19000 --http-addr=0.0.0.0:11000

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

nohup /opt/codis/bin/codis-proxy -c /opt/codis/config.ini --log-level=error -L /opt/codis/log/proxy.log --cpu=1 --addr=0.0.0.0:19000 --http-addr=0.0.0.0:11000 &

#下面对以上命令中的参数进行解释:

-c 配置文件地址。
-L 日志输出文件地址。
–log-level= 输出日志级别(debug –cpu= proxy占用的cpu核数,默认1,最好设置为机器的物理cpu数的一半到2/3左右。
–addr= proxy的redis server监听的地址, 格式:, 如: localhost:9000, :9001。
–http-addr= proxy的调试信息启动的http server,可以访问 http://debug_http_server_addr/debug/vars。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#codis-proxy启动后,我们可以在dashboard上进行查看,如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#到此codis集群搭建完毕,为了性能需求,建议redis实例和codis-proxy放到不同的服务器上面。

9、连接codis集群

codis集群搭建完毕后,测试连接codis集群。要连接codis集群,我们只需要连接codis-proxy即可。codis-proxy服务器地址:192.168.1.150,然后加19000端口。使用redis-cli命令连接,如下:

#在某台已安装redis实例的服务器上面测试:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过上图,我们可以很明显的看到连接codis集群是ok的。

10、codis集群压测

我们现在对codis集群做一些压力测试,同时在dashboard上观察键值对的情况。如下:

./redis-benchmark -h 192.168.1.150 -p 19000 -c 1000 -d 1000 -t set -n 100000 -r 100000

上述命令的意思是,使用redis-benchmark压力测试命令连接codis集群,同时并发10000个(-c),测试set操作(-t),每个测试数据集是100字节(-d),请求数是100000(-n),使用使用随机数插入数值(-r)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
[外链图片转存中…(img-kMWM3hLo-1714200055464)]
[外链图片转存中…(img-fQPyooVB-1714200055464)]
[外链图片转存中…(img-NjKjzkbG-1714200055465)]
[外链图片转存中…(img-K6bTnrxM-1714200055465)]
[外链图片转存中…(img-ou9teDrF-1714200055465)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

  • 12
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值