您的位置:首页 > 运维架构 > Linux

Centos6.5+Codis3.1集群搭建

2017-03-08 19:34 211 查看

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.confvm.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 -ymkdir /opt/gopathvim /etc/profileexport 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.rpmrpm -ivh jdk-7u55-linux-x64.rpm
3.1配置java环境变量
vim /etc/profile
添加如下信息
export JAVA_HOME=/usr/local/jdk1.7.0_55export PATH=$JAVA_HOME/bin:$PATHexport 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.gzmv zookeeper-3.4.9 /usr/local/zookeeper

4.2 生成配置文件

cd /usr/local/zookeeper/confcp 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/myidecho "2" > zk2/myidecho "3" > zk3/myidcp zoo.cfg zk1/zk1.cfgcp zoo.cfg zk2/zk2.cfgcp zoo.cfg zk3/zk3.cfgvim zk2/zk2.cfgdataDir=/opt/zk2vim zk3/zk3.cfgdataDir=/opt/zk3[root@linux-node1 opt]# grep '^[a-z]' zk1/zk1.cfgtickTime=2000 #zookeeper服务器之间和客户端维持心跳的时间间隔,每段时间他们就会发送一个心跳,微秒initLimit=10 #zookeeper进行选举,初始化连接时,最长能忍受的心跳间隔数,10次syncLimit=5dataDir=/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:3888server.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.cfgZooKeeper JMX enabled by defaultUsing config: /opt/zk1/zk1.cfgMode: follower[root@linux-node1 ~]# /usr/local/zookeeper/bin/zkServer.sh status /opt/zk2/zk2.cfgZooKeeper JMX enabled by defaultUsing config: /opt/zk2/zk2.cfgMode: 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 -pcd /opt/gopath/src/github.com/CodisLabsgit clone https://github.com/CodisLabs/codis.git -b release3.1

5.2 编译codis

cd /opt/gopath/src/github.com/CodisLabs/codismake

5.3 查看bin

[root@data-1-1 codis]# ll bin/总用量 111800drwxr-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 -pmkdir -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/srccp 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.confdaemonize yespidfile /opt/codis/run/redis6379.pidport 6379tcp-backlog 511timeout 86400tcp-keepalive 60loglevel noticelogfile "/opt/codis/logs/redis6379.log"databases 16stop-writes-on-bgsave-error yesrdbcompression yesrdbchecksum yesdbfilename dump6379.rdbdir /opt/codis/db/redis_data_6379masterauth ""slave-serve-stale-data yesrepl-disable-tcp-nodelay noslave-priority 100requirepass ""maxmemory 10gbmaxmemory-policy volatile-lruappendonly noappendfsync everysecno-appendfsync-on-rewrite yesauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mbaof-load-truncated yeslua-time-limit 5000slowlog-log-slower-than 10000slowlog-max-len 128hash-max-ziplist-entries 512hash-max-ziplist-value 64list-max-ziplist-entries 512list-max-ziplist-value 64set-max-intset-entries 512zset-max-ziplist-entries 128zset-max-ziplist-value 64client-output-buffer-limit normal 0 0 0client-output-buffer-limit slave 0 0 0client-output-buffer-limit pubsub 0 0 0hz 10aof-rewrite-incremental-fsync yes将redis6380.conf更改以下参数(从库):cp /opt/codis/conf/redis6379.conf /opt/codis/conf/redis6380.confvim 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 &

三. 配置codis

1.启动codis bashboard (仅在需要启动管理界面的codis的服务器上操作)

Coddis3.0的dashboard与codis 2.0有所不同,作为集群管理工具,它支持codis-proxy,codis-server的添加、删除以及数据迁移等操作。在集群状态发生改变时,codis-dashboard 维护集群下所有 codis-proxy 的状态一致性。有以下两点注意事项:对于同一个业务集群而言,同一个时刻codis-dashboard只能有0个或者1个;所有对集群的修改都必须通过codis-dashboard完成。

1.1 配置Codis Dashboard

默认配置文件dashboard.toml可由codis-dashboard生成。生成配置文件(仅需执行修改一次):
/opt/codis/bin/codis-dashboard --default-config | tee /opt/codis/conf/dashboard.toml(就是dashboard.conf)
生成dashboard.toml文件,可自行配置。vim /opt/codis/conf/dashboard.conf
# Set Coordinator, only accept "zookeeper" & "etcd" & "filesystem".coordinator_name = "zookeeper"coordinator_addr = "" #zookeeper是集群的话就写多个ip和端口用逗号隔开# Set Codis Product Name/Auth.product_name = "codis-demo"product_auth = ""# Set bind address for admin(rpc), tcp only.admin_addr = "0.0.0.0:18080"# Set configs for redis sentinel.sentinel_quorum = 2sentinel_parallel_syncs = 1sentinel_down_after = "30s"sentinel_failover_timeout = "5m"sentinel_notification_script = ""sentinel_client_reconfig_script = ""
参数说明:coordinator_name #外部存储类型,接受 zookeeper/etcdcoordinator_addr #外部存储地址product_name #集群名称,满足正则 \w[\w\.\-]*product_auth #集群密码,默认为空admin_addr #RESTful API 端口

1.2 启动Codis Dashboard

