在滴滴云 DC2 云服务器上搭建 Codis

前言

Codis 是什么

Codis 是 Wandoujia Infrastructure Team 开发的一个分布式 Redis 服务,用户可以看成是一个无限内存的 Redis 服务, 有动态扩/缩容的能力。

Codis 的好处

Redis 有获得动态扩容/缩容的能力,增减 Redis 实例对 client 完全透明,不需要重启服务,业务方不需要担心 Redis 内存爆掉的问题和申请太大而造成浪费,也不需要自己维护 Redis。

准备

系统硬件

滴滴云服务器 (DC2): 安全可靠,拥有极高的性价比高,为开发者的需求而设计。适合大中小型用户购买使用。

弹性公网 IP (EIP): 计费灵活,适配各类应用架构。可以满足用户各类应用场景需求。

云盘 (EBS): 采用分布式三副本设计的,为云服务器 DC2 提供基于网络连接的持久化块级数据存储服务的设备。

本文示例采用通用型 2核 CPU 4GB内存 500G的 EBS 云盘的服务器配置.

依赖软件

系统:CentOS 7.4

Golang 1.11.2

Codis 3.2.2

OpenJDK 1.8.0

ZooKeeper 3.4.13

安装过程

1.登录服务器

SSH 登录购买的滴滴云 DC2 主机

ssh dc2-user@ip

由于安装软件需要 root 权限,切换到 root 账户

sudo -i 

2.安装 Golang

下载 Golang 安装包

wget https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz

解压到 /usr/local

tar -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz

添加 Golang的环境变量

vi /etc/profile
export GOROOT=/usr/local/go
export GOPATH=/data/goSRC
PATH=$PATH:$GOROOT:$GOPATH
PATH=$PATH:$HOME/bin
export PATH=$PATH:$GOPATH/bin
export PATH=$PATH:$GOROOT/bin
export PATH
source /etc/profile

出现如下提示则安装成功

[root@10-254-97-39 dc2-user]# go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/data/goSRC"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build452989403=/tmp/go-build -gno-record-gcc-switches"

3.安装 Codis

创建 Codis目录

mkdir -p $GOPATH/src/github.com/CodisLabs

下载 Codis源码

cd $GOPATH/src/github.com/CodisLabs/ && git clone https://github.com/CodisLabs/codis.git -b release3.2

编译

cd codis && make

出现如下提示则编译成功

tls                : 1
cache-oblivious    : 1
===============================================================================
go build -i -o bin/codis-dashboard ./cmd/dashboard
go build -i -tags "cgo_jemalloc" -o bin/codis-proxy ./cmd/proxy
go build -i -o bin/codis-admin ./cmd/admin
go build -i -o bin/codis-ha ./cmd/ha
go build -i -o bin/codis-fe ./cmd/fe

查看编译后的文件

ls -l bin/
总用量 129960
drwxr-xr-x 4 root root      117 11月 23 21:20 assets
-rwxr-xr-x 1 root root 23173200 11月 23 21:20 codis-admin
-rwxr-xr-x 1 root root 24469328 11月 23 21:20 codis-dashboard
-rwxr-xr-x 1 root root 22183904 11月 23 21:20 codis-fe
-rwxr-xr-x 1 root root 20910888 11月 23 21:20 codis-ha
-rwxr-xr-x 1 root root 26570112 11月 23 21:20 codis-proxy
-rwxr-xr-x 1 root root  5366512 11月 23 21:19 codis-server
-rwxr-xr-x 1 root root  2432712 11月 23 21:19 redis-benchmark
-rwxr-xr-x 1 root root  2586776 11月 23 21:19 redis-cli
-rwxr-xr-x 1 root root  5366512 11月 23 21:19 redis-sentinel
-rw-r--r-- 1 root root      168 11月 23 21:20 version
cat bin/version
version = 2018-11-04 16:22:35 +0800 @de1ad026e329561c22e2a3035fbfe89dc7fef764 @3.2.2-12-gde1ad02
compile = 2018-11-23 21:19:59 +0800 by go version go1.11.2 linux/amd64

