Codis3之Docker部署實戰

1. 環境搭建

1.1 Go環境搭建

1.1.1 下載

下載地址:

http://golangtc.com/download

1.1.2 解壓

tar -zxvf go1.10.3.linux-amd64.tar.gz -C /usr/local

1.1.3 配置環境變量

vim  /etc/profile

export GOROOT=/usr/local/go # 安裝路徑 
export GOPATH=$HOME/godir # 工作路徑 
export PATH=$PATH:$GOPATH/bin:$GOROOT/bin # 命令搜索路徑

source /etc/profile

1.1.4 驗證

go version

在這裏插入圖片描述

1.2 Git環境搭建

1.2.1 下載

wget https://github.com/git/git/archive/v2.14.1.zip

Ubuntu:
可直接sudo apt-get install git

1.2.2 安裝依賴

Centos:

yum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker

Ubuntu:

apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev

1.2.3 解壓

unzip v2.14.1.zip

1.2.4 編譯

先進入git-2.14.1文件夾, 編譯,安裝

cd git-2.14.1 
make prefix=/usr/local all 
make prefix=/usr/local install

1.2.5 驗證

Centos:

git –version

Ubuntu:

git --version

在這裏插入圖片描述

1.3 ZK環境搭建

1.3.1 上傳

rz zookeeper-3.4.8.tar.gz

1.3.2 解壓

tar -zxvf zookeeper-3.4.8.tar.gz -C /usr/

1.3.3 改名

cd /usr/zookeeper-3.4.8/conf 
mv zoo_sample.cfg zoo.cfg

1.3.4 修改配置

在這裏插入圖片描述
注:提前創建好目錄/usr/zk/data,/usr/zk/log

vim zoo.cfg 

tickTime=2000 
initLimit=10 
syncLimit=5 
dataDir=/usr/zk/data 
dataLogDir=/usr/zk/log 
clientPort=2181 
server.1=item01:2287:3387 
server.2=item02:2287:3387 
server.3=item03:2287:3387

說明:server.A=B:C:D

A 是一個數字,表示這個是第幾號服務器;
B 是這個服務器的 ip 地址;
C 表示的是這個服務器與集羣中的 Leader 服務器交換信息的端口;
D 表示的是萬一集羣中的 Leader 服務器掛了,需要一個端口來重新進行選舉,選出一個新的 Leader,而這個端口就是用來執行選舉時服務器相互通信的端口。

2. Codis集羣搭建

2.1 下載Codis源碼

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

2.2 編譯 Codis 源代碼

cd $GOPATH/src/github.com/CodisLabs/codis 

Centos:

yum install autoconf automake libtool -y // 這行非常重要,官網沒有給出這個,不然安裝的時候會報錯 

Ubuntu:

apt-get install autoconf

執行 make 得到:

在這裏插入圖片描述

2.3 在Dockerfile所在目錄下構建image

docker build -t codis-image .

注:末尾一個空格 + 一個點;網絡不好會比較久,耐心等一下,喝杯茶
構建完成後如圖:
在這裏插入圖片描述

2.4 修改源碼config下的配置文件

2.4.1 dashboard.toml

需要修改coordinator_addr爲宿主機的zookeeper的ip與端口
需要修改produce_name
在這裏插入圖片描述

2.4.2 proxy.toml

需要修改product_name,與dashboard.toml中的一致

在這裏插入圖片描述

2.4.3 修改啓動腳本

官方啓動腳本在源碼script文件夾下,如圖:

在這裏插入圖片描述

2.4.3.1 修改hostip

在這裏插入圖片描述

官方的例子中通過下面的代碼獲取宿主機的ip地址:

hostip=`ifconfig eth0 | grep "inet " | awk -F " " '{print $2}'` 

但是有的宿主機沒有eth0網卡,可以是別的名字,所以需要先通過ifconfig看看本機的網卡名稱,然後手動執行上面的命令,看能不能正確返回ip地址。
如果還有問題,建議最簡單的方式直接改爲hostip=‘宿主機ip’

2.4.3.2 增加–privilieged選項(可選)

如果默認是root用戶,需要修改docker run 命令,增加--privilieged選項,不然容器無法使用共享卷中的配置文件,會報”權限錯誤“

2.4.3.3 聲明slave 的ip與端口

redis進程都部署在宿主機中時可以實現failover,但是當將各個實例部署到docker中時,發現啓動之後sentinel的conf文件中識別到的slave地址並非宿主機地址,而是容器虛擬ip地址,導致無法正常通信.
其實就是docker使用了地址轉換,也就是docker容器內的地址+端口映射爲宿主機地址+端口
會導致sentinel的自動發現機制失效,無法與slave通信。
可通過設定--slave-announce-ip--slave-announce-port來指定slave的ip和端口來解決這問題

2.4.3.4 修改啓動腳本

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

2.5 啓動組件

2.5.1 啓動dashboard

./docker.sh dashboard

2.5.2 啓動proxy

./docker.sh proxy

2.5.3 啓動codis-server

./docker.sh server1
./docker.sh server2
./docker.sh server3
./docker.sh server4

2.5.4 啓動fe

./docker.sh fe

2.5.5 停止組件(可選)

./docker.sh cleanup

2.5.6 查看是否已啓動

在這裏插入圖片描述

2.6 調整codis-server參數

2.6.1 創建Shell腳本

在源碼的bin目錄下創建腳本

touch change_codis_server.sh

2.6.2 編輯Shell腳本

在這裏插入圖片描述

2.6.3 執行腳本

./change_codis_server.sh 192.168.92.129 26379

2.7 redis-sentinel

2.7.1 拷貝程序

cp -rf $GOPATH/src/github.com/CodisLabs/codis/extern/redis-3.2.11/src/redis-sentinel /usr/local/codis/bin/

2.7.2 拷貝配置

cp -rf $GOPATH/src/github.com/CodisLabs/codis/extern/redis-3.2.11/sentinel.conf /usr/local/codis/conf/

2.7.3 修改配置

以下爲需修改的配置,其他配置走默認

bind 0.0.0.0
protected-mode no
port 26379
dir /usr/local/codis/data
logfile "/usr/local/codis/log/sentinel_26379.log"

2.7.4 啓動程序

cd /usr/local/codis/bin/ 
nohup ./redis-sentinel ../conf/sentinel.conf &

2.7.5 查看

netstat –ntlp

在這裏插入圖片描述

3. 組件整合

3.1 打開監控界面

打開瀏覽器,輸入http://192.168.92.137:18090便可看到codis集羣的監控界面。如下圖所示:

在這裏插入圖片描述

3.2 加入codis-proxy

在這裏插入圖片描述

3.3 加入codis-server

在這裏插入圖片描述

3.4 分配slot到group

在這裏插入圖片描述

3.5 sentinels

在這裏插入圖片描述

其他兩臺按照上述流程部署,添加至集羣即可
至此,codis集羣部署完成

發佈了87 篇原創文章 · 獲贊 70 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章