手机版
你好,游客 登录 注册
背景:
阅读新闻

CentOS 6.5下搭建Codis3.1集群详解

[日期:2017-03-10] 来源:Linux社区  作者:dan0820 [字体: ]

codis 3.1 安装搭建

一.基本信息

1.服务器基本信息

本次测试只使用了一台服务器10.20.23.249

2. 环境信息

2.1 codis版本:3.1 版本
git clone https://github.com/CodisLabs/codis.git -b release3.1

2.2 Go使用版本:

2.3 jdk版本:jdk1.7.0_55
http://download.Oracle.com/otn-pub/Java/jdk/8u55-b14/jdk-8u111-linux-x64.tar.gz

2.4 zookeeper版本:zookeeper-3.4.8.tar.gz
http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

二.部署codis

1. 相关组件安装配置

1.1 安装所需依赖包

三台主机上执行
yum install -y gcc make gcc-c++ automake lrzsz openssl-devel zlib-* bzip2-* readline* zlib-* bzip2-* git nmap unzip wget lsof xz net-tools mercurial vim

1.2 修改内核

三台主机上执行
vi /etc/sysctl.conf
vm.overcommit_memory = 1sysctl vm.overcommit_memory=1

手工执行:
echo never > /sys/kernel/mm/transparent_hugepage/enabled

并加到 /etc/rc.local中

2.安装go

rpm -ivh http://dl.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

yum install golang git -y

mkdir /opt/gopath

vim /etc/profile

export GOPATH=/opt/gopath

查看go版本:

go env GOPATH

3.安装jdk
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html
cd /usr/java/
chmod +x jdk-7u55-linux-x64.rpm
rpm -ivh jdk-7u55-linux-x64.rpm

3.1配置java环境变量
vim /etc/profile

添加如下信息
export JAVA_HOME=/usr/local/jdk1.7.0_55
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

刷新配置文件:
source /etc/profile

4.安装zookeeper

4.1 安装zookeeper
cd /usr/local/src/
wget http://mirrors.cnnic.cn/apache/zookeeper/stable/zookeeper-3.4.9.tar.gz
tar zxf zookeeper-3.4.9.tar.gz
mv zookeeper-3.4.9 /usr/local/zookeeper

4.2 生成配置文件
cd /usr/local/zookeeper/conf
cp zoo_sample.cfg /opt/zoo.cfg

4.3 修改zookeeper配置文件
vim /opt/zoo.cfg

修改以下内容
2888表示zookeeper程序监听端口,3888表示zookeeper选举通信端口。

4.4 创建所需文件夹
mkdir zk1 zk2 zk3

4.5 生成myid

echo "1" > zk1/myid

echo "2" > zk2/myid

echo "3" > zk3/myid

cp zoo.cfg zk1/zk1.cfg

cp zoo.cfg zk2/zk2.cfg

cp zoo.cfg zk3/zk3.cfg

vim zk2/zk2.cfg

dataDir=/opt/zk2

vim zk3/zk3.cfg

dataDir=/opt/zk3

[root@linux-node1 opt]# grep '^[a-z]' zk1/zk1.cfg

tickTime=2000                    #zookeeper服务器之间和客户端维持心跳的时间间隔,每段时间他们就会发送一个心跳,微秒

initLimit=10                        #zookeeper进行选举,初始化连接时,最长能忍受的心跳间隔数,10次

syncLimit=5                         

dataDir=/opt/zk1                #数据存储的目录

clientPort=2181                  #客户端连接上来的端口

server.1=10.20.23.249:2887:3887    #集群,1以及下面的2,3每一个群集都有一个唯一的id,就是myid的内容,,后面是集群的ip(不同服务器就会有不同的ip),第一个端口表示zookeeper会选出一个leader出来,三个集群之间交换信息的端口,第二个端口表示若是leader挂了,就要重新选举,就用这个端口就行选举,zookeeper也是无中心的

server.2=10.20.23.249:2888:3888

server.3=10.20.23.249:2889:3889

4.6 启动zookeeper
/usr/local/zookeeper/bin/zkServer.sh start /opt/zk1/zk1.cfg
/usr/local/zookeeper/bin/zkServer.sh start /opt/zk2/zk2.cfg
/usr/local/zookeeper/bin/zkServer.sh start /opt/zk3/zk3.cfg

4.7 关闭zookeeper
cd /usr/local/zookeeper/bin
./zkServer.sh stot

