Centos6.5+Codis3.1集群搭建

codis 3.1 安装搭建

一.基本信息

1.服务器基本信息

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

2. 环境信息

2.1 codis版本:3.1 版本

gitclonehttps://github.com/CodisLabs/codis.git-brelease3.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 安装所需依赖包

三台主机上执行

yuminstall-ygccmakegcc-c++automakelrzszopenssl-develzlib-*bzip2-*readline*zlib-*bzip2-*gitnmapunzipwgetlsofxznet-toolsmercurialvim

1.2 修改内核

vi/etc/sysctl.conf
vm.overcommit_memory=1sysctlvm.overcommit_memory=1

手工执行:

echonever>/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

添加如下信息

exportJAVA_HOME=/usr/local/jdk1.7.0_55
exportPATH=$JAVA_HOME/bin:$PATH
exportCLASSPATH=.:$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.shstot

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-server127.0.0.1:2181

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

5.1 下载codis

mkdir/opt/gopath/src/github.com/CodisLabs-p
cd/opt/gopath/src/github.com/CodisLabs
gitclonehttps://github.com/CodisLabs/codis.git-brelease3.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
cpredis-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 &


三. 配置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文件,可自行配置。

wKiom1i_6o3DX2AgAABZbMHNfSY194.png-wh_50


vim /opt/codis/conf/dashboard.conf

#SetCoordinator,onlyaccept"zookeeper"&"etcd"&"filesystem".
coordinator_name="zookeeper"
coordinator_addr=""#zookeeper是集群的话就写多个ip和端口用逗号隔开

#SetCodisProductName/Auth.
product_name="codis-demo"
product_auth=""

#Setbindaddressforadmin(rpc),tcponly.
admin_addr="0.0.0.0:18080"

#Setconfigsforredissentinel.
sentinel_quorum=2
sentinel_parallel_syncs=1
sentinel_down_after="30s"
sentinel_failover_timeout="5m"
sentinel_notification_script=""
sentinel_client_reconfig_script=""

参数说明:

coordinator_name #外部存储类型,接受 zookeeper/etcd

coordinator_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,推荐WARN

l 对于同一个业务集群而言,可以同时部署多个codis-proxy 实例;

不同 codis-proxy 之间由 codis-dashboard 保证状态同步。

执行完成后出现以下内容说明成功.

more ./logs/dashboard.log日期

more /opt/codis/logs/dashboard.log.2017-01-19


2.启动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可自行配置:

wKioL1i_6lLTLY5mAABowax63oM080.png-wh_50

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/unixpacket

proxy_addr #Redis 端口地址或者路径

jodis_addr #Jodis 注册 zookeeper地址

jodis_timeout #Jodis 注册 sessiontimeout时间,单位second

backend_ping_period #与codis-server 探活周期,单位second,0表示禁止

session_max_timeout #与 client 连接最大读超时,单位second,0表示禁止

session_max_bufsize #与 client 连接读写缓冲区大小,单位byte

session_max_pipeline #与 client 连接最大的pipeline 大小

session_keepalive_period #与 client 的 tcp keepalive 周期,仅tcp有效,0表示禁止

2.2启动codis-proxy

nohup /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 -h

Usage:

codis-proxy [--ncpu=N][--config=CONF] [--log=FILE] [--log-level=LEVEL] [--host-admin=ADDR]

[--host-proxy=ADDR] [--ulimit=NLIMIT]

codis-proxy --default-config

codis-proxy --version

Options:

--log-level=LEVEL #设置log输出等级:INFO,STKaiti;">--ulimit=NLIMIT #检ulimit -n 的结果,确保运行时最大文件描述不少于 NLIMIT


3.配置启动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-fe

nohup ./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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


linux下开机自启: 在/etc/init.d目录下新建文件elasticsearch 并敲入shell脚本: 注意, 前两行必须填写,且要注释掉。 第一行为shell前行代码,目的告诉系统使用shell。 第二行分别代表运行级别、启动优先权、关闭优先权,且后面添加开机服务会用到。 shell脚本
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod +x /etc/rc.d/rc.local 2、赋予脚本可执行权限假设/usr/local/script/autostart.sh是你的脚本路径,给予执行权限 chmod +x /usr
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用ls -ll,会显示成字节大小,而ls- lh会以KB、MB等为单位进行显示,这样比较直观一些。 通过命令du -h –max-depth=1 *,可以查看当前目录下各文件、文件夹的大小,这个比较实用。 查询当前目录总大小可以使用d
ASP.NET Core应用程序发布linux在shell中运行是正常的。可一但shell关闭网站也就关闭了,所以要配置守护进程, 用的是Supervisor,本文主要记录配置的过程和过程遇到的问题 安装Supervisor 1 yum install python-setuptools
设置时区(CentOS 7) 先执行命令timedatectl status|grep 'Time zone'查看当前时区,如果不是时区(Asia/Shanghai),则需要先设置为中国时区,否则时区不同会存在时差。 #已经是Asia/Shanghai,则无需设置 [root@xia
vim /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO="static" ONBOOT=yes IPADDR=192.168.8.106 NETMASK=255.255.252.0 GATEWAY=192.168.
一、安装gcc依赖 由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装 [root@localhost local]# yum install -y gcc 二、下载并解压安装包 [root@localhost local
第一步 On CentOS/RHEL 6.*: $ sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm On CentOS/RHEL 7: $
/// <summary> /// 取小写文件名后缀 /// </summary> /// <param name="name">文件名</param> /// <returns>返回小写后缀,不带“.”</ret
which nohup .bash_profile中并source加载 如果没有就安装吧 yum provides */nohup nohup npm run start & nohup ./kibana &
1.1 MySQL安装 1.1.1 下载wget命令 yum -y install wget 1.1.2 在线下载mysql安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 1.1.3 安装My
重启 reboot shutdown -r now init 6 关闭 init 0 shutdown -h now shutdown -h 20:25 #8点25关机查看内存 free CPU利用率 top 日期 date 设置时间 date 033017002015 #月日时间年 日历 cal
1、firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 :
1 下载并安装MySQL官方的 Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 使用上面的命令就直接下载了安装用的Yum Repository,大概
CentOS6.x CentOS6中转用Upstrat代替以前的init.d/rcX.d的线性启动方式。 一、相关命令 通过initctl help可以查看相关命令 [root@localhost ~]# initctl help Job commands: start Start job. sto
1、使用命令:df -lk 找到已满磁盘 2、使用命令:du --max-depth=1 -h 查找大文件,删除
ifconfig:查看网卡信息 网卡配置文件位置: /etc/sysconfig/network-scripts/文件夹 nmtui:配置网卡 netstat -tlunp:查看端口信息 端口信息存储位置: /etc/services文件 route:查看路由信息 wget:下载网路文件,例如 wg
ps -ef:查看所有进程, ps -ef |grap firewalld 查看与firewalld相关的进程 which :查看进程:which firewalld kill 进程id:杀掉进程 kill 640,强制杀:kill -9 640 man:查看帮助,例如 man ps 查看
useradd:添加用户 useradd abc,默认添加一个abc组 vipw:查看系统中用户 groupadd:添加组groupadd ccna vigr:查看系统中的组 gpasswd:将用户abc添加到ccna组 gpasswd -a abc ccna groups abc:查看用户abc属