codis叢集部署實戰
阿新 • • 發佈:2018-12-25
這篇文章寫成shit了,建議不要往下看了
一、codis簡介
Codis 是一個分散式 Redis 解決方案, 對於上層的應用來說, 連線到 Codis Proxy 和連線原生的 Redis Server 沒有顯著區別 (不支援的命令列表), 上層應用可以像使用單機的 Redis 一樣使用, Codis 底層會處理請求的轉發, 不停機的資料遷移等工作, 所有後邊的一切事情, 對於前面的客戶端來說是透明的, 可以簡單的認為後邊連線的是一個記憶體無限大的 Redis 服務。
二、安裝redis
下載地址:www.redis.cn
[root@server8 ~]# tar -zxf redis-4.0.1.tar.gz
[root@server8 ~]# cd redis-4.0.1
[root@server8 redis-4.0.1]# make
[root@server8 redis-4.0.1]# make install
[root@server8 redis-4.0.1]# cd utils/
[root@server8 utils]# ./install_server.sh
[root@server8 utils]# cd /etc/redis
[root@server8 redis]# ls
6379.conf
[root@server8 utils]# vim /etc/redis/6379.conf
bind 0 .0.0.0
[root@server8 redis]# /etc/init.d/redis_6379 restart
三、下載與編譯
1.安裝 Go 執行環境
下載地址 :https://www.golangtc.com/download
根據你的作業系統選擇響應的版合適版本,我選擇的是go1.7rc5.linux-amd64.tar.gz 即1.7.5的
- 解壓
[root@server8 ~]# tar -C /usr/local -xzf go1.7rc5.linux-amd64.tar.gz
- 將 /usr/local/go/bin 目錄新增至PATH環境變數
[[email protected] ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected] ~]# export PATH=$PATH:/usr/local/go/bin
[[email protected] ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/go/bin
- 通過命令列將 /usr/local/go/bin 目錄新增至GOPATH環境變數(重啟後失效,不推薦)
[root@server8 ~]# echo $GOPATH
[root@server8 ~]# export GOPATH=/usr/local/go/bin
[root@server8 ~]# echo $GOPATH
/usr/local/go/bin
- 修改/etc/profile 新增環境變數,推薦
[root@server8 ~]# vim /etc/profile
export GOROOT=/usr/local/go
export GOPATH=/usr/local/codis
export PATH=$PATH:/usr/local/go/bin
[root@server8 ~]# source /etc/profile
- 安裝完成後可以執行下列命令進行檢測:
[root@server8 ~]# go version
go version go1.7rc5 linux/amd64
[root@server8 ~]# go env GOPATH
/usr/local/codis
[root@server8 ~]# go env GOROOT
/usr/local/go
說明Go 執行環境安裝成功
3.下載 Codis 原始碼
[root@server8 ~]# yum install -y git autoconf
[root@server8 ~]# mkdir -p $GOPATH/src/github.com/CodisLabs
[root@server8 ~]# cd $GOPATH/src/github.com/CodisLabs
[root@server8 CodisLabs]# git clone https://github.com/CodisLabs/codis.git -b release3.1
##或者
[root@server8 ~]# wget https://codeload.github.com/CodisLabs/codis/zip/release3.2
[root@server8 ~]# mkdir -p $GOPATH/src/Codis
[root@server8 ~]# unzip codis-release3.2.zip -d /usr/local/codis/src/Codis
[root@server8 ~]# cd $GOPATH/Codis/codis-release3.2
[root@server8 codis-release3.2]# ls
admin cmd deploy Dockerfile extern kubernetes MIT-LICENSE.txt README.md vendor wandoujia_license.txt
ansible config doc example Godeps Makefile pkg scripts version
[root@server8 codis-release3.2]# pwd
/usr/local/codis/src/Codis/codis-release3.2
值得注意的是: 通過這兩種方法下載的原始碼位置不一樣,根據具體情況來,這裡我是通過第一種方法下載的,所以我的編譯時進入的路徑是 $GOPATH/src/github.com/CodisLabs/codismake 如果你用的是第一種方法,那麼你需要進入的相應的路徑是 /usr/local/codis/src/Codis/codis-release3.2
4.編譯 Codis 原始碼
- 直接通過 make 進行編譯
[root@server8 ~]# cd $GOPATH/src/github.com/CodisLabs/codis
[root@server8 codis]# make
JEMALLOC_PRIVATE_NAMESPACE
: je_
install_suffix :
malloc_conf :
autogen : 1
cc-silence : 1
debug : 0
code-coverage : 0
stats : 1
prof : 0
prof-libunwind : 0
prof-libgcc : 0
prof-gcc : 0
tcache : 1
fill : 1
utrace : 0
valgrind : 0
xmalloc : 0
munmap : 0
lazy_lock : 0
tls : 1
cache-oblivious : 1
===============================================================================
go build -i -o bin/codis-dashboard ./cmd/dashboard
go build -i -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
[root@server8 codis]# cat bin/version ##檢視安裝以後的版本
version = 2017-03-08 14:07:13 +0800 @b1919d11593dfd1f47a2461837233dfc8fc78002 @3.1.5-26-gb1919d1
compile = 2017-10-19 00:38:53 +0800 by go version go1.5.4 linux/amd64
編譯成功
複製檔案,方便管理
[root@server8 codis]# mkdir -p /opt/local/codis/{bin,logs,data}/
[root@server8 codis]# cp -rf $GOPATH/src/github.com/CodisLabs/codis/bin/* /opt/local/codis/bin
[root@server8 codis]# cp -rf $GOPATH/src/github.com/CodisLabs/codis/config /opt/local/codis/
四、配置 Codis
[root@server8 codis]# cd /opt/local/codis/config/
[root@server8 config]# vim dashboard.toml
##################################################
# #
# Codis-Dashboard #
# #
##################################################
# Set Coordinator, only accept "zookeeper" & "etcd" & "filesystem".
coordinator_name = "zookeeper"
coordinator_addr = "127.0.0.1:2181"
# 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 = 2
sentinel_parallel_syncs = 1
sentinel_down_after = "30s"
sentinel_failover_timeout = "5m"
sentinel_notification_script = ""
sentinel_client_reconfig_script = ""
啟動 Dashboard
[[email protected] config]# nohup /opt/local/codis/bin/codis-dashboard --ncpu=4 --config=/opt/local/codis/config/dashboard.toml --log=/opt/local/codis/logs/dashboard.log --log-level=WARN &
五、Codis Proxy
[[email protected] config]# vim /opt/local/codis/config/proxy.toml
# Set jodis address & session timeout, only accept "zookeeper" & "etcd".
jodis_name = "zookeeper"
jodis_addr = "127.0.0.1:2181"
jodis_timeout = "20s"
jodis_compatible = false
啟動 codis-proxy
[[email protected] config]# nohup /opt/local/codis/bin/codis-proxy --ncpu=4 --config=/opt/local/codis/config/proxy.toml --log=/opt/local/codis/logs/proxy.log --log-level=WARN &
檢視日至
[[email protected] ~]# cat /opt/local/codis/logs/proxy.log.2017-10-19
2017/10/19 01:04:46 main.go:206: [WARN] [0xc82023a6c0] proxy waiting online ...
2017/10/19 01:04:47 main.go:206: [WARN] [0xc82023a6c0] proxy waiting online ...
必須新增到叢集中,才正常