4.8 查看zk状态
查看状态:
[root@linux-node1 ~]# /usr/local/zookeeper/bin/zkServer.sh status /opt/zk1/zk1.cfg
ZooKeeper JMX enabled by default
Using config: /opt/zk1/zk1.cfg
Mode: follower
[root@linux-node1 ~]# /usr/local/zookeeper/bin/zkServer.sh status /opt/zk2/zk2.cfg
ZooKeeper JMX enabled by default
Using config: /opt/zk2/zk2.cfg
Mode: leader

4.9 查看相关信息:
/usr/local/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181

5.安装codis(三台主机上执行)

5.1 下载codis
mkdir /opt/gopath/src/github.com/CodisLabs -p
cd /opt/gopath/src/github.com/CodisLabs
git clone https://github.com/CodisLabs/codis.git -b release3.1

5.2 编译codis
cd /opt/gopath/src/github.com/CodisLabs/codis
make

5.3 查看bin
[root@data-1-1 codis]# ll bin/
总用量 111800
drwxr-xr-x 4 root root    4096 3月  7 00:37 assets
-rwxr-xr-x 1 root root 17398102 3月  7 00:37 codis-admin
-rwxr-xr-x 1 root root 18899624 3月  7 00:37 codis-dashboard
-rwxr-xr-x 1 root root 15356742 3月  7 00:37 codis-fe
-rwxr-xr-x 1 root root 15221328 3月  7 00:37 codis-ha
-rwxr-xr-x 1 root root 19154689 3月  7 00:37 codis-proxy
-rwxr-xr-x 1 root root  8873464 3月  7 00:36 codis-server
-rwxr-xr-x 1 root root  6311752 3月  7 00:35 codis-server-2.8.21
-rwxr-xr-x 1 root root  6555466 3月  7 00:36 redis-benchmark
-rwxr-xr-x 1 root root  6683191 3月  7 00:36 redis-cli
-rw-r--r-- 1 root root      167 3月  7 00:36 version

执行全部指令后,会在 bin 文件夹内生成 codis-admin、codis-dashboard、codis-fe、codis-ha、codis-proxy、codis-server 六个可执行文件。
另外, bin/assets 文件夹是 codis-dashboard http 服务需要的前端资源, 需要和codis-dashboard 放置在同一文件夹下

5.4 创建codis所需目录
mkdir /opt/codis -p
mkdir -p /opt/codis/{logs,conf,scripts,db,run}
mkdir -p /opt/codis/db/{redis_data_6379,redis_data_6380}

5.5 拷贝codis的bin目录
cp -rf /opt/gopath/src/github.com/CodisLabs/codis/bin/ /opt/codis/

由于codis 本身只有codis-server ,没有Redis-cli,需要把redis 2.8.21 安装包里面的redis-cli copy到/usr/local/codis/bin 下面:
cd /opt/gopath/src/github.com/CodisLabs/codis/extern/redis-2.8.21/src
cp redis-cli /opt/codis/bin/

5.6 配置和启动各组件

配置和启动 Codis的Redis
配置文件 : /usr/local/codis/redis_conf/redis6379.conf
设置密码: xxxxx
考虑性能,主库关闭aof和rdp,从库只开启aof:

cd /opt/gopath/src/github.com/CodisLabs/codis/extern/redis-2.8.21/

cp redis.conf /opt/codis/conf/redis6379.conf

将redis6379.conf更改以下参数(主库):

[root@data-1-1 conf]# grep '^[a-z]' redis6379.conf

daemonize yes

pidfile /opt/codis/run/redis6379.pid

port 6379

tcp-backlog 511

timeout 86400

tcp-keepalive 60

loglevel notice

logfile "/opt/codis/logs/redis6379.log"

databases 16

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump6379.rdb

dir /opt/codis/db/redis_data_6379

masterauth ""

slave-serve-stale-data yes

repl-disable-tcp-nodelay no

slave-priority 100

requirepass ""

maxmemory 10gb

maxmemory-policy volatile-lru

appendonly no

appendfsync everysec

no-appendfsync-on-rewrite yes

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

lua-time-limit 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

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

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 0 0 0

client-output-buffer-limit pubsub 0 0 0

hz 10

aof-rewrite-incremental-fsync yes

将redis6380.conf更改以下参数(从库):

cp /opt/codis/conf/redis6379.conf /opt/codis/conf/redis6380.conf

vim redis6380.conf

:%s/6379/6380/g

保存退出

5.7 启动redis

执行之前注意将log和data的文件生成目录建好,不然会启动失败

/opt/codis/bin/codis-server /opt/codis/conf/redis6379.conf &

/opt/codis/bin/codis-server /opt/codis/conf/redis6380.conf &

 

linux
相关资讯       Codis  Codis集群 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款