nohup /opt/codis/bin/codis-dashboard --ncpu=4 --config=/opt/codis/conf/dashboard.conf (这里指定dashboard.toml也可以) --log=/opt/codis/logs/dashboard.log --log-level=WARN &说明:--ncpu=N #最大使用 CPU 个数-c CONF, --config=CONF #指定启动配置文件-l FILE, --log=FILE #设置 log 输出文件--log-level=LEVEL #设置 log 输出等级:INFO,WARN,DEBUG,ERROR;默认INFO,推荐WARNl 对于同一个业务集群而言,可以同时部署多个codis-proxy 实例;l 不同 codis-proxy 之间由 codis-dashboard 保证状态同步。执行完成后出现以下内容说明成功.more ./logs/dashboard.log日期more /opt/codis/logs/dashboard.log.2017-01-192.启动codis-proxy (仅在需要启动proxy的codis的服务器上操作)对于同一个业务集群而言,可以同时部署多个codis-proxy 实例;不同 codis-proxy 之间由 codis-dashboard 保证状态同步。2.1配置proxy,生成代理配置文件/opt/codis/bin/codis-proxy --default-config | tee /opt/codis/conf/proxy.conf(proxy.toml)生成的proxy.conf可自行配置:vim /opt/codis/conf/proxy.conf# Set Codis Product Name/Auth.product_name = "codis-demo"product_auth = ""# Set bind address for admin(rpc), tcp only.admin_addr = "0.0.0.0:11080"# Set bind address for proxy, proto_type can be "tcp", "tcp4", "tcp6", "unix" or "unixpacket".proto_type = "tcp4"proxy_addr = "0.0.0.0:19000"配置文件解析:product_name #集群名称,参考dashboard参数说明product_auth #集群密码,默认为空admin_addr #RESTfulAPI 端口proto_type #Redis 端口类型,接受tcp/tcp4/tcp6/unix/unixpacketproxy_addr #Redis 端口地址或者路径jodis_addr #Jodis 注册 zookeeper地址jodis_timeout #Jodis 注册 sessiontimeout时间,单位secondbackend_ping_period #与codis-server 探活周期,单位second,0表示禁止session_max_timeout #与 client 连接最大读超时,单位second,0表示禁止session_max_bufsize #与 client 连接读写缓冲区大小,单位bytesession_max_pipeline #与 client 连接最大的pipeline 大小session_keepalive_period #与 client 的 tcp keepalive 周期,仅tcp有效,0表示禁止2.2启动codis-proxynohup /opt/codis/bin/codis-proxy --ncpu=4 --config=/opt/codis/conf/proxy.conf --log=/opt/codis/logs/proxy.log --log-level=WARN &codis-proxy启动后,处于 waiting 状态,监听proxy_addr 地址,但是不会 accept 连接,添加到集群并完成集群状态的同步,才能改变状态为online。添加proxy的方法有以下两种(选其中任意一种即可):1)通过 codis-fe 添加:通过 Add Proxy 按钮,将 admin_addr 加入到集群中;2)通过 codis-admin 命令行工具添加,方法如下:/opt/codis/bin/codis-admin --dashboard=10.20.23.249:18080 --create-proxy -x 10.20.23.249:11080其中 10.20.23.249:18080 以及 10.20.23.249:11080 分别为 dashboard 和 proxy 的 admin_addr 地址;添加过程中,dashboard 会完成如下一系列动作:① 获取 proxy 信息,对集群 name 以及 auth 进行验证,并将其信息写入到外部存储中;② 同步 slots 状态;③ 标记 proxy 状态为 online,此后 proxy 开始 accept 连接并开始提供服务;/opt/codis/bin/codis-admin --proxy=10.20.23.249:11080 --auth="" --shutdown正常关闭proxy操作
/usr/local/codis/bin/codis-admin --proxy=172.16.200.71:11080 --auth="xxxxx"(有就加,没有就不加) --shutdown
/opt/codis/bin/codis-proxy -hUsage:codis-proxy [--ncpu=N][--config=CONF] [--log=FILE] [--log-level=LEVEL] [--host-admin=ADDR][--host-proxy=ADDR] [--ulimit=NLIMIT]codis-proxy --default-configcodis-proxy --versionOptions:--ncpu=N #最大使用 CPU 个数-c CONF, --config=CONF #指定启动配置文件-l FILE, --log=FILE #设置 log 输出文件--log-level=LEVEL #设置log输出等级:INFO,WARN,DEBUG,ERROR;默认INFO,推荐WARN--ulimit=NLIMIT #检ulimit -n 的结果,确保运行时最大文件描述不少于 NLIMIT3.配置启动codis FE 集群管理界面 (仅在需要启动dashboard的codis的服务器上操作)配置文件codis.json(fe.conf)可以手动编辑,也可以通过codis-admin从外部存储中拉取。生成配置文件(不是每次都需要,生成一次就可以了)./bin/codis-admin --dashboard-list --zookeeper=192.168.10.61 | tee ./conf/codis.json[{"name": "codis-demo","dashboard": "linux-node1:18080"}]启动codis-fenohup ./bin/codis-fe --ncpu=4 --log=./logs/fe.log --log-level=WARN --dashboard-list=./conf/codis.json --listen=192.168.10.60:18090 &打开浏览器,在地址栏里输入http://10.20.23.249:18090,通过管理界面操作Codis。附件:http://down.51cto.com/data/2366490
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux   redis