Codis集群3.03安裝配置基礎

Codis基礎


01.codis是一個分布式的Redis解決方案,對于上層的應用來說,連接Codis Proxy和連接原生的Redis Server沒有明顯的區別。

  • codis底層會處理請求的轉發,不停機的數據遷移等工作,所有后邊的一切事情,對于前面客戶端來說是透明的,可以簡單的認為后邊連接是一個內存無限大的Redis服務。

  • codis架構圖如下:

clipboard.png

02.codis由codis-proxy,codis-redis,codis-dashboard和zookeeper組成。

  • codis-dashboard,codis的主控制節點。

  • codis-proxy,客戶端連接redis的代理工具,本身實現了redis協議,和原生的redis沒有太多區別。

  • codis-redis,實現redis實例功能。

  • zookeeper,用來存放數據路由和codis-proxy的節點元信息;codis-proxy之間通過zookeeper來同步信息。

03.實現環境:

  • zookeeper,10.1.20.1

  • zookeeper,10.1.20.2

  • zookeeper,10.1.20.3

  • codis-redis,10.1.20.4

  • codis-redis,10.1.20.5

  • codis-proxy,10.1.20.6

  • codis-proxy,10.1.20.7

  • dashboard,10.1.20.24


zookeeper安裝


對象:10.1.20.1,10.1.20.2,10.1.20.3

01.zookeeper是一個分布式的開源框架,它能很好的管理集群,而且提供協調分布式應用的基本服務。

  • 它向外部應用暴露一組通用服務——分布式同步(Distributed Synchronization)、命名服務(Naming Service)、集群維護(Group Maintenance)等,簡化分布式應用協調及其管理的難度,提供高性能的分布式服務。

  • zookeeper本身可以以standalone模式(單節點狀態)安裝運行,不過它的長處在于通過分布式zookeeper集群(一個leader,多個follower),基于一定的策略來保證zookeeper集群的穩定性和可用性,從而實現分布式應用的可靠性。

02.zookeeper集群中主要有兩個角色,分別是領導者和學習者。

  • 領導者(leader),用于負責進行投票的發起和決議,更新系統狀態。

  • 學習者(learner),包括跟隨者(follower)和觀察者(observer)。

  • 跟隨者用于接受客戶端請求并向客戶端返回結果,在選主過程中參與投票。

  • 觀察者用于接受客戶端連接,將寫請求轉發給領導者;但observer不參加投票過程,只同步leader的狀態,observer的目的是為了擴展系統并提高讀取速度。

03.zookeeper的集群數量:

  • zookeeper節點部署的越多,服務的可靠性也就越高。

  • zookeeper集群中,超過半數的節點宕機才造成整個集群宕機,所以節點應配置為奇數個。


04.安裝jdk:

  • cd /root/Downloads,進入下載目錄。

  • tar -zxvf jdk-7u60-linux-x64.tar.gz -C /usr/local/,解壓至指定目錄。

  • vim /etc/profile,修改profile文件,添加如下內容:

export JAVA_HOME=/usr/local/jdk1.7.0_60

export PATH=$JAVA_HOME/bin:$PATH

export PATH=$JAVA_HOME/jre/bin:$PATH

export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

  • source /etc/profile,載入profile文件。

  • java -version,確認出現“Java(TM) SE Runtime Environment”等信息確保jdk安裝好。

05.安裝zookeeper:

  • cd /root/Downloads,進入下載目錄。

  • wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz,下載zookeeper安裝包。

  • tar -zxvf zookeeper-3.4.8.tar.gz -C /usr/local/,解壓至指定目錄。

  • mv /usr/local/zookeeper-3.4.8 /usr/local/zookeeper,更改目錄名。

  • chown -R root:root /usr/local/zookeeper,更改目錄屬主屬組。

  • vim /etc/profile,修改profile文件,添加如下內容:

export ZOOKEEPER_HOME=/usr/local/zookeeper

export PATH=$PATH:$ZOOKEEPER_HOME/bin

  • source /etc/profile,載入profile文件。

  • cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg,修改配置文件名稱。

