天天看點

CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定

CODIS叢集搭建

  • 1.6個主從的搭建
  • 2. 安裝go語言環境
  • 3. 設定codis
    • 3.1 安裝codis
    • 3.2 編譯源碼
  • 4. 啟動腳本
    • 4.1 codis-proxy 配置
  • 5. 啟動
    • 5.1 啟動順序
    • 5.2 啟動流程
  • 6.配置叢集
  • 7. 通過web添加叢集并進行控制
  • 8. redis-sentinel的設定

1.6個主從的搭建

可以直接使用redis的做好的叢集,3個叢集,一主一從。

2. 安裝go語言環境

== 下載下傳go語言安裝包==

wget -c https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz
wget -c https://storage.googleapis.com/golang/go1.10.1.linux-amd64.tar.gz


[[email protected] ~]# ls
codis-release3.2.zip        jdk-8u121-linux-x64.rpm
go1.8.3.linux-amd64.tar.gz  zookeeper-3.4.9.tar.gz
[[email protected] ~]# tar zxf go1.8.3.linux-amd64.tar.gz -C /usr/local/    ##解壓到指定目錄
[[email protected] ~]# cd /usr/local/go/bin/
[[email protected] bin]# pwd
/usr/local/go/bin
[[email protected] bin]# vim ~/.bash_profile   ##添加環境變量
[[email protected] bin]# cat ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/usr/local/go/bin   
export PATH

[[email protected] bin]# source ~/.bash_profile
           

添加環境變量

CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定

3. 設定codis

3.1 安裝codis

[[email protected] ~]# ll codis-release3.2.zip 
-rwxr-xr-x 1 root root 12453663 Jan 16 08:48 codis-release3.2.zip
[[email protected] ~]# ll codis-release3.2 -d
drwxr-xr-x 14 root root 322 Jun 22  2017 codis-release3.2
[[email protected] ~]# mkdir -p /usr/local/go/src/github.com/CodisLabs/
[[email protected] ~]# mv codis-release3.2 /usr/local/go/src/github.com/CodisLabs/codis
[[email protected] ~]# cd /usr/local/go/src/github.com/CodisLabs/codis/
[[email protected] codis]# ls
admin    deploy      extern           pkg        version
ansible  doc         Godeps           README.md  wandoujia_license.txt
cmd      Dockerfile  Makefile         scripts
config   example     MIT-LICENSE.txt  vendor

           

3.2 編譯源碼

安裝前輩已經測試好的需要安裝的依賴包

[[email protected] codis]# yum install gcc git autoconf -y
[[email protected] codis]# make
           
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定

添加環境變量

CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定

4. 啟動腳本

[[email protected] admin]# pwd
/usr/local/go/src/github.com/CodisLabs/codis/admin
[[email protected] admin]# ls
codis-dashboard-admin.sh  codis-proxy-admin.sh
codis-fe-admin.sh         codis-server-admin.sh
           

4.1 codis-proxy 配置

安裝JDK

[[email protected] ~]# yum install -y jdk-8u121-linux-x64.rpm
[[email protected] ~]# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
[[email protected] ~]# javac -version
javac 1.8.0_121
           
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定

安裝zookeeper并修改配置檔案

可以下載下傳3.5.9的,這個網址隻有3.5.9和3.6.2的,我下面實驗使用的是3.4.9的。

[[email protected] ~]# wget https://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9.tar.gz
[[email protected] ~] tar -zxf apache-zookeeper-3.5.9.tar.gz -C /usr/local/
[[email protected] ~]# cp /usr/local/zookeeper-3.4.9/conf/zoo_sample.cfg /usr/local/zookeeper-3.4.9/conf/zoo.cfg
[[email protected] ~]# vim /usr/local/zookeeper-3.4.9/conf/zoo.cfg  ^C
[[email protected] ~]# grep -v ^# /usr/local/zookeeper-3.4.9/conf/zoo.cfg  | uniq
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
autopurge.snapRetainCount=500
autopurge.purgeInterval=24
clientPort=2181
[[email protected] ~]# vim ~/.bash_profile
[[email protected] ~]# source ~/.bash_profile
[[email protected] ~]# mkdir -p /data/zookeeper/data
[[email protected] ~]# echo "1" > /data/zookeeper/data/myid
           
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定
  • 設定myid:

    設定myid在我們配置的dataDir指定的目錄下面,建立一個myid檔案,裡面内容為一個數字,用來辨別目前主機,conf/zoo.cfg檔案配置的srver.X中的X為什麼數字,則myid檔案就輸入這個數字,我隻有一台zk,是以配置檔案裡可以不配置server.X,但還是要配置myid的,echo一個數字1進去即可。如果有多台zk,則分别在zk伺服器上echo對應的數字進對應的myid檔案