编写启动脚本

vi load.sh
#!/bin/bash

start() {
    sh admin/codis-dashboard-admin.sh start &
    sh admin/codis-proxy-admin.sh start &
    sh admin/codis-server-admin.sh start &
    sh admin/codis-fe-admin.sh start &
}
stop() {
    sh admin/codis-dashboard-admin.sh stop &
    sh admin/codis-proxy-admin.sh stop &
    sh admin/codis-server-admin.sh stop &
    sh admin/codis-fe-admin.sh stop &
}
restart() {
    stop
    sleep 5
    start
}
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        ;;
esac

启动服务

sh load.sh start

4.配置 Codis

通过浏览器打开 ip:9090 即可查看和操作 Codis。(如果服务器启动正常,但是 9090 端口无法访问,需查看 DC2 对应的安全组规则。如果 9090 端口不在开放的列表中,需要添加对应的开放规则)

选择左侧的 codis-demo 集群
在这里插入图片描述

创建 Group 1 并向 Group 1 添加 Server
在这里插入图片描述

初始化 Slot:输入并点击 Rebalance All Slots 按钮,等待初始化完成。
在这里插入图片描述

这样一个简单的 Codis 服务就搭建好了。通过 Redis-cli 可直连 Proxy 地址查看数据

5.配置集群状态外部储存为 ZooKeeper

安装 ZooKeeper( 由于 ZooKeeper 非本文重点,如需 ZooKeeper 集群搭建请参考本博客另一篇文章:《在滴滴云DC2云服务器上搭建 ZooKeeper 集群实战(一)》

安装 Java

cd /data/
yum install java
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
tar -zxvf zookeeper-3.4.13.tar.gz
cd zookeeper-3.4.13/conf
cp zoo_sample.cfg zoo.cfg

启动 ZooKeeper

cd /data/zookeeper-3.4.13/bin/
sh zkServer.sh start

如下提示即为启动成功

sh zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /data/zookeeper-3.4.13/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

修改 Codis的配置为 ZooKeeper。对应下文中的 jodis_name、jodis_addr。

cd $GOPATH/src/github.com/CodisLabs/codis/
vi config/proxy.toml
# Set Codis Product Name/Auth.

# 集群名称 上文我们操作的集群 可修改为其他名称,注意当使用外部状态储存时会影响对应的path
product_name = "codis-demo"
product_auth = ""

# Set auth for client session
#   1. product_auth is used for auth validation among codis-dashboard,
#      codis-proxy and codis-server.
#   2. session_auth is different from product_auth, it requires clients
#      to issue AUTH <PASSWORD> before processing any other commands.
session_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"

# Set jodis address & session timeout
#   1. jodis_name is short for jodis_coordinator_name, only accept "zookeeper" & "etcd".
#   2. jodis_addr is short for jodis_coordinator_addr
#   3. jodis_auth is short for jodis_coordinator_auth, for zookeeper/etcd, "user:password" is accepted.
#   4. proxy will be registered as node:
#        if jodis_compatible = true (not suggested):
#          /zk/codis/db_{PRODUCT_NAME}/proxy-{HASHID} (compatible with Codis2.0)
#        or else
#          /jodis/{PRODUCT_NAME}/proxy-{HASHID}


#修改外部储存为zookeeper。
jodis_name = "zookeeper"
jodis_addr = "127.0.0.1:2181"
jodis_auth = ""
jodis_timeout = "20s"

#为了兼容2.0的链接方式开启此开关
jodis_compatible = true

重启服务,即可通过 Codis Client 连接 ZooKeeper 来进行 Codis 操作。

参考文献:
codis官方文档:https://github.com/CodisLabs/codis/blob/release3.2/doc/tutorial_zh.md

猜你喜欢

转载自blog.csdn.net/java060515/article/details/84564355
DC2
今日推荐