06.啟動zookeeper:

  • /usr/local/zookeeper/bin/zkServer.sh start,在任意一臺服務器上啟動zookeeper。

  • netstat -ntlp | grep 2181,查看2181是否啟動。

  • /usr/local/zookeeper/bin/zkServer.sh status,確認zookeeper已啟動,并且為standalone狀態。

07.配置zookeeper集群:

  • vim /usr/local/zookeeper/conf/zoo.cfg,修改如下參數:

dataLogDir=/usr/local/zookeeper/log

dataDir=/usr/local/zookeeper/data

clientPort=2181

server.1=10.1.20.1:2888:3888

server.2=10.1.20.2:2888:3888

server.3=10.1.20.3:2888:3888

  • mkdir -p /usr/local/zookeeper/{log,data},創建對應的目錄。

  • echo "1" > /usr/local/zookeeper/data/myid,在10.1.20.1服務器上執行,數字根據配置文件中,ip對應的server.#中的數字決定。

  • echo "2" > /usr/local/zookeeper/data/myid,在10.1.20.2服務器上執行。

  • echo "3" > /usr/local/zookeeper/data/myid,在10.1.20.3服務器上執行。

  • /usr/local/zookeeper/bin/zkServer.sh start,啟動每天服務器上的zookeeper。

  • /usr/local/zookeeper/bin/zkServer.sh status,分別查詢狀態,應有1臺為leader,2臺為follewer。

  • /usr/local/zookeeper/bin/zkCli.sh -server 10.1.20.2:2181,從服務器連接其他zookeeper,查看是否成功。


Codis安裝

對象:10.1.20.4,10.1.20.5,10.1.20.6,10.1.20.7,10.1.20.24

01.安裝基本依賴包:

  • yum install -y git gcc make g++ gcc-c++ automake openssl-devel zlib-*

02.安裝go語言包:

export GOROOT=/usr/local/go

export GOPATH=/usr/local/codis

export PATH=$PATH:$GOPATH/bin:$GOROOT/bin

  • source /etc/profile,刷新/etc/profile文件。

  • go version,測試go語言是否正常。

  • vim /opt/hello.go,測試go命令是否能正常使用,添加如下內容:

package main

    import "fmt"


    func main(){

        fmt.Printf("hello world\n")

        }

  • go run /opt/hello.go,測試輸出hello world。

03.安裝godep:

  • mkdir -p /usr/local/codis/src/github.com/tools,創建codis目錄。

  • cd /usr/local/codis/src/github.com/tools,進入codis工具目錄。

  • go get -u github.com/tools/godep,下載godep。

  • cd godep/,進入安裝目錄。

  • go install ./,安裝godep,檢查該程序有無安裝在/usr/local/codis/bin下。

  • which godep,測試系統是否識別。

04.安裝codis:

  • mkdir -p /usr/local/codis/src/github.com/CodisLabs,創建安裝目錄。

  • cd /root/Downloads,進入下載目錄。

  • tar -zxvf /root/Downloads/codis-3.0.3.tar.gz,解壓安裝文件。

  • cp -rf /root/Downloads/codis-3.0.3 /usr/local/codis/src/github.com/CodisLabs/codis,復制安裝目錄。

  • cd /usr/local/codis/src/github.com/CodisLabs/codis,進入安裝目錄。

  • make && make gotest,測試安裝,確定不報錯為安裝成功。

  • 安裝成功后,會在/usr/local/codis/src/github.com/CodisLabs/codis/bin目錄下產生如下文件:

1.png

Codis集群3.03安裝配置基礎