啟動zookeeper

在哪個目錄下啟動,就在哪個目錄下産生一個啟動的日志zookeeper.out,檢視這個日志可以檢視是否正常啟動了。由于單個zookeeper,是以這裡訓示Mode: standalone,如果有多個zk節點,就隻有一個Mode: leader的狀态,别的都是Mode: follower狀态。

[[email protected] ~]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.9/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[[email protected] ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: standalone

           
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定

配置codis和zookeepker關聯

zk=localhost:2181  //zookeeper的位址, 如果是zookeeper叢集,可以這麼寫: zk=hostname1:2181,hostname2:2181,hostname3:2181,hostname4:2181,hostname5:2181,如果是etcd,則寫成http://hostname1:port,http://hostname2:port,http://hostname3:port
product=test     //産品名稱, 這個codis叢集的名字, 可以認為是命名空間, 不同命名空間的codis沒有交集
proxy_id=proxy_1  //proxy會讀取, 用于标記proxy的名字, 針對多個proxy的情況, 可以使用不同的config.ini, 隻需要更改 proxy_id 即可
net_timeout=5     //檢測狀态時間間隔
dashboard_addr=localhost:18087  //dashboard 服務的位址,CLI 的所有指令都依賴于 dashboard 的 RESTful API,是以必須啟動
coordinator=zookeeper   //如果用etcd,則将zookeeper替換為etcd
           
[[email protected] codis]# vim config.ini
[[email protected] codis]# cat config.ini 
zk=localhost:2181
product=test
proxy_id=proxy_1
net_timeout=5 
dashboard_addr=localhost:18087
coordinator=zookeeper
[[email protected] codis]# pwd
/usr/local/go/src/github.com/CodisLabs/codis
           

5. 啟動

5.1 啟動順序

- 	1. start zookeeper //啟動zookeeper服務
	2. change config items in config.ini //修改codis配置檔案
	3. ./start_dashboard.sh //啟動 dashboard
	4. ./start_redis.sh //啟動redis執行個體
	5. ./add_group.sh //添加redis組,一個redis組隻能有一個master
	6. ./initslot.sh //初始化槽
	7. ./start_proxy.sh //啟動proxy
	8. ./set_proxy_online.sh //上線proxy項目
	9. open browser to http://localhost:18087/admin //通路web
           

5.2 啟動流程

啟動zookeeper

CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定

啟動Codis Dashboard

[[email protected] admin]# pwd
/usr/local/go/src/github.com/CodisLabs/codis/admin
[[email protected] admin]# ls
codis-dashboard-admin.sh  codis-proxy-admin.sh
codis-fe-admin.sh         codis-server-admin.sh
[[email protected] admin]# ./codis-dashboard-admin.sh start
/usr/local/go/src/github.com/CodisLabs/codis/admin/../config/dashboard.toml
starting codis-dashboard ... 
[[email protected] admin]# cat ../log/codis-dashboard.log.2021-01-16
           

啟 動CodisDashboard組 件 , 查 看 日 志 文 件codis-dashboard.log.2017-10-18 是否啟動成功。

CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定

啟動Codis Proxy

[[email protected] admin]# ./codis-proxy-admin.sh start
/usr/local/go/src/github.com/CodisLabs/codis/admin/../config/proxy.toml
starting codis-proxy ... 
[[email protected] admin]# tail -n 5 ../log/codis-proxy.log.2021-01-16 
2021/01/16 20:39:02 proxy_api.go:44: [WARN] [0xc420092fd0] API call /api/proxy/start/f1d4258d376bad28087a3b07c705cc15 from 172.25.13.5:35692 []
2021/01/16 20:39:02 proxy_api.go:44: [WARN] [0xc420092fd0] API call /api/proxy/sentinels/f1d4258d376bad28087a3b07c705cc15 from 172.25.13.5:35692 []
2021/01/16 20:39:02 proxy.go:293: [WARN] [0xc420092fd0] set sentinels = []
2021/01/16 20:39:02 main.go:323: [WARN] rpc online proxy seems OK
2021/01/16 20:39:03 main.go:213: [WARN] [0xc420092fd0] proxy is working ...
[[email protected] admin]# 
           

啟動CodisProxy元件,檢視日志codis-proxy.log.2017-10-18 是否啟動成功。

CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定

== 啟動Codis Server和 Codis Fe元件==

[[email protected] admin]# ./codis-server-admin.sh start
/usr/local/go/src/github.com/CodisLabs/codis/admin/../config/redis.conf
starting codis-server ... 
[[email protected] admin]# tail -n 5 /tmp/redis_6379.log 

           

啟動 Codis Server 元件,檢視日志/tmp/redis_6379.log 檔案是否啟動成功。

CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定

啟動 Codis Fe 元件,檢視日志 codis-fe.log.xxxx.xx.xx檔案是否啟動成功。

[[email protected] admin]# ./codis-fe-admin.sh start

starting codis-fe ... 
[[email protected] admin]# tail ../log/codis-fe.log.2021-01-16 

           
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定

6.配置叢集

[[email protected] codis]# cd config/
[[email protected] config]# ls
dashboard.toml  proxy.toml  redis.conf  sentinel.conf
[[email protected] config]# vim redis.conf 
[[email protected] config]# cp redis.conf redis1.conf
[[email protected] config]# cp redis.conf redis2.conf
[[email protected] config]# cp redis.conf redis3.conf
[[email protected] config]# vim redis1.conf ##redis1.2.3配置檔案參照redis寫,端口修改,保護模式關閉,對于有端口的檔案也修改掉端口即可
[[email protected] config]# grep -v ^# redis.conf  | uniq

bind 127.0.0.1

protected-mode no

port 6379

tcp-backlog 511

timeout 0

tcp-keepalive 300

daemonize yes

supervised no

pidfile /tmp/redis_6379.pid

loglevel notice

logfile "/tmp/redis_6379.log"

databases 16

save 900 1
save 300 10
save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir ./

slave-serve-stale-data yes

slave-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

slave-priority 100

appendonly no

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

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

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512
hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128
zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

activerehashing yes

client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

aof-rewrite-incremental-fsync yes

           

圈着的地方需要修改端口和保護模式。使用端口7000、7001、7002

CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定

7. 通過web添加叢集并進行控制

CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定

檢視資訊,有倆個slave,分别是端口7001和7003

CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定
[[email protected] config]# ps ax | grep :7000
 2878 ?        Ssl    0:00 codis-server 127.0.0.1:7000
 3533 pts/0    S+     0:00 grep --color=auto :7000
[[email protected] config]# kill -9 2878
[[email protected] config]# redis-cli -p 7001 ##master挂掉,slave還可以通路資料
127.0.0.1:7001> get name
"westos"
127.0.0.1:7001> 
           
CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定

但是沒有進行主備切換!!!

手動進行主備切換

CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定

8. redis-sentinel的設定

redis-sentinel是要配置主從架構才能生效,但是在codis叢集中并不一樣,因為他的配置由zookeeper來維護,是以,這裡codis使用 的redis-sentinel隻需要配置一些基本配置就可以了。

sentinel的一些基本配置

CODIS叢集的簡單搭建1.6個主從的搭建2. 安裝go語言環境3. 設定codis4. 啟動腳本5. 啟動6.配置叢集7. 通過web添加叢集并進行控制8. redis-sentinel的設定

繼續閱讀