05.創建程序目錄:

  • mkdir -p /codis/{bin,conf,log,scripts,run,database},創建目錄結構。

  • cp -rp /usr/local/codis/src/github.com/CodisLabs/codis/bin/* /codis/bin/,復制因公程序至程序目錄。

  • cp /usr/local/codis/src/github.com/CodisLabs/codis/extern/redis-2.8.21/src/{redis-benchmark,redis-check-aof,redis-check-dump,redis-cli} /codis/bin/,復制redis的程序至程序目錄。

  • cp /usr/local/codis/src/github.com/CodisLabs/codis/extern/redis-2.8.21/redis.conf /codis/conf/redis6379.conf,復制redis配置文件至redis主配置。

  • cp /usr/local/codis/src/github.com/CodisLabs/codis/extern/redis-2.8.21/redis.conf /codis/conf/redis6380.conf,復制redis配置文件至redis從配置。

集群配置


01.配置并啟動codis-dashboard(10.1.20.24)。

  • /codis/bin/codis-dashboard –default-config | tee /codis/conf/dashboard.toml,生成配置文件。

  • vim /codis/conf/dashboard.toml,修改如下配置:

coordinator_addr = "10.1.20.1:2181,10.1.20.2:2181,10.1.20.3:2181"

product_name = "codis-jym"

  • coordinator_name為外部存儲的類型,為zookeeper或者etcd,不能用其他名稱;coordinator_addr為外部存儲zookeeper的集群地址。

  • product_name為codis集群名稱,可以自定義;product_auth為codis集群認證密碼,默認為空。

  • nohup /codis/bin/codis-dashboard –config=/codis/conf/dashboard.toml –log=/codis/log/dashboard.log &,啟動codis-dashboard,啟動后會產生一個18080的端口。


02.配置并啟動codis-proxy(10.1.20.6,10.1.20.7)。

  • /codis/bin/codis-proxy –default-config | tee /codis/conf/proxy.toml,產生默認配置文件。

  • vim /codis/conf/proxy.toml,修改如下配置:

product_name = "codis-jym"

jodis_addr = "10.1.20.1:2181,10.1.20.2:2181,10.1.20.3:2181"

  • nohup /codis/bin/codis-proxy –config=/codis/conf/proxy.toml –log=/codis/log/proxy.log &,啟動codis-proxy。

  • /codis/bin/codis-admin –dashboard=10.1.20.24:18080 –create-proxy -x 10.1.20.6:11080,將proxy添加進集群管理中。

  • /codis/bin/codis-admin –dashboard=10.1.20.24:18080 –create-proxy -x 10.1.20.7:11080,將proxy添加進集群管理中。

  • http://10.1.20.24:18080/topom,獲取dashboard的json文件,查看proxy的狀態,如下圖:

12.png

  • Codis集群3.03安裝配置基礎/codis/bin/codis-admin –dashboard=10.1.20.24:18080 –list-proxy,查看proxy集群。

03.配置并啟動codis-sever(10.1.20.4,10.1.20.5)。

  • vim /codis/conf/redis6379.conf,將6379配置為master服務器,修改如下配置:

pidfile /codis/run/redis6379.pid

timeout 3600

tcp-keepalive 60

logfile "/codis/log/redis6379.log"

#save 900 1

#save 300 10

#save 60 10000

dbfilename dump6379.rdb

dir /codis/database/redis6379

  • vim /codis/conf/redis6380.conf,將6380配置為master服務器,修改如下配置:

pidfile /codis/run/redis6380.pid

timeout 3600

tcp-keepalive 60

logfile "/codis/log/redis6380.log"

dbfilename dump6380.rdb

dir /codis/database/redis6380

  • /codis/bin/codis-server /codis/conf/redis6379.conf &,啟動6379實例。

  • /codis/bin/codis-server /codis/conf/redis6380.conf &,啟動6380實例。

  • /codis/bin/codis-admin –dashboard=10.1.20.24:18080  –create-group –gid=1,新建一個redisgroup,gid為1。

  • /codis/bin/codis-admin –dashboard=10.1.20.24:18080  –create-group –gid=2,新建一個redisgroup,gid為2。

10.1.20.4上

    1. /codis/bin/codis-admin –dashboard=10.1.20.24:18080 –group-add –gid=1 –addr=10.1.20.4:6379,將6379加入gid1。

    2. /codis/bin/codis-admin –dashboard=10.1.20.24:18080 –group-add –gid=2 –addr=10.1.20.4:6380,將6380加入gid2。

10.1.20.5上

    1. /codis/bin/codis-admin –dashboard=10.1.20.24:18080 –group-add –gid=2 –addr=10.1.20.5:6379,將6379加入gid1。

    2. /codis/bin/codis-admin –dashboard=10.1.20.24:18080 –group-add –gid=1 –addr=10.1.20.5:6380,將6379加入gid1。

  • 實例的放置傾向于交叉放置,每臺codis-sever上放置不同的主從實例。

  • /codis/bin/codis-admin –dashboard=10.1.20.24:18080 –list-group,查看group情況。

04.配置并啟動codis-sever(10.1.10.24,可選):

  • /codis/bin/codis-admin –dashboard-list –zookeeper=10.1.20.1:2181 | tee /codis/conf/fe.json,通過zookeeper下載fe配置文件。

  • nohup /codis/bin/codis-fe –dashboard-list=/codis/conf/fe.json –listen=10.1.20.24:8080 &,啟動codis-fe。

  • http://10.1.20.24:8080/,訪問圖形化界面。

原創文章,作者:wenjun8888,如若轉載,請注明出處:http://www.www58058.com/49320

(0)
wenjun8888wenjun8888
上一篇 2016-09-26 11:14
下一篇 2016-09-26 14:59

相關推薦

  • redis主從復制(3)— 復制超時

    1、repl-timeout前兩篇[1]關于redis主從復制的文章解釋了一些因為slave replication buffer或者replication backlog參數的錯誤配置(或者默認參數值)導致主從復制中斷的現象。redis里面的repl-timeout參數值也太小也將會導致復制不成功。top redis headaches for devop…

    Linux干貨 2016-04-05
  • linux 網絡管理

    1、ifconfig命令格式: ifconfig[interface] 查看IP ifconfig-a 查看全部網卡信息 ifconfigIFACE [up|down] 網卡開啟關閉 ifconfigIFACE IP/netmask [up] ifconfigIFACE IP netmask NETMASK 命令立即生效,不能永久保存  &nbsp…

    Linux干貨 2017-08-20
  • vim編輯器

    vim編輯器 vi:Vistual Interface,是一種文本編輯器,所謂文本編輯器就是基于字符編碼的文件,常見的編碼有ASCLL編碼,UNICODE編碼。 vim:即vi IMproved:vi的增強版,可以使用顏色或者底線等方式來顯示一些特殊信息,是模式化的編輯。 文本編輯器的種類 行編輯器:所謂行編輯器就是一行一行來編輯處理的工具,如sed 全屏編…

    Linux干貨 2016-08-15
  • rsync+inotify實現數據的實時同步更新

    ? rsync可以實現觸發式的文件同步,但是通過crontab守護進程方式進行觸發,同步的數據和實際數據會有差異,而inotify可以監控文件系統的各種變化,當文件有任何變動時,就觸發rsync同步,這樣就可以解決同步數據的實時性問題。 一、rsync的優點與不足 rsync具有安全性高、備份迅速、支持增量備份等優點,通過rsync可以解決對實時性要求不高的…

    2018-01-06
  • 9月9日,系統啟動文件恢復與內核編譯

    1、破解root口令,并為grub設置保護功能 進入grub界面,輸入a鍵,在輸入1,進入單用戶界面,進入系統后修改密碼。 2、破壞本機grub stage1,而后在救援模式下修復之 3、刪除vmlinuz和initramfs文件,無法啟動,恢復之 (1)安裝kernel內核 (2)光盤尋找內核,在復制到/boot目錄下,在修改成對應的,系統會重啟兩次 (3…

    Linux干貨 2016-09-13
  • N26第二周博客作業

    1.Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 ?  ls 查看文件與目錄 ls [選項] 文件或目錄 常用選項 -a:全部的文件,連同隱藏文件(以.開頭)一起列出來 -d:列出目錄本身,而不是列出目錄里的文件 -l:列出詳細信息,如文件的屬性與權限等數據 -h:將文件容量以易讀的方式顯示(例如:GB,KB等) -t:…

    Linux干貨 2017-01-08
欧美性